Взглянем на содержимое таблицы маршрутизации, созданной в процессе настройки сетевых интерфейсов системы Solaris 8 посредством ifconfig:
% netstat -rn Routing Table: IPv4 Destination Gateway Flags Ref Use Interface 172.16.12.0 172.16.12.15 U 1 8 dnet0 224.0.0.0 172.16.12.15 U 1 0 dnet0 127.0.0.1 127.0.0.1 UH 20 3577 lo0
Первая запись определяет маршрут в сеть 172.16.12.0, пролегающий через интерфейс dnetO. 172.16.12.15 - это не адрес внешнего шлюза, но адрес, назначенный интерфейсу dnet0 на данном узле. Оставшиеся две записи не являются определениями маршрутов; они отражают принятые для программного обеспечения соглашения. 224.0.0.0 - групповой адрес. Данная запись предписывает Solaris выполнять доставку групповых сообщений через интерфейс 172.16.12.15. Последняя запись определяет кольцевой маршрут к узлу localhost, созданный при настройке интерфейса 1о0.
Обратите внимание на поле Flags этих записей. Для всех записей установлен флаг U (up), показывающий, что маршруты готовы к использованию, но ни разу не встречается флаг G (gateway). Флаг G отмечает внешние шлюзы. Флаг G в данном случае отсутствует потому, что все маршруты пролегают через локальные интерфейсы и ни один не проходит через внешний шлюз.
Кроме того, для кольцевого маршрута установлен флаг Н (host), который указывает, что лишь один узел доступен по этому маршруту. Значение флага становится ясным, если взглянуть на поле Destination записи кольцевого маршрута. Оно содержит адрес конкретного узла, а не адрес сети. Адрес кольцевой сети - 127.0.0.0. Данный адрес пункта назначения (127.0.0.1) является адресом конкретного узла - localhost. В одних системах используется маршрут в кольцевую сеть, в других - маршрут к локальному узлу, но во всех системах в таблице маршрутизации существует некоторый маршрут для кольцевого интерфейса.
В таблице из примера существует один маршрут к узлу, но в большинстве случаев маршруты прокладываются к сетям. Первая причина тому - необходимость сократить размер таблицы маршрутизации. Единственная сеть организации может состоять из сотен узлов. Сеть Интернет состоит из тысяч сетей и из миллионов узлов. Таблица маршрутизации, содержащая маршрут для каждого из узлов, была бы неуправляема.
Приведенная таблица содержит лишь один маршрут в физическую сеть, 172.16.12.0. Следовательно, данная система может общаться только с узлами, расположенными в указанной сети. Ограниченные возможности этой таблицы маршрутизации легко увидеть при помощи команды ping, ping вынуждает удаленный узел вернуть пакет локальному узлу - при помощи ICMP- сообщения эхо (Echo Message). Прохождение пакетов до удаленного узла и обратно означает, что два узла могут успешно обмениваться данными.
Чтобы проверить возможности таблицы маршрутизации этой системы, прежде всего, выполните команду ping для другого узла локальной сети:
% ping -s crab PING crab.wrotethebook.com: 56 data bytes 64 bytes from crab.wrotethebook.com (172.16.12.1): icmp_seq=0. time=11. ms 64 bytes from crab.wrotethebook.com (172.16.12.1): icmp_seq=1. time=10. ms ~C ----crab.wrotethebook.com PING Statistics---- 2 packets transmitted, 2 packets received, 0% packet loss round-trip (ms) min/avg/max = 10/10/11
ping выводит по одной строке на каждый полученный ответ ICMP ECHO_RESPONSE. Когда выполнение ping прерывается, программа отображает сводную статистику. Мы наблюдаем успешный обмен данными с узлом crab. Но если мы обратимся к узлу, который не принадлежит сети 172.16.12.0, скажем, к узлу издательства O'Reilly, результат будет другим.
% ping 207.25.98.2 sendto: Network is unreachable
В данном случае сообщение «sendto: Network is unreachable» показывает, что локальный узел не знает, как отправить данные в сеть узла 207.25.98.2. В таблице маршрутизации системы - лишь три маршрута, и ни один из них не ведет в сеть 207.25.98.0.
Данная таблица маршрутизации не позволяет общаться даже с машинами другой подсети books-net. Подтверждает сказанное команда ping, выполненная для узла другой подсети:
% ping 172.16.1.2 sendto: Network is unreachable
Эти тесты показывают, что простейшая таблица маршрутизации, созданная в процессе настройки сетевых интерфейсов, позволяет обмениваться данными лишь с другими узлами локальной сети. Если сети не требуется доступ к другим сетям TCP/IP, вполне можно обойтись и таким вариантом. В противном случае следует добавить прочие маршруты в таблицу маршрутизации.