Рассмотрим процесс продвижения пакета в составной сети на примере IP-сети, показанной на рис. 16.4. При этом будем считать, что все узлы сети, рассматриваемой в примере имеют адреса, основанные на классах. Особое внимание будет уделено взаимодействию протокола IP с протоколами разрешения адресов ARP и DNS.
Итак, пусть пользователю компьютера cit.mgu.com, находящегося в сети 129.13.0.0 необходимо установить связь с FTP-сервером. Пользователю известно символьное имя сервера unix.mgu.com, поэтому он набирает на клавиатуре команду обращения к FTP-серверу имени:
> ftp.unix.mgu.com
Выполнение этой команды инициирует три последовательные операции.
DNS-клиент (работающий на компьютере cit.mgu.com) передает DNS-серверу сообщение, в котором содержится запрос об IP-адресе сервера unix.mgu.com, с которым он должен связаться по протоколу FTP.
DNS-сервер, выполнив поиск, передает ответ DKS-клиенту о найденном – IP-адресе сервера unix.mgu.com.
FTP-клиент (работающий на том же компьютере cit.mgu.com), используя найденный адрес сервера unix.mgu.com, передает сообщение работающему на нем FTP-cерверу.
Рис. 16.4. Пример IP-маршрутизации
Рассмотрим, как при решении этих задач взаимодействуют между собой протоколы DNS, IP, ARP и Ethernet и что происходит при этом с кадрами и пакетами.
1. 1. Формирование пакета с инкапсулированным в него DNS-запросом. Программный модуль FTP-клиента получив команду > ftp unix.mgu.com, передает запрос к работающей на этом же компьютере клиентской части протокола DNS, которая, в свою очередь формирует к DNS-серверу запрос, интерпретируемый примерно так: «Какой IP-адрес соответсвует символьному имени unix.mgu.com?» Запрос упаковывается UDP-дейтаграмму затем в IP-пакет. В заголовке пакета в качестве адреса назначения Указывается IP-адрес 200.5.16.6 DNS-сервера. Этот адрес известен программному обеспечению клиентского компьютера, так как он входит в число его конфигурационных параметров. Сформированный IP-пакет будет перемещаться по сети в неизменном виде (как показано на рис. 16.5), пока не дойдет до адресата — DNS-сервера.
2. Для передачи этого IP-пакета необходимо его упаковать в кадр Ethernet, указав в заголовке МАС-адрес получателя. Технология Ethernet способна доставлять кадры только тем адресатам, которые находятся в пределах одной подсети с отправителем. Если же адресат расположен в этой подсети, то кадр надо передать ближайшему маршрутизатору, чтобы тот взял на себя заботу о дальнейшем перемещении пакета. Для этого модуль IP, сравнив номера сетей в адресах отправителя и получателя, то есть 129.13.23.17 и 200.5.16.6, выясняет, что пакет направляется в другую сеть, следовательно, его необходимо передать маршрутизатору, в данном случае маршрутизатору по умолчанию. IP-адрес марщрутизатор по умолчанию также известен клиентскому узлу, поскольку он входит в число конфигурационных параметров. Однако для кадра Ethernet необходимо указать не IP-адрес, а МАС-адрес получателя. Эта проблема решается с помощью протокола ARP, который для ответа на вопрос: Какой МАС-адрес соответствует IP-адресу 194.87.23.1?» делает поиск в своей ARP-таблице. Поскольку обращения к маршрутизатору происходят часто, будем считать, что нужный МАС-адрес обнаруживается в таблице и имеет значение 008048ЕВ7Е60. После получения этой информации клиентский компьютер cit.mgu.com отправляет маршрутизатору R3 пакет, упакованный в кадр Ethernet.
3.Определение IP-адреса и MAC-адреса следующего маршрутизатора R2. Кадр принимается интерфейсом 129.13.5.1 маршрутизатора R3. Протокол Ethernet, работающий на этом интерфейсе, извлекает из этого кадра IP-пакет и передает его протоколу IP. Протокол находит в заголовке пакета адрес назначения 200.5.16.6 и просматривает записи своей таблицы маршрутизации. Пусть маршрутизатор Кб не обнаруживает специфического маршрута для адреса назначения 200.5.16.6, но находит в своей таблице следующую запись:
200.5.16.0 198.21.17.7 198.21.17.6
Эта запись говорит о том, что пакеты для сети 200.5.16.0 маршрутизатор R3 должен передавать на свой выходной интерфейс 198.21.17.6, с которого они поступят на интерфейс следующего маршрутизатора R2, имеющего IP-адрес 198.21.17.7. Однако знания IP-адреса недостаточно, чтобы передать пакет по сети Ethernet. Необходимо определить МАС-адрес маршрутизатора R3. Как известно, такой работой занимается протокол ARP. Пусть на этот раз в ARP-таблице нет записи об адресе маршрутизатора R3. Тогда в сеть отправляется широковещательный ARP-запрос, который поступает на все интерфейсы сети 198.21.17.0. Ответ приходит только от интерфейса маршрутизатора R3: «Я имею 1Р-адрес 198.21.17.7 и мой МАС-адрес 00E0F77F5A02». Маршрутизатор R3 отсылает ему IP-пакет с DNS-запросом.
4.Маршрутизатор R2 доставляет пакет DNS-серверу. Модуль IP на маршрутизаторе R2 действует в соответствии с уже не раз описанной нами процедурой: отбросив заголовок кадра Ethernet, он извлекает из пакета IP-адрес назначения и просматривает свою таблицу маршрутизации. Там он обнаруживает, что сеть назначения 200.5.16.0 является непосредственно присоединенной к его второму интерфейсу. Следовательно, пакет не нужно маршрутизировать, однако требуется определить МАС-адрес узла назначения. Протокол ARP «по просьбе» протокола IP находит (либо из ARP-таблицы, либо по запросу) требуемый МАС-адрес 00E0F7751231 DNS-сервера. Получив ответ о МАС-адресе, маршрутизатор R2 отправляет в сеть назначения кадр Ethernet с DNS запросом.
5.Сетевой адаптер DNS-сервера захватывает кадр Ethernet, обнаруживает совпадение МАС-адреса назначения, содержащегося в заголовке, со своим собственным адресом и направляет его модулю IP. После анализа полей заголовка IP из пакета извлекает данные вышележащих протоколов. DNS-запрос передается программному модулю DNS-сервера DNS-сервер просматривает свои таблицы, возможно, обращается к другим DNS-серверам и в результате формирует ответ, смысл которого: «Символьному имени unix.mgu.com соответствует IP-адрес 56.01.13.14».
Процесс доставки DNS-ответа клиенту cit.mgu.com совершенно аналогичен процессу передачи DNS-запроса, который мы только что так подробно описали. Работая в тесной кооперации, протоколы IP, ARP и Ethernet передают клиенту DNS-ответ через всю составную сеть.