Как такие инструменты, как 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 ответа
Ну, они зарезервированы 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.
Публичные и частные 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-адреса.