Приносим извинения, если этот вопрос задавался раньше, но я не думаю, что кто-то из обнаруженных мной задает то же самое.
Я разрабатываю простой протокол P2P, в соответствии с которым известный сервер предоставляет клиентам адреса друг друга, а затем они обмениваются данными. Я предполагаю, что есть некоторое сходство с BitTorrent, Skype и другими приложениями P2P.
У меня вопрос: как можно идентифицировать хосты, использующие NAT, находящиеся за каким-либо маршрутизатором или брандмауэром (т.е. 99% домашних пользователей), без ручной переадресации портов? Я знаю, что это возможно, потому что BitTorrent и Skype работают нормально.
Я относительно новичок в нетворкинге, поэтому очень ценю возможность использовать коллективную мудрость этого сообщества.
Вам нужно нат прохождение (нат-т) или нат дырокол. Это частичное решение, так как многие шлюзы nat этого не допускают. Это означает, что вам понадобятся серверы с общедоступными IP-адресами для передачи трафика между ограниченными nat-клиентами в рамках вашего решения.