|
|
Компьютеры - ARP - Принцип работы30 мая 2011
Оглавление: 1. ARP 2. Вариации ARP-протокола 3. Принцип работы 4. ARP кэш
- Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно.
- Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным.
- В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес.
Структура пакета
Ниже проиллюстрирована структура пакета, используемого в запросах и ответах ARP. В сетях Ethernet в этих пакетах используется EtherType 0x0806, и рассылаются широковещательно MAC-адрес — FF:FF:FF:FF:FF:FF. Отметим, что в структуре пакета, показанной ниже в качестве SHA, SPA, THA, & TPA условно используются 32-битные слова — реальная длина определяется физическим устройством и протоколом.
+ |
Bits 0 — 7 |
8 — 15 |
16 — 31 |
0 |
Hardware type |
Protocol type |
32 |
Hardware length |
Protocol length |
Operation |
64 |
Sender hardware address |
? |
Sender protocol address |
? |
Target hardware address |
? |
Target protocol address |
|
- Hardware type
- Каждый транспортный протокол передачи данных имеет свой номер, который хранится в этом поле. Например, Ethernet имеет номер 0x0001.
- Protocol type
- Код протокола. Например, для IPv4 будет записано 0x0800.
- Hardware length
- Длина физического адреса в байтах. Ethernet адреса имеют длину 6 байт.
- Protocol length
- Длина логического адреса в байтах. IPv4 адреса имеют длину 4 байта.
- Operation
- Код операции отправителя: 1 в случае запроса и 2 в случае ответа.
- Sender hardware address
- Физический адрес отправителя.
- Sender protocol address
- Логический адрес отправителя.
- Target hardware address
- Физический адрес получателя. Поле пусто при запросе.
- Target protocol address
- Логический адрес получателя.
Пример запроса
Если хост с IPv4 адресом 10.10.10.123 и MAC адресом 00:09:58:D8:11:22 хочет послать пакет другому хосту с адресом 10.10.10.140, но не знает его MAC адрес, то он должен послать ARP запрос для разрешения адреса.
Пакет, изображённый ниже, изображает широковещательный запрос. Если хост с IP 10.10.10.140 присутствует в сети и доступен, то он получает этот запрос ARP и возвращает ответ.
+ |
Bits 0 — 7 |
8 — 15 |
16 — 31 |
0 |
Hardware type = 0x0001 |
Protocol type = 0x0800 |
32 |
Hardware length = 6 |
Protocol length = 4 |
Operation = 1 |
64 |
SHA = 0x000958D8 |
96 |
SHA = 0x1122 |
SPA = 0x0A0A |
128 |
SPA = 0x0A7B |
THA = 0x0000 |
160 |
THA = 0x00000000 |
192 |
TPA = 0x0A0A0A8C |
|
Пример ответа
В ситуации, описанной выше, если узел с адресом 10.10.10.140 имеет MAC адрес 00:09:58:D8:33:AA, то он отправит в ответ пакет, проиллюстрированный ниже. Заметим, что блоки адресов отправителя и получателя теперь поменяли значения. Кроме того, узел 10.10.10.140 заполнил свой MAC-адрес в поле физического адреса отправителя.
Любой узел в той же сети, что и отправитель с получателем, тоже получит запрос и таким образом добавит в свой кэш информацию об отправителе. Ответ ARP направлен только источнику запроса ARP, поэтому ответ ARP не доступен другим узлам в сети.
+ |
Bits 0 — 7 |
8 — 15 |
16 — 31 |
0 |
Hardware type = 0x0001 |
Protocol type = 0x0800 |
32 |
Hardware length = 6 |
Protocol length = 4 |
Operation = 2 |
64 |
SHA = 0x000958D8 |
96 |
SHA = 0x33AA |
SPA = 0x0A0A |
128 |
SPA = 0x0A8C |
THA = 0x0009 |
160 |
THA = 0x58D81122 |
192 |
TPA = 0x0A0A0A7B |
|
- Замечание: Длина полей SHA, SPA, THA, TPA зависит от параметров Hardware length и Protocol length соответственно
Просмотров: 4812
|