Я знаю, что, если хост назначения находится в другой сети, возвращаемый MAC-адрес - это MAC-адрес маршрутизатора, а не спроектированного хоста. Интересно теперь, как это работает. Если мое предположение верно, что когда отправитель отправляет широковещательную рассылку ARP, маршрутизатор проверяет, находится ли хост назначения в локальной сети, и если это так, пересылает широковещательное сообщение на хосты локальной сети, а если нет (хост назначения находится за пределами локальной сети), маршрутизатор. отвечает своим собственным MAC, не передавая сообщение в локальную сеть, избегая ненужного сетевого трафика?
2 ответа
Нет, это не работает, как вы описываете. Представьте, что локальные сети Ethernet разделены на сегменты, где каждый хост в сегменте может общаться друг с другом в сегменте. (Так изначально работал Ethernet, прежде чем все переходили на двухточечные соединения с коммутаторами). Итак, один сегмент выглядит так:
<--- 192.168.3.0/24 --->
---------------------------------------------------
| | | |
Router Host 1 Host 2 Host 3
192.168.3.254 192.168.3.1 192.168.3.2 192.168.3.3
|
... ----
Маска сети описывает допустимый диапазон IP-адресов в этом сегменте, в данном случае от 192.168.3.0 до 192.168.3.255.
Теперь давайте посмотрим на Host 1. Его сетевой адаптер будет иметь адрес 192.168.3.1/24
, поэтому он может отличать IP-адреса в локальной сети от других адресов. У него также будет запись о маршрутизации, которая просто говорит: «используйте 192.168.3.254 в качестве шлюза для каждого другого IP».
Поэтому, когда он отправляет пакет с каким-то IP-адресом, он будет знать, какой "локальный" IP-адрес в локальной сети использовать, либо непосредственно одному из локальных хостов, либо маршрутизатору с адресом шлюза.
Затем он ищет этот IP в локальном кэше ARP. Если IP-адрес отсутствует в кэше, независимо от того, является ли он IP-адресом маршрутизатора или другим IP-адресом хоста, и отправляет широковещательную рассылку Ethernet по локальной сети с содержимым "привет, у меня есть MAC-адрес 00:11:22:33:44:55, я ищу MAC-адрес IP 192.168.3.x ". И поле (маршрутизатор или хост) с IP-адресом 192.168.3.x отвечает "привет 00:11:22:33:44:55, у меня есть MAC-адрес 66:77:88:99:AA:BB, и я владелец IP-адреса 192.168.3.x ".
Это все, что происходит.
ARP не отправляется маршрутизатору, а ARP отправляется всей сети. Маршрутизатор или любой хост может ответить.
Я знаю, что, если хост назначения находится в другой сети, возвращаемый MAC-адрес - это MAC-адрес маршрутизатора, а не спроектированного хоста. Интересно теперь, как это работает.
Ваш компьютер будет смотреть на свою локальную таблицу маршрутизации. Если пункт назначения находится в локальной сети, что определяется локальным IP-адресом и маской, то компьютер попытается выполнить arp напрямую для адреса пункта назначения. Если пункт назначения не находится в локальной сети, и найден соответствующий маршрут, то компьютер выполнит arp для адреса шлюза, определенного в маршруте.