Это Олиферы, "Компьютерные сети. Принципы, технологии, протоколы".при прохождении пакета из внутренней во внешнюю сеть каждой паре (внутренний частный адрес; номер порта TCP или UDP отправителя} ставится в соответствие пара {глобальный IP-адрес внешнего интерфейса; назначенный номер порта TCP или UDP}. Назначенный номер порта выбирается произвольно, однако должно быть выполнено условие его уникальности в пределах всех узлов, получающих выход во внешнюю сеть. Соответствие фиксируется в таблице.
Ну то есть если на маршрутизаторе NAT, то приходит TCP-пакет с одним портом, а выходит с другим. С адресами то же самое. Всё просто.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Поехали: Вот сеть. A и F- конечные хосты, а на промежуточных развёрнут NAT. Я пока не буду тут писать, как именно, дабы не загромождать тему. A и F общаются по протоколу tcp. Конкретнее. На F:
Shell
$ nc -l -p 9999Shell
$ nc 2.98.166.224 9999Посмотрим, как пакеты проходят, к примеру, маршрутизатор B. На B команднём:
Shell
tshark -i enp0s3 -f "tcp and dst 2.98.166.224" -i enp0s8 -f "tcp and dst 2.98.166.224"Shell
$ tshark -i enp0s3 -f "tcp and dst 2.98.166.224" -i enp0s8 -f "tcp and dst 2.98.166.224"
Capturing on 'enp0s3' and 'enp0s8'
** (tshark:2610) 23:18:18.411873 [Main MESSAGE] -- Capture started.
** (tshark:2610) 23:18:18.411913 [Main MESSAGE] -- File: "/tmp/wireshark_2_interfaces69GAP3.pcapng"
1 0.000000000 2.45.23.56 → 2.98.166.224 TCP 71 40480 → 9999 [PSH, ACK] Seq=1 Ack=1 Win=502 Len=5 TSval=678210397 TSecr=3607724957
2 0.000075898 45.24.12.78 → 2.98.166.224 TCP 71 40480 → 9999 [PSH, ACK] Seq=1 Ack=1 Win=502 Len=5 TSval=678210397 TSecr=3607724957
3 59.019167017 2.45.23.56 → 2.98.166.224 TCP 71 40480 → 9999 [PSH, ACK] Seq=6 Ack=1 Win=502 Len=5 TSval=678269475 TSecr=3608132066
4 59.019232495 45.24.12.78 → 2.98.166.224 TCP 71 40480 → 9999 [PSH, ACK] Seq=6 Ack=1 Win=502 Len=5 TSval=678269475 TSecr=3608132066