TCP-IP крупным планом

         

ARP запрос и ARP отклик, сгенерированные



Рисунок 4.4 ARP запрос и ARP отклик, сгенерированные при запросе на Telnet соединение.

На рисунке А.3 в приложении А показан реальный вывод команды tcpdump, которую мы запустили на рисунке 4.4. Так как это первый пример вывода tcpdump в тексте, Вам стоит посмотреть приложение, чтобы увидеть как мы преобразовали вывод, чтобы он стал более красивым и читаемым.

Мы удалили 4 заключительные строки из вывода tcpdump, которые соответствуют разрыву соединения (более подробно рассматривается в главе 18), так как они не имеют отношения к нашему обсуждению.

В строке 1 приводится аппаратный адрес источника (bsdi), в данном случае - 0:0:c0:6f:2d:40. Аппаратный адрес назначения ff:ff:ff:ff:ff:ff, являющийся широковещательным адресом Ethernet. Каждый Ethernet интерфейс на кабеле получит фрейм и обработает его, как показано на рисунке 4.2.

Следующее поле вывода в строке 1, arp, означает, что тип фрейма (frame type) установлен в 0x0806, что означает либо ARP запрос, либо ARP отклик.

Значение 60, напечатанное после слов arp и ip, в каждой из 5 строк означает длину фрейма Ethernet. Так как размер ARP запроса и ARP отклика составляет 42 байта (28 байт - ARP сообщение, 14 байт - Ethernet заголовок), каждый фрейм дополняется до минимума Ethernet: 60 байт.

Если обратиться к рисунку 1.7, то можно увидеть, что минимальный размер (60 байт) включает в себя 14-байтный Ethernet заголовок, однако не включает 4-байтный Ethernet завершитель. В некоторых книгах минимум приводится как 64 байта, что включает в себя и Ethernet завершитель. Мы целенаправленно не включили 14 байт заголовка Ethernet в минимум из 46 байт, показанных на рисунке 1.7. Максимальный размер составляет 1500 байт. Обычно эта величина называется максимальный блок передачи (MTU - maximum transmission unit) (См. рисунок 2.5). Мы часто используем понятие MTU, потому что оно ограничивает размер IP датаграммы, однако оно никак не связано с минимальным размером. Большинство драйверов устройств или интерфейсных плат автоматически дополняют Ethernet фреймы до минимального размера. IP датаграммы в строках 3, 4 и 5 (содержащие TCP сегменты) меньше чем минимум и также будут дополнены до 60 байт.

Следующее поле в строке 1, "arp кто имеет" (arp who-has), идентифицирует фрейм как ARP запрос с IP адресом svr4 в качестве адреса назначения и IP адресом bsdi в качестве адреса отправителя. tcpdump по умолчанию приводит имена хостов соответствующие IP адресам. (В разделе "Беспричинный ARP" мы воспользуемся опцией -n, чтобы посмотреть реальные IP адреса в ARP запросе.)

В строке 2 мы видим, что ARP запрос распространяется как широковещательный, тогда как адрес назначения ARP отклика это адрес bsdi (0:0:c0:6f:2d:40). ARP отклик посылается непосредственно запрашивающему хосту; он не является широковещательным.

tcpdump печатает для этого фрейма arp reply вместе с именем хоста и аппаратным адресом отвечающего.

В строке 3 отправляется первый TCP сегмент, содержащий требование об установлении соединения. Аппаратный адрес назначения это адрес хоста назначения (svr4). Мы рассмотрим этот сегмент более подробно в главе 18.

Число, которое печатается в каждой строке, после номера строки - это время (в секундах) когда пакет был принят программой tcpdump. В каждой строке после первой содержится разница во времени (в секундах) с предыдущей строкой. Это значение приводится в скобках. Как видно из рисунка, время между отправкой ARP запроса и получением ARP отклика составляет 2,2 мс. Первый TCP сегмент послан через 0,7 мс после этого. Таким образом, для динамического определения адреса с использованием ARP, в данном примере, потребовалось менее чем 3 мс.

И последнее на что следует обратить внимание в выводе tcpdump: мы не увидим ARP запрос от svr4, когда он посылает свой первый TCP сегмент (строка 4). Дело в том, что svr4 уже имеет данные о bsdi в своем ARP кэше, так как, когда система получает ARP запрос, помимо того что она посылает ARP отклик, она также сохраняет аппаратный адрес и IP адрес запросившего в своем ARP кэше. Это логично, так как если запросивший собирается послать IP датаграмму, то получившему скорее всего придется отправить ответ на эту датаграмму.



Содержание раздела