2016-04-27 4 views
1

Работая немного с WebRTC, я узнал, что зверь является NAT и STUN, и я был на моем пути, чтобы проверить свое понимание того, как все это работает.Получить общедоступный IP-адрес и порт

Вот link, где вы можете получить удаленный адрес и порт вместе с вашим местным.

Например: мой локальный IP: порт

192.168.1.2:4500 

мой интернет-провайдер будет перевести его на

209.200.1.2:14500 

и будет хранить таблицу перевода как

|209.200.1.2:14500|192.168.1.2:4500| 

и это эффективно означает, что когда соединение доходит до 209.200.1.2:14500, оно является forwar до 192.168.1.2:4500.

Предполагая, что у меня есть правильное понимание NAT, я ожидаю, что когда я настроюсь на прослушивание входящего соединения на порте 4500 (локально), кто-то сможет подключиться к нему через 209.200.1.2:14500, но это не (связь не может быть установлена) ПОЧЕМУ?

Thx много для вашей помощи.

ответ

3

NAT предназначен только для работы с исходящими соединениями. Маршрутизатор NAT автоматически не узнает о машине на частном IP, которая начинает прослушивать порт, и обычно нет гарантированного соответствия между открытым IP-портом NAT-маршрутизатора и частным IP-портом. Кроме того, NAT-маршрутизатор не может правильно передавать входящие пакеты TCP/IP-соединений (SYN) на частные IP-адреса, поскольку совершенно непознаваемо, для какого частного IP-адреса они предназначены.

Однако существует множество методов, называемых hole-punching, которые работают практически. Обычно они требуют стороннего сервера с адресом, отличным от NAT, для посредничества между двумя конечными точками для настройки соединения, тогда основная часть обмена tcp/ip происходит между исходными двумя узлами.