Тільки якщо вихідний порт вихідної вихідної дейтаграми також був портом N, і якщо NAT не вирішив плавати вихідним портом.
Тобто, перша дейтаграма UDP з машини A виглядає так у вашій локальній мережі:
Source IP: MachineAPrivate
Source Port: PortA <-- note this is typically different than the destination port
Destination IP: MachineBPublic
Destination Port: PortN
Потім, після перекладу NAT у вихідний бік, це виглядає приблизно так:
Source IP: NATPublic
Source Port: PortC <-- note this may or may not be the same as "PortA" above
Destination IP: MachineBPublic
Destination Port: PortN
Тепер, коли машина B відповідає, відповідь зазвичай виглядає так:
Source IP: MachineBPublic
Source Port: PortN
Destination IP: NATPublic
Destination Port: PortC
Потім, після того, як він проходить процес вхідного NAT перекладу:
Source IP: MachineBPublic
Source Port: PortN
Destination IP: MachineAPrivate
Destination Port: PortA
Таким чином, IF Machine A надсилає кадр з того самого порту джерела, що і порт призначення ("Порт N"), а якщо NAT здатний зберегти цей вихідний порт (тобто він налаштований для збереження вихідних портів, коли це можливо, і цей вихідний порт не використовується), ТОГО ви можете очікувати відповіді на "Порт N", щоб повернутися до машини А.
Ось авторитетна довідка щодо правильної поведінки NAT UDP:
RFC 4787 / BCP 127: Поведінкові вимоги до трансляції мережевих адрес (NAT) для Unicast UDP