1

Как такие инструменты, как ping или любой другой инструмент, использующий протокол tcp/ip, знают, что, например, 192.168.1.1 или 10.0.0.1 является локальным IP-адресом, а 8.8.8.8 или 74.142.23.95 являются публичными? 192.168.xx и 10.0.xx жестко запрограммированы для локального использования?

2 ответа2

9

Ну, они зарезервированы RFC 1918 для использования в частных сетях.

Но это на самом деле не имеет большого значения. Вы можете получить блок "общедоступных" IP-адресов от RIPE или чего-либо еще, и использовать его для своей частной сети, и все будет работать. Резервирование необходимо только по политическим причинам, чтобы администраторы могли создавать свои собственные частные сети без каких-либо проблем.

Такие инструменты, как ping , не заботятся о том, является ли адрес "частным", "локальным" или "общедоступным". Они просто отправляют пакет по указанному адресу, и ваша ОС просматривает таблицу маршрутизации, чтобы решить, куда ее отправлять дальше.

Например, когда вы настраиваете карту Ethernet в Windows с IP-адресом 10.2.3.4/16 (в формате маски маски: 255.255.0.0) и шлюзом 10.2.0.1 , она добавляет следующие записи в таблицу маршрутизации:

  • 10.2.3.4/32 (маска сети 255.255.255.255) для интерфейса Loopback

    (Ваши собственные адреса всегда маршрутизируются через интерфейс обратной связи, они никогда не отправляются в сеть.)

  • 10.2.0.0/16 (маска сети 255.255.0.0) для интерфейса подключения по Local Area Connection

    (Адреса в вашей собственной подсети по определению являются локальными.)

  • 0.0.0.0/0 (маска сети 0.0.0.0) к шлюзу 10.2.0.1

    (Все остальное не локально.)

Другими словами, вы сказали ОС, что все адреса в диапазоне 10.2.0.0/16 являются локальными, и ОС обо всем позаботится.


Чтобы просмотреть таблицу маршрутизации:

  • в Linux, ip route (IPv4) и ip -6 route (IPv6)
  • в Windows, route print (IPv4 на ≤XP, оба v4/v6 на ≥Vista)
  • в Windows XP netsh interface ipv6 show route (IPv6)
  • в Windows, Linux, BSD и других Unix-подобных утилитах , netstat -r -n (IPv4)
  • в Linux и в некоторых Unix-подобных netstat -r -n -6 (IPv6)

Редактирование таблицы маршрутизации может быть выполнено с помощью тех же инструментов. Например, чтобы пометить все 172.16.0.0/16 как локальные, вы можете использовать ip route add 172.16.0.0/16 dev eth0 в Linux.

0

Публичные и частные IP-адреса определены в RFC. Это частные IP-адреса:

10.0.0.0/8

172.16.0.0/12

192.168.0.0/16

Также эти IP-адреса являются петлевыми:

127.0.0.0/8

Другие являются публичными.

Большинству инструментов не нужно знать публичные или частные IP-адреса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .