История изменений
Исправление firkax, (текущая версия) :
Я ни разу не интересовался смыслом этого «термина», но могу предположить, что речь идёт о приёме входящих udp-подключений за натом. Если так, то скорее всего способ такой:
1) программа открывает udp-сокет (на своём сером айпи), шлёт с него пакет куда-то в интернет на известный сервер
2) все наты (их может быть больше одного), за которыми спрятана программа, при прохождении через них исходящего udp-пакета, запоминают какой в какой порт они снатили, чтобы передать ответный udp-пакет по той же цепочке в обратную сторону
3) сервер отвечает программе, присылает ей белый айпи:порт, с которого ему пришёл пакет
4) программа теперь знает, под каким айпи:портом виден её серый сокет в интернете, этот айпи:порт она сообщает ещё кому-то (пока что - опять через третий сервер, который есть в инете), чтобы тот мог к нему подключиться
5) пока через этот канал идёт регулярный обмен трафиком, наты его не забудут и всё будет работать, а после паузы придётся проводить операцию заново
На практике я это не проверял, но других способов придумать не могу.
Способ может не сработать, если наты запоминают не только пару серый-белый порт, но и адрес удалённого сервера, кому слался пакет (тогда никто другой туда ничего прислать не сможет).
Исправление firkax, :
Я ни разу не интересовался смыслом этого «термина», но могу предположить, что речь идёт о приёме входящих udp-подключений за натом. Если так, то скорее всего способ такой:
1) программа открывает udp-сокет (на своём сером айпи), шлёт с него пакет куда-то в интернет на известный сервер
2) все наты (их может быть больше одного), за которыми спрятана программа, при прохождении через них исходящего udp-пакета, запоминают какой в какой порт они снатили, чтобы передать ответный udp-пакет по той же цепочке в обратную сторону
3) сервер отвечает программе, присылает ей белый айпи:порт, с которого ему пришёл пакет
4) программа теперь знает, под каким айпи:портом виден её серый сокет в интернете, этот айпи:порт она сообщает ещё кому-то (пока что - опять через третий сервер, который есть в инете), чтобы тот мог к нему подключиться
5) пока через этот канал идёт регулярный обмен трафиком, наты его не забудут и всё будет работать, а после паузы придётся проводить операцию заново
На практике я это не проверял, но других способов придумать не могу.
Исходная версия firkax, :
Я ни разу не интересовался смыслом этого «термина», но могу предположить, что речь идёт о приёме входящих udp-подключений за натом. Если так, то скорее всего способ такой:
1) программа открывает udp-сокет (на своём сером айпи), шлёт с него пакет куда-то в интернет на известный сервер
2) все наты (их может быть больше одного), за которыми спрятана программа, при прохождении через них исходящего udp-пакета, запоминают какой в какой порт они снатили, чтобы передать ответный udp-пакет по той же цепочке в обратную сторону
3) сервер отвечает программе, присылает ей белый айпи:порт, с которого ему пришёл пакет
4) программа теперь знает, под каким айпи:портом виден её серый сокет в интернете, этот айпи:порт она сообщает ещё кому-то (пока что - опять через третий сервер, который есть в инете), чтобы тот мог к нему подключиться
5) пока через этот канал идёт регулярный обмен трафиком, наты его не забудут и всё будет работать, а после паузы придётся проводить операцию заново