Как происходит соединение peer-to-peer, если оба человека сидят на внутренних ip (за NATом)?
==============================================================================================

 Здравствуйте.  

В настройках десктопного клиента меседжера телеграма есть опция "Использовать peer-to-peer для звонков".  

Если оба человека сидят на внутренних ip (за NATом), то как будет происходить соединение? 

 Либо дырявят свой НАТ с помощью UPnP, либо используют для связи UDP, а координаты второй стороны получают от общего сервера. Примерно по такой же схеме работает VoIP за NATом (смотри протокол STUN). 

 Проблема NAT - в создании\открытии соединения (до клиента за NAT нельзя достучаться снаружи).  

Вероятнее всего звонок создается через сервер Telegram, а потом два клиента договариваются между собой и уже работают напрямую. 

 Ну NAT же ответы каким-то образом передает обратно запросившему абоненту.  

Следовательно ожидает, а потом принимает, и пересылает данные пришедшие к нему на определенный порт с определенного адреса отправителю.  

Зная механизм NAT можно его обмануть - для этого второму абоненту надо отправить данные имитирующие ответ сервера от которого ждут ответа. В результате такого обмена устанавливается соединение.  

Способов обмана NAT - великое множество, но не все и не всегда работают.