У меня есть странная проблема. У меня есть успешно работающее приложение C++ (boost asio) P2P, которое работает на большинстве NAT. Проблема заключается в том, что, когда я даю начальный номер начального порта, как 1000, он проверяет, является ли 1000 свободным другим приращением на единицу, и выбирает порт и начинает квитирование. Но когда у меня есть 10000, 20000 или любой другой огромный номер порта, дырокол не работает на ограниченном конусе NAT.Выбор номера порта для пробивки отверстий UDP
Как это возможно? Я почти уверен, что это не имеет никакого отношения к коду. и в последнее время он не работает на одном из кофейных NAT одного из моих друзей, но он работал во многих других NAT с полным конусом. Что может быть причиной? Есть ли что-то, что мне не хватает в том, как ведет себя NAT?
[RFC 5389] (http://tools.ietf.org/html/rfc5389) предупреждает об использовании STUN в качестве * полного решения обхода NAT. У него нет полных ссылок на почему, но каковы бы ни были причины, возможно, это относится к вам. Особенно см. Главу 2. –
На самом деле проблема в том, что STUN (или TURN) не используются для начала. @Navin - как ваши конечные точки обнаруживают свои сопоставления портов? Если вы не используете что-либо похожее на STUN и TURN, как вы получаете сопоставление ip/port для совместного использования с конечной точкой при создании P2P? – selbie
@artlessnoise Я не пользуюсь службой STUN, я использую свой собственный сервер, чтобы получить конечную точку – Navin