130
тов назначения, которые непосредственно подключены к посылающему хосту). Все что может предоставить IP маршрутизация — это IP адрес маршрутизатора следующей пересылки, на который посылается дейтаграмма. При этом делается предположение, что маршрутизатор следующей пересылки ближе к пункту назначения, чем посылающий хост. Также делается предположение, что маршрутизатор следующей пересылки напрямую подключен к посылающему хосту.
IP маршрутизация осуществляет следующие действия:
Осуществляется поиск в таблице маршрутизации, при этом ищется пункт, который совпадет с полным адресом пункта назначения (должен совпасть идентификатор сети и идентификатор хоста). Если пункт найден в таблице маршрутизации, пакет посылается на указанный маршрутизатор следующей пересылки или на непосредственно подключенный интерфейс (в зависимости от поля флагов). Как правило, так определяются каналы точ- ка-точка, при этом другой конец такого канала, как правило, является полным IP адресом удаленного хоста.
Осуществляется поиск в таблице маршрутизации пункта, который совпадет, как минимум, с идентификатором сети назначения. Если пункт найден, пакет посылается на указанный маршрутизатор следующей пересылки или на непосредственно подключенный интерфейс (в зависимости от поля флагов). Маршрутизация ко всем хостам, находящимся в сети назначения, осуществляется с использованием этого единственного пункта таблицы маршрутизации. Например, все хосты локальной сети Ethernet представляются в таблицах маршрутизации именно таким образом. Эта проверка совпадения идентификатора сети осуществляется с использованием возможной маски подсети, которую мы опишем в следующем разделе.
В таблице маршрутизации ищется пункт, помеченный «по умолчанию» (default). Если пункт найден, пакет отсылается на указанный маршрутизатор по умолчанию.
Если ни один из шагов не дал положительного результата, дейтаграмма считается недоставленной. Если недоставленная дейтаграмма была сгенерирована данным хостом, то обычно возвращается ошибка «хост недоступен» (host unreachable) или «сеть
131
недоступна» (network unreachable). Этот код ошибки возвращается приложению, которое сгенерировало дейтаграмму.
В начале всегда осуществляется сравнение на совпадение полного адреса хоста, после чего осуществляется сравнение идентификатора сети. Только в том случае, если результат обеих сравнений отрицательный, используется маршрут по умолчанию. Маршруты по умолчанию и сообщения ICMP о перенаправлении, отправляемые на маршрутизатор следующей пересылки (если для дейтаграммы выбрано неверное направление по умолчанию), являются довольно мощными характеристиками IP маршрутизации.
Еще одна фундаментальная характеристика IP маршрутизации заключается в возможности указать маршрут к сети, вместо того, чтобы указывать маршрут к каждому отдельно взятому хосту. Именно поэтому хосты включенные в Internet, например, имеют в своих таблицах маршрутизации тысячи пунктов, вместо того чтобы содержать в них не более чем миллионы пунктов.
Косвенная маршрутизация
На рис. 6.11 представлен фрагмент сети Internet. В данном случае сеть Internet состоит из трех сетей Ethernet, на базе которых работают три IP-сети, объединенные шлюзом D. Каждая IPсеть включает четыре машины; каждая машина имеет свои собственные IP- и Ethernet адреса.
Шлюз D соединяет все три сети и, следовательно, имеет три IP-адреса и три Ethernet-адреса. Машина D вместо двух модулей ARP и двух драйверов содержит три модуля ARP и три драйвера Ethernet. Обратим внимание на то, что машина D имеет только один модуль IP. Системным администратором присвоен каждой сети уникальный номер, называемый IP-номером сети (Network ID).
Когда машина A посылает IP-пакет машине B, то процесс передачи идет в пределах одной сети. При всех взаимодействиях между машинами, подключенными к одной IP-сети, используется прямая маршрутизация, базирующаяся на MAC-адресах. Когда машина D взаимодействует с машиной A, то это прямое взаимодействие. Когда машина D взаимодействует с машиной E, то это прямое взаимодействие. Когда машина D взаимодействует с машиной H, то это прямое взаимодействие. Это так, поскольку каждая пара этих машин принадлежит одной IP-сети. Маршрутиза-
132
ция IP-пакетов выполняется модулями IP и является прозрачной для модулей TCP, UDP и прикладных процессов.
D |
192.168.100.0
A |
B |
C |
|
|
192.168.101.0 |
E |
F |
G |
|
|
192.168.102.0 |
H |
I |
J |
Рис. 6.11 — Сеть Internet, состоящая из трех IP-сетей
Однако, когда машина A взаимодействует с машинами, включенными в другую IP-сеть, то взаимодействие уже не будет прямым. Машина A должна использовать шлюз D для ретрансляции IP-пакетов в другую IP-сеть. Такое взаимодействие называ-
ется косвенным.
Если машина A посылает машине E IP-пакет, то IP-адрес и Ethernet-адрес отправителя соответствуют адресам A. IP-адрес места назначения является адресом E, но поскольку модуль IP в A посылает IP-пакет через D, Ethernet-адрес места назначения является адресом D:
----------------------------------------------------
| адрес отправитель получатель |
----------------------------------------------------
| |
IP-заголовок |
A |
E |
| |
| |
Ethernet-заголовок |
A |
D |
| |
----------------------------------------------------
Модуль IP в машине D получает IP-пакет и проверяет IPадрес места назначения. Определив, что это не его IP-адрес, шлюз D посылает этот IP-пакет прямо к E:
133
----------------------------------------------------
| адрес отправитель получатель |
----------------------------------------------------
| |
IP-заголовок |
A |
E |
| |
| |
Ethernet-заголовок |
D |
E |
| |
----------------------------------------------------
Итак, при прямой маршрутизации IP- и Ethernet-адреса отправителя соответствуют адресам того узла, который послал IPпакет, а IP- и Ethernet-адреса места назначения соответствуют адресам получателя. При косвенной маршрутизации IP- и Ethernetадреса не образуют таких пар.
В данном примере (рис. 6.11) сеть Internet является очень простой. Реальные сети могут быть гораздо сложнее, так как могут содержать несколько шлюзов и несколько типов физических сред передачи. В приведенном примере несколько сетей Ethernet объединяются шлюзом для того, чтобы локализовать широковещательный трафик в каждой сети.
6.5 Протоколы уровня IP
К протоколам Internet уровня относятся протоколы IP, ICMP, ARP и RARP. Ниже детально разобраны структура пакетов и функции данных протоколов.
Формат заголовка IP-дейтаграммы
Заголовок дейтаграммы состоит из 32-разрядных слов и имеет переменную длину, зависящую от размера поля Options, но всегда кратную 32 битам. За заголовком непосредственно следуют данные, передаваемые в дейтаграмме. Формат заголовка:
134
Рис. 6.12 — Формат заголовка IP-дейтаграммы
Значения полей заголовка следующие:
Ver (4 бита) — версия протокола IP, в настоящий момент используется версия 4, новые разработки имеют номера версий 6-8.
IHL (Internet Header Length) (4 бита) — длина заголовка в
32-битных словах; диапазон допустимых значений от 5 (минимальная длина заголовка, поле Options отсутствует) до 15 (т.е. может быть максимум 40 байт опций).
TOS (Type Of Service) (8 бит) — значение поля определяет приоритет дейтаграммы и желаемый тип маршрутизации.
Рис. 6.13 — Структура байта TOS
Три младших бита (Precedence) определяют приоритет дейтаграммы:
111 — управление сетью;
110 — межсетевое управление;
101 — CRITIC-ECP;
100 — более чем мгновенно;
011 — мгновенно;
010 — немедленно;
001 — срочно;