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