Мне интересно, для чего используется маска сети в сетевом стеке Linux.

Давайте предположим, что у меня есть интерфейс eth0, настроенный на ip 1.1.1.1 и маску сети 255.255.255.0

сейчас я отправляю пакет в 1.1.1.2 и пакет в 1.2.3.4. Почему мой Linux-компьютер должен знать сетевую архитектуру для обслуживания этих двух запросов?

Я ожидаю, что в обоих случаях будет отправлен запрос arp, и для первого ответит реальный хост, а для второго ответит соответствующий маршрутизатор.

2 ответа2

2

Я ожидаю, что в обоих случаях будет отправлен запрос arp, и для первого ответит реальный хост, а для второго ответит соответствующий маршрутизатор.

Нет, маршрутизатор предоставляет ответ ARP, только если запрос ARP направлен на IP-адреса одного из собственных интерфейсов маршрутизатора.

Клиент использует маску сети, чтобы решить, является ли IP-адрес назначения локальным или должен маршрутизироваться.

Если клиент определяет, что пункт назначения находится за пределами локальной сети, он выбирает соответствующий маршрутизатор из своей таблицы маршрутизации. Часто это будет "шлюз по умолчанию", настроенный статически или, скорее всего, в настоящее время, DHCP, при запуске.

Затем клиент будет передавать запрос ARP, чтобы найти MAC-адрес для IP-адреса маршрутизатора, после получения ответа arp он может затем отправлять пакеты на маршрутизатор, которые имеют MAC-адрес маршрутизатора и IP-адрес конечного получателя. Клиент также сохраняет MAC-адрес и IP-адрес маршрутизатора в своем ARP-кеше, чтобы избежать необходимости выполнять дополнительные запросы ARP для той же информации.

0

Ваш локальный компьютер имеет кэш ARP. Это таблица ответов ARP для каждого IP-адреса. Вам не нужно 4 миллиарда записей в этом кэше. Маска сети сообщает вам, какие адреса следует кэшировать.

Тем не менее, соответствующий маршрутизатор (шлюз) также будет иметь локальный адрес, потому что он должен быть достижимым. (Вы можете явно настроить это также). Таким образом, пакеты к 1.2.3.4 фактически инициируют запрос ARP для настроенного адреса шлюза (скажем, 1.1.1.254). Поскольку это маршрутизатор, 1.1.1.254 не удивится, когда получит пакет для 1.2.3.4.

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