LINUX.ORG.RU

История изменений

Исправление 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) пока через этот канал идёт регулярный обмен трафиком, наты его не забудут и всё будет работать, а после паузы придётся проводить операцию заново