Я читал про обход NAT, требующий использования внешнего STUN-сервера. Есть несколько публичных STUN серверы но я не знаю, как использовать их, чтобы узнать мой общедоступный IP-адрес, который может использовать другой клиент для инициации соединения. Поскольку я новичок в этом, я не могу найти правильные документы для этого, используя сокеты BSD. Если кто-то может объяснить, как я могу найти свой общедоступный IP-адрес, использующий сокеты BSD в качестве базы, было бы хорошо. Также, если вы можете предоставить хорошие ссылки для этого, это также будет оценено.
Это в ответе на привязку STUN. RFC 5389, спецификация STUN, объясняет, как на странице 7:
Сервер STUN копирует этот исходный транспортный адрес в атрибут XOR-MAPPED-ADDRESS в ответе привязки STUN и отправляет ответ привязки обратно клиенту STUN. Когда этот пакет проходит обратно через NAT, NAT изменит транспортный адрес назначения в IP-заголовке, но транспортный адрес в атрибуте XOR-MAPPED-ADDRESS в теле ответа STUN останется нетронутым. Таким образом, клиент может узнать свой рефлексивный транспортный адрес, выделенный самым внешним NAT по отношению к серверу STUN.