Привязка порта UDP. Как долго сохраняется привязка в среде NAT? - PullRequest
0 голосов
/ 27 сентября 2019

Поскольку UDP не основан на соединении, порт, к которому привязан сокет UDP, остается ограниченным до времени жизни потока или процесса, связывающего сокет с конкретным портом?

Также существуетявляется проблемой связывания NAT, которая отделена от вышеупомянутой проблемыЯ предполагаю, что период, в течение которого сохраняется привязка NAT, основан на отдельных реализациях NAT.Однако, как правило, у NAT есть конкретное (хотя и не стандартизированное время), что привязки NAT должны оставаться.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2019

Сокет будет оставаться связанным с портом, пока он открыт.Когда сокет закрыт (что происходит автоматически при выходе из процесса, но может произойти раньше, если процесс выполняет явное закрытие), порт освобождается как часть процесса закрытия.

Как и в случае любого дескриптора файла, еслион распределяется между несколькими процессами (с помощью fork или любого другого), он фактически закрывается, только когда все процессы закрывают его - если хотя бы один процесс все еще имеет его открытым, он остается открытым.

1 голос
/ 27 сентября 2019

Варьируется между NAT.

Пока трафик идет в обоих направлениях, порт должен оставаться открытым.В противном случае при отсутствии трафика NAT может освободить сопоставление портов через минуту.

В одном приложении, над которым я работал, клиент и сервер периодически проверяют связь между собой каждые 45 секунд, чтобы сохранитьотображение порта открыто.

В зависимости от конструкции вашего приложения, будьте готовы иметь при необходимости логику переподключения, когда порт отключится.

...