Обычно NAT будет сохранять открытую конечную точку локальной конечной точки одинаковой для всех пакетов, которые из нее поступают, что позволяет легко пробивать дыры UDP. Однако некоторые NAT будут отображать локальную конечную точку на другую общедоступную точку для каждого отдельного хоста, на который отправляется пакет, что делает невозможным пробивание UDP-дырок.
Единственный способ сделать традиционное перфорирование UDP - это угадать удаленную конечную точку. Однако, поскольку существует более 65 000 портов, этот метод не очень надежен. Итак, я читал, что такие приложения, как Skype, которые, как известно, способны обмениваться данными практически через любой тип NAT, используют для этого ретранслятор. Вот мои вопросы:
Реле - это просто сокет, который передает входящие данные из одного сокета в другой, верно? Существуют ли другие способы сделать дырокол UDP по непослушным NAT, не прибегая к диким догадкам или не используя реле (что больше не является «дыроколом»)?