Почему сетевой идентификатор не требуется для подключения к IP-адресу?
Я знаю, как в принципе работает IP, и знает, что IP-адрес состоит из части идентификатора сети и части идентификатора хоста, но когда я набираю IP-адрес, 8.8.8.8
в веб-браузер я не предоставлял никакой информации о маске подсети.
Итак, как браузер узнает, где находится разделительная линия между идентификатором сети и идентификатором хоста? поскольку 8.8.8.8
может означать 8.8.8.8/8
, 8.8.8.8/24
и т.п.
В двух словах, IP-адрес, который я указал, неоднозначен.
3 ответа
В случае, когда другой конец находится за пределами вашей локальной сети, вашему ПК не нужно знать механизмы подсетей на другом конце, ему просто нужно знать достаточно для доставки пакетов к ближайшему маршрутизатору. Для этого он использует две части информации.
- маска локальной подсети
он использует это вместе со своим собственным IP-адресом, чтобы увидеть, является ли другой IP-адрес локальным или нет. - шлюз по умолчанию (или явные маршруты - см.
netstat -nr
)
туда отправляется все что не местное
Маршрутизатор на другом конце (то есть с интерфейсом в другой локальной сети) знает о расположении подсети там. Больше ничего не нужно.
Если вы посмотрите на netstat -nr
вы увидите, что таблица маршрутизации вашего ПК состоит из сети назначения, маски сети (другая сторона маски подсети) и шлюза (маршрутизатора). Обычно у ПК есть один шлюз по умолчанию плюс немного киббла для вещей, которые вы не используете часто (loopback, multicast и т. Д.).
Вы можете представить себе сетевые маски в таблицах маршрутизации как эквивалентные высокоуровневой сводке или совокупности миллионов целевых подсетей.
Маска подсети используется только для выяснения, является ли адрес локальным для определенной сети, и для маршрутизации.
Если адрес, с которым вы хотите связаться (8.8.8.8
в вашем примере) не находится ни в одной из ваших локальных сетей (скажем, 172.16.3.0/24
& 127.0.0.1/8
& 192.168.45.88/29
), то ваша машина не может связаться с ним напрямую. В этом случае он отправит трафик на шлюз (скажем, 192.16.3.1
), если настроен, и надеюсь, что он доберется до места назначения.
Это не браузер, который определяет маску, а TCP/IP на нижнем уровне. Это также зависит от реализации TCP/IP. В большинстве реализаций, когда IP-адрес настроен без указания маски подсети, будет использоваться маска по умолчанию для этого IP-класса. Скажем, когда IP-адрес класса C настроен без маски, по умолчанию можно использовать маску 255.25.255.0.