В некоторых системах обмена сообщениями два клиента обмена сообщениями отправляют / получают пакеты непосредственно друг от друга в чате или голосовом вызове. Я думаю, что основной механизм (например, TCP): эти клиентские программы открывают сокет прослушивания TCP и сообщают серверу обмена сообщениями / координирующей роли свою пару IP / PORT. Затем клиентские программы извлекают IP / PORT другой стороны с сервера обмена сообщениями / координации. И один из них (скажем, A) затем инициирует TCP с другим (скажем, B) с найденной парой IP / PORT B.
Когда пассивный клиент B(который ожидает пакет TCP SYN) не находится за NAT или прокси, это нормально. Но если B находится за NAT или прокси, то пара IP/PORT на самом деле является общедоступным сетевым интерфейсом NAT или прокси.
Итак, мой вопрос: когда NAT или прокси получает TCP SYN, какова его реакция? Как они передают TCP SYN соответствующему хосту / процессу за ним?