6

Мне интересно, есть ли у меня компьютер в подсети A с IP-адресом 192.168.123.1 и компьютер с IP-адресом 192.168.124.1 в другой подсети.

Обе сети связаны с маршрутизатором. Если я хочу сейчас отправить пакет с компьютера A на компьютер B, мне придется использовать ARP, чтобы получить их MAC-адрес для отправки кадра (предположим, что кэш ARP пуст).

Мой вопрос сейчас: как бы выглядел этот ARP-запрос, у меня есть два возможных метода:

  1. Компьютер A видит, что IP-адрес компьютера B находится за пределами его собственной подсети. Он решает отправить пакет на свой шлюз по умолчанию (маршрутизатор) и отправляет запрос ARP с IP-адресом маршрутизатора. Далее: маршрутизатор отвечает своим MAC-адресом, и кадр отправляется маршрутизатору, который позаботится о кадре.

  2. Компьютер A "тупой" и отправляет запрос ARP с IP-адресом B. Маршрутизатор достаточно умен и видит, что IP-адрес находится в его маршрутной таблице. И отвечает своим собственным MAC-адресом. Затем компьютер A отправляет кадр маршрутизатору, думая, что это компьютер B. Маршрутизатор отправляет пакет на компьютер B.

Недостатком второго подхода является то, что когда вы переходите на Google, он выполняет запрос arp с IP-адресом Google. Маршрутизатор ответит своим, так как знает, как добраться до Google. В следующий раз, когда вы зайдете на другой веб-сайт, вам придется снова сделать то же самое и отправить запрос arp с IP-адресом этого веб-сайта. Это приведет к множеству запросов arp (по одному на каждый сайт). И кеш arp станет очень большим.

Я действительно не знаю ответ. Я нашел два YouTube videos- этот и этот один -Каждый рассказывал мне разные вещи:

Я надеюсь, что кто-нибудь может мне помочь.

2 ответа2

9

Это "метод А". Запросы ARP для адресов вне подсети вообще не будут отправляться. Единственным ARP-запросом будет IP-адрес шлюза .

Если вы просто настроили 192.168.123.1/24 для компьютера A и больше ничего не делаете, у него будет таблица маршрутизации, подобная этой:

  • 192.168.123.0/24 к устройству eth0
  • 0.0.0.0/0 к шлюзу 192.168.123.254 устройство eth0

В такой таблице маршрутизации первая запись объявляет, что 192.168.123.0/24 локально - доступен через eth0 без шлюза - поэтому попытка связаться с 192.168.123.42 действительно отправит запрос ARP для 192.168.123.42 .

Однако для второй записи определен шлюз, поэтому предполагается, что он не является локальным, и ОС не беспокоит отправку запросов ARP для этих других IP-адресов, поскольку она уже знает, что не может достичь их. Поэтому он будет напрямую отправлять запрос ARP для адреса шлюза и ничего больше.

(Вы можете убедиться в этом, просто взглянув на кэш ARP; ip neigh или arp -a зависимости от операционной системы; или с помощью инструмента захвата пакетов, такого как tcpdump или Wireshark.)

В большинстве операционных систем вы, конечно, можете добавить маршруты, явно сообщающие ОС, что определенные подсети являются локальными (например, ip route add 192.168.124.0/24 dev eth0).

1

Протокол разрешения адресов и протокол обнаружения соседей (IPv6) используются только в том случае, если не совпадает ни один другой маршрут, кроме интерфейсного. Если есть соответствующий маршрут, будь то по умолчанию или явный, с указанным шлюзом свяжутся. Разумеется, для разрешения адреса шлюза все еще используется ARP/NDP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .