Почему сетевой идентификатор не требуется для подключения к 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.

Другие вопросы по тегам