Почему UDP работает, а TCP не работает при использовании публичного IP? - PullRequest
0 голосов
/ 17 мая 2019

Я изучаю NAT Traversal и экспериментирую с ним. Два хоста находятся в одной подсети в моей школе. И TCP и UDP связь работает, когда я использую частный адрес. Однако при использовании публичного адреса работает только UDP.

Я использую STUN для получения публичного адреса, который использует UDP. Тип NAT - полный конус, поэтому он должен работать при использовании публичного адреса. Я пишу четыре небольших фрагмента кода Python, используя модуль сокета. Это udpsender.py, udpreceiver.py, tcpsender.py и tcpreceiver.py. Таким образом, при использовании UDP, независимо от того, позволяю ли я отправителю отправлять сообщение на частный адрес получателя или публичный адрес, получатель всегда получает. Но при использовании TCP получатель может получать только тогда, когда отправитель отправляет на частный адрес.

Полагаю, с моим кодом все в порядке. Вероятно, это связано с различием между UDP и TCP и настройкой NAT. Итак, как я могу заставить TCP работать при использовании публичного адреса?

...