Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Рис. 5.14. Поиск физического адреса системы
Целевой хост узнает свой IP-адрес и читает запрос. После этого он изменяет собственную таблицу трансляции адресов, включая в нее IP-адрес и физический адрес отправителя широковещательной рассылки, и, наконец, посылает ответ, содержащий аппаратный адрес своего интерфейса.
Когда система-источник получает такой ответ, она обновляет свою таблицу ARP и становится готовой к пересылке данных по локальной сети.
5.24.1 Содержимое сообщения ARP
Запросы ARP первоначально использовались в локальных сетях Ethernet, но структура таких запросов имеет более общую природу, поэтому их можно применять и в Token-Ring, локальных сетях Fiber Distributed Data Interface (FDDI) или в глобальных сетях Switched Multimegabit Data Service (SMDS). Один из вариантов ARP был разработан для региональных сетей с виртуальными цепями (подобных Frame Relay).
Сообщение ARP помещается в поле данных кадра вслед за заголовком (заголовками) нижних уровней. Например, для Ethernet с кадрами DIX сообщение ARP следует за MAC-заголовком, а для сетей типа 802.3 или 802.5 — за MAC-заголовком, заголовком Logic Link Control (LLC) и подзаголовком Sub-Network Access Protocol (SNAP). Тип протокола для таких кадров (ARP через Ethernet) определяется кодом X'0806. В таблице 5.5 показаны поля сообщения ARP.
Таблица 5.5 Формат сообщения ARP
Количество октетов Поле 2 Тип аппаратного адреса 2 Протокол адресации высокого уровня 1 Длина аппаратного адреса 1 Длина адреса высокого уровня 2 Тип сообщения: 00 01 = запрос, 00 02 = ответ * Аппаратный адрес источника * Адрес высокого уровня (IP) источника * Аппаратный адрес приемника * Адрес высокого уровня (IP) приемникаДлина последних четырех полей зависит от используемой технологии и применяемого протокола. Аппаратный адрес локальной сети 802.X содержит 6 октетов, а IP-адрес — 4 октета. В таблице 5.6 показаны примеры форматов сообщений, запрашивающих трансляцию IP-адресов в адреса Ethernet.
Таблица 5.6 Примеры сообщений для запросов ARP
Количество октетов Поле Описание 2 00 01 Ethernet 2 08 00 IP 1 06 Длина физического адреса в 6 октетов для Ethernet 1 04 Длина физического адреса IP 2 00 01 Запрос 6 02 07 01 00 53 23 Аппаратный адрес источника 4 80 24 04 12 Адрес высокого уровня источника 6 00 00 00 00 00 00 Аппаратный адрес назначения 4 80 24 04 0B Адрес высокого уровня назначенияПри ответе меняются роли источника и приемника. Например, адресом высокого уровня источника в ответе на запрос станет X'80-24-04-0B.
Применение ARP не ограничивается только TCP/IP: во втором поле также можно указать протокол, использующий ARP.
Первичный запрос ARP распространяется в широковещательной рассылке, поэтому любая система локальной сети может использовать сведения из такого запроса для обновления собственной таблицы данными о запрашивающей системе. Однако обычно система обновляет свою таблицу, только когда сама служит целевой системой запроса ARP.
5.24.2 Таблица ARP
Большинство систем обеспечивает для администратора следующие команды:
■ Просмотр локальной таблицы ARP
■ Ручное удаление или добавление элементов таблицы
■ Загрузку в таблицу информации из конфигурационного файла
Диалог пользователя в процессе выполнения команды arp -a показывает как изменяется содержимое таблицы ARP системы tigger при соединении по telnet с хостом mickey, сведений о котором ранее не было в таблице. Отметим, что в выводе из команды указываются имена каждой системы, их IP-адреса и 6 октетов физического адреса (шестнадцатеричные числа, разделенные двоеточием).
> arp -a
nomad-eth0.jvnc.net (128.121.50.50) at 0:0:с:2:85:11
r2d2.jvnc.net (128.121.50.2) at 8:0:20:а:2с:3f
jim-mac.jvnc.net (128.121.50.162) at 8:0:7:6f:а6:65
tom-mac.jvnc.net (128.121.50.163) at 8:0:7:ff:96:9е
chip.jvnc.net (128.121.50.148) at 0:0:3b:86:6:4c
nisc.jvnc.net (128.121.50.7) at 8:0:20:11:d2:b7
nicol.jvnc.net (128.121.50.10) at 0:0:3b:30:32:34
minnie.jvnc.net (128.121.50.141) at 8:0:20:7:b5:da
>
> telnet mickey.3vnc.net
Trying 128.121.50.143 …
Connected to mickey.jvnc.net.
Escape character is '^]'
SunOS UNIX (mickey.jvnc.net)
login:
. . .
logout
> arp -a
nomad-eth0.jvnc.net (128.121.50.50) at 0:0:c:2:85:11
r2d2.jvnc.net (128.121.50.2) at 8:0:20:a:2c:3f
jim-mac.jvnc.net (128.121.50.162) at 8:0:7:6f:a6:65
tom-mac.jvnc.net (128.121.50.163) at 8:0:7:ff:96:9e
chip.jvnc.net (128.121.50.148). at 0:0:3b:86:6:4c
nisc.jvnc.net (128.121.50.7) at 8:0:20:11:d2:b7
nicol.jvnc.net (128.121.50.10) at 0:0:3b:80:32:34
minnie.jvnc.net (128.121.50.141) at 8:0:20:7:b5:da
mickey.jvnc.net (128.121.50.143) at 8:0:20:7:53:8f
>
5.24.3 Обратные запросы ARP
Один из вариантов ARP называется обратным запросом (reverse ARP — RARP) и служит для определения узлом собственного IP-адреса. Такие запросы предназначены для бездисковых рабочих станций и других устройств, которые получают конфигурационную информацию от сетевого сервера.
В обратном запросе ARP станция указывает собственный физический адрес и по широковещательной рассылке отправляет его, желая получить для себя IP-адрес. Для ответа на такие запросы сетевой сервер должен быть сконфигурирован с таблицей физических адресов и соответствующих им IP-адресов.
Обратные запросы ARP были вытеснены протоколом BOOTP и его улучшенной версией, названной протоколом динамического конфигурирования хоста (Dynamic Host Configuration Protocol — DHCP). Этот протокол гораздо мощнее и предоставляет больший набор конфигурационных параметров для систем TCP/IP (BOOTP и DHCP будут рассмотрены в главе 11).
5.25 Множество адресов для одного интерфейса
Некоторые производители маршрутизаторов предусматривают возможность присваивать несколько IP-адресов одному интерфейсу маршрутизатора. Для чего же это нужно? Несколько адресов подсетей могут потребоваться, во-первых, в локальной сети, имеющей очень большое количество систем. Во-вторых, в тех случаях, когда отдельные номера подсетей применяются для создания различных правил фильтрации трафика для систем из двух различных рабочих групп. Причем каждая рабочая группа принадлежит отдельной логической подсети, хотя они совместно используют один физический носитель информации.
Рис. 5.15. Интерфейс маршрутизатора с двумя IP-адресами
На рис. 5.15 показана локальная сеть с двумя логическими подсетями — 128.36.4.0 и 128.36.5.0. Интерфейсу локальной сети маршрутизатора присвоено два IP-адреса: 128.36.4.1 и 128.36.5.1. В такой сети трафик будет успешно маршрутизироваться, однако потребуется дополнительная работа по правильной маршрутизации датаграмм, направленных на хосты этой сети.
Предположим, что система А имеет 8-битовую маску подсети. Когда А захочет послать датаграмму в В, она пошлет ее маршрутизатору. Чтобы этого избежать, хост локальной сети нужно сконфигурировать с 7-битовой маской подсети, при этом 4 будет соответствовать 0000 0100, а 5 — 0000 0101.
5.26 Прокси ARP
Предположим, что в сети нельзя использовать смежные номера. Например, 128.36.4.0 и 128.36.20.0 совместно используют носитель. В этом случае хосты локальной сети можно конфигурировать с маской 255.255.0.0, т.е. без выделения подсетей. Затем хосты смогут использовать ARP для всех точек назначения сети 128.36. Этот метод прекрасно подходит для сетей с совместным использованием носителя, но что делать с трафиком в подсеть сети 128.36, которая не принадлежит общей локальной сети?