#networking #tcp #gateway
#сеть #tcp #шлюз
Вопрос:
- IP-адрес сервера — 151.101.129.69
- IP-адрес моего домашнего компьютера — 192.168.0.1, IP-адрес моего офисного КОМПЬЮТЕРА — также 192.168.0.1, но, конечно, эти 2 компьютера находятся в разных местах.
Если оба моих компьютера подключаются к порту сервера 80, это должно быть 2 TCP-соединения. Мы знаем, что TCP-соединение состоит из 4 частей, исходного IP / порта и целевого IP / порта, поэтому оно НЕ должно быть таким одновременно (очень случайно оба клиента запускают соединение с порта 12345):
- подключение к моему домашнему компьютеру: 192.168.0.1:12345 <-> 151.101.129.69:80
- подключение к моему офисному ПК: 192.168.0.1:12345 <-> 151.101.129.69:80
Я предполагаю, что каждое TCP-соединение в мире на самом деле не подключается через шлюзы, это больше похоже:
192.168.0.1:12345 (homePC) <-> 41.100.90.2:33333 (homeRouter) <-> 151.0.1.1: 44444 (somekindofpublicgate) <-> 151.101.129.69:80 (сервер) приведенный выше пример показывает, что на самом деле существует 3 TCP-соединения, хотя это может быть одновременно для моего офисного компьютера: 192.168.0.1:12345(officePC) <-> 10.132.10.88:55555(OfficeRouter) <-> 133.10.100.1:44444 (officenetworkgate) <-> 140.144.10.1:54321 (somekindofpublicgate) <-> 151.101.129.69:80(сервер)
так что на самом деле это другой IP-адрес / порт общедоступного шлюза, подключающийся к серверу.
Правильно ли я понимаю?
Ответ №1:
Я предполагаю, что каждое TCP-соединение в мире на самом деле не подключается через шлюзы
То, что вы описываете, — это NAT, то есть переписывание исходного IP-адреса и порта шлюзами. Это не является обязательным требованием для TCP. Требование для TCP заключается в наличии сетевого маршрута между клиентом и сервером, т.Е. Клиент может связаться с сервером, а клиент может связаться с сервером.
С частными IP-адресами, такими как 192.168.0.1, хотя невозможно иметь такой сетевой маршрут к какому-либо хосту в Интернете, поскольку частные IP-адреса по определению не маршрутизируются в общедоступном Интернете. Вот почему необходим какой-то перевод в общедоступный маршрутизируемый IP-адрес, и NAT обеспечивает это.
Однако для TCP-соединений между системами в общедоступном Интернете или системами внутри одной и той же частной локальной сети такая трансляция не требуется. Таким образом, здесь не нужны никакие шлюзы. Обратите внимание, что системы в общедоступном Интернете — это не только серверы. Вместо этого многие учреждения также имеют общедоступные IP-адреса для своих клиентов. NAT в основном используется для решения проблемы нехватки IPv4-адресов, т.е. Используется для доступа в жилые помещения, закрытые корпоративные сети или в сетях мобильной связи. С IPv6 такая нехватка больше не является проблемой, и некоторые сети используют частные адреса IPv4 (для которых требуется NAT) и общедоступный IPv6 (NAT не требуется) в одной сети.
Комментарии:
1. @DanielFarrell: Сопоставление портов влияет на уровень TCP. На уровне IP не существует таких вещей, как порты.