Вы путаете две вещи - ARP и Routing.
ARP
ARP (Address Resolution Protocol) используется для идентификации аппаратного адреса хоста в локальной сети (т. Е. Той же подсети).
Если A
(IP 10.0.1.2/24
) хотел установить связь с другим хостом (C
) с IP-адресом 10.0.1.5
, то произойдет следующее, если этот хост отсутствует в кэше:
A
вещает «ARP запроса»
- Использование широковещательного MAC-адреса (
ff:ff:ff:ff:ff:ff
)
- Запрос любого хоста с IP-адресом
10.0.1.5
для ответа
- Если удаленный хост (
C
) получает этот пакет, то он отвечает своим правильным MAC-адресом.
ARP также может происходить с опережением: хосты « объявляют » себя, пытаясь уменьшить задержку, связанную с поиском, хотя это может легко привести к подделке и отравлению.
маршрутизация
Маршрутизация позволяет узлу получать доступ к другим узлам, которые находятся за пределами " локальной " сети. Например, хост B
имеет IP-адрес 10.0.5.2
, который находится за пределами подсети хоста A
10.0.1.0/24
.
Чтобы получить пакеты на хост B
, хост A
должен отправить их через маршрутизатор (он же « шлюз »). Если маршрут по умолчанию не указан (или не настроен соответствующий конкретный маршрут), то хост недоступен.
Если маршрут существует, то A
- Используйте ARP, чтобы найти MAC-адрес маршрутизатора (
R1
)
- Отправьте пакет, адресованный IP
B
(10.0.5.2
), но используя MAC-адрес маршрутизатора R1
- Маршрутизатор
R1
выполнит тот же поиск, отправив пакет на MAC-адрес R3
(или R2
), но с IP-адресом B
- Это продолжается до тех пор, пока пакет не достигнет
B
или пока маршрутизатор не объявит, что он не может маршрутизировать к данному хосту.
Если это работает так, как предыдущий узел узнает MAC-адрес следующего узла?
ARP используется на каждом этапе, чтобы получить MAC-адрес следующего хоста. R1
хочет переслать пакет через R3
, поэтому он использует ARP для получения MAC-адреса R3
.