Вот здесь наглядно/доступно, но с ошибками для общего случая: it.sander.su/udp-hole-punching.php
Конкретно ошибка вот тут: «A и B отправляют аналогичные пакеты на S, и S узнает порты P2 и P4.»
При новом соединении, тем более на другой хост порты сменятся для нормальной реализации NAT.
Есть. И статья есть на эту тему habrahabr.ru/post/142858/. Но сейчас схема работы с UDP hole punching стала гораздо проще. После появления поддержки UDP в Windows Azure отпала необходимость в стороннем посреднике. Работоспособность удаленного рабочего стола гарантирована для практически всех натов, кроме симметричных.
Реальный — значит он маршрутизируется в инете в отличии от частных/серых. Всего лишь сленг. Публичный, если так вам кажется корректней и понятней. Суть от этого в дамнном случае не меняется. Особенно если у вас есть представления о NAT.
UDP hole punching для Symmetric NAT: немного теории и почти честный эксперимент