Это как-то два пути, а как-то один. Основываясь на вашем вопросе и изображении, я считаю, что вы используете NAT.
Предположим, пользователь с исходным IP-адресом 111.111.111.111 и исходящими запросами с порта 7777.
Ваш общедоступный IP-адрес — 49.207.10.38, а ваш пограничный маршрутизатор или прокси-сервер прослушивает порт 80.
Частный IP вашего внутреннего маршрутизатора 192.168.1.254
IP вашего внутреннего сервера 192.168.1.100
- Пользователь достигает вашего маршрутизатора или прокси: 111.111.111.111:7777 -> 49.207.10.38:80
- NAT преобразует общедоступный IP-адрес во внутренний частный IP-адрес: вместо отправки внутренних пакетов с 49.207.10.38 он отправляет их как 192.168.1.254, чтобы внутренние узлы могли отвечать маршрутизатору.
- Ваш роутер перенаправляет пакеты на внутренний сервер: 192.168.1.254.7777 -> 192.168.1.100:80
- Внутренний сервер обрабатывает запрос и отвечает на содержимое страницы исходному серверу (который теперь является внутренним маршрутизатором): 192.168.1.100:80 -> 192.168.1.254:7777.
- Маршрутизатор применяет преобразование NAT, чтобы отправить его обратно исходному запрашивающему, но теперь NAT также преобразует свой внутренний IP-адрес в общедоступный IP-адрес, чтобы общедоступный пользователь мог получить доступ к нему из общедоступного Интернета (он будет получать пакет как 49.207.10.38). вместо 192.168.1.254): 49.207.10.38:80 -> 111.111.111.111:7777
При этом имейте в виду, что:
если запрос приходит с порта 7777 на порт 80, ответ будет отправлен с порта 80 на порт 7777
если вы размещаете свой сервер в частной сети, вам нужно использовать NAT, чтобы маскировать частные IP-адреса под IP-адрес общедоступного маршрутизатора.