2016-02-21 7 views
1

Я пытаюсь понять, как работает ARP и формат пакета ARP. Посмотрите на кружках полей в рисунке ниже:Разница между исходным MAC-адресом в пакете сообщений ARP и указанным при инкапсуляции MAC-адресом источника?

enter image description here

В этом примере они дали разные адреса MAC в обоих полях. Я не вижу, как это возможно? По какому сценарию эти два будут отличаться?

И если нет, то почему мы добавляем избыточную информацию при ее инкапсуляции?

Хотя я думаю, что они имеют разную длину (один фиксированный 6 байтов, а другой переменный ..why ??) они должны быть для разных адресов.

ответ

1

Это может быть законная опечатка. Длина адреса в ARP-пакетах является переменной, поскольку разные протоколы уровня 2 имеют разные длины адресов. Не делайте ошибку, думая только о сети.

Вы должны изучить RFC 826 для того, чтобы понять, ARP:

Этот протокол был первоначально разработан для DEC/Intel/Xerox 10Mbit Ethernet. Он был обобщен, чтобы позволить использовать его для других сетей сетей . Большая часть обсуждения будет направлена ​​на 10Mbit Ethernet . Обобщения, где это применимо, будут соответствовать дискуссиям Ethernet.

См подчеркнутая текст:

Почему это делается так ??

Периодическое радиовещание определенно не требуется. Представьте себе 100 рабочих станций на одном Ethernet, каждый радиовещательный адрес информация о разрешении раз в 10 минут (в качестве одного из возможных параметров ). Это один пакет каждые 6 секунд. Это почти разумно, но какой смысл? Рабочие станции, как правило, не будут разговаривать друг с другом (и поэтому имеют 100 бесполезных записей в таблице); они будут в основном разговаривать с мейнфреймом, файл сервер или мост, но только на небольшое количество других рабочих станций (для интерактивных разговоров, например). Протокол, описанный в данном документе , распространяет информацию по мере необходимости и только один раз (возможно) за загрузку машины.

Этот формат не допускает выполнения более одного разрешения в того же пакета. Это для простоты. Если бы вещи были мультиплексированы , формат пакета был бы значительно сложнее переваривать, и большая часть могла быть бесполезна. Подумайте о мосту, который говорит четыре протокола, сообщающие рабочей станции обо всех четырех адресах протокола, три из которых рабочая станция, вероятно, никогда не будет использоваться.

Этот формат позволяет повторному использованию буфера пакета, если получен ответ ; ответ имеет ту же длину, что и запрос, и несколько из , поля одинаковы.

Значение аппаратного поля (ar $ hrd) взято из списка для этой цели . В настоящее время единственным установленным значением является для 10-мегабитного Ethernet (ares_hrd $ Ethernet = 1). Обсуждались также использование этого протокола для пакетных радиосетей, и для этого потребуется другое значение , а также другие будущие аппаратные средства, которые хотят использовать этот протокол.

Для 10-мегабитного Ethernet значение в поле протокола (ar $ pro) равно , взятому из набора ether_type $. Это естественное повторное использование назначенных типов протоколов . Объединение этого с опкодом (ar $ op) должно было бы эффективно сократить число протоколов, которые могут быть разрешены в соответствии с протоколом , и сделать более сложным монитор/отладчик (см. Ниже Мониторинг и отладка сети). Хотелось бы надеяться, что никогда не увидит протоколы 32768, но Мерфи сделал несколько законов, которые не позволяют нам делать это предположение.

В теории поля длины (ар $ ХЛН и ар $ PLN) являются избыточными, так как длина адреса протокола должен быть определен с помощью аппаратных средств типа (найденный в AR $ HRD) и тип протокола (найденный в ar $ pro). Он содержит для дополнительной проверки согласованности и для мониторинга сети и отладки (см. Ниже).

Код операции должен определить, является ли это запрос (который может вызвать ответ ) или ответ на предыдущий запрос. 16 бит для этого - overkill, но необходим флаг (поле).

Необходимо указать адрес аппаратной части отправителя и адрес протокола отправителя. Именно эти поля помещаются в таблицу перевода .

Адрес протокола цели необходимо в форме запроса о пакета, так что машина может определить, следует ли вводить информацию о отправителя в таблице или отправить ответ. Это не обязательно необходимо в форме ответа, если вы принимаете ответ только , спровоцированный запросом. Он включен для полноты, сетевого мониторинга и для упрощения предлагаемого алгоритма обработки , описанного выше (который не смотрит на код операции до тех пор, пока не будет отправлен информация об отправителе в таблицу).

Целевой аппаратный адрес включен для полноты и сети мониторинг. Он не имеет смысла в форме запроса, так как это номер , который запрашивает машина. Его значение в форме ответа - это адрес машины, подающей запрос. В некоторых версиях (которые, например, не смотрят на заголовок 14byte ethernet ), это может сэкономить некоторое перетасовку в регистре или стек , отправив это поле на драйвер оборудования в качестве аппаратного адрес назначения пакета ,

Между адресами нет пробелов. Пакетные данные должны рассматриваться как байтовый поток, в котором только 3 байтовых пары определены как - слова (ar $ hrd, ar $ pro и ar $ op), которые отправляются наиболее значимым байтом (Ethernet/PDP-10 байтовый стиль).

RFC 826 был обновлен RFC 5227 и RFC 5494.