Зачем нужно отправлять ARP для запроса MAC-адреса, если IP-адрес уже уникален?

Зачем нужно отправлять ARP для запроса MAC-адреса, если IP-адрес уже уникален?

В обычных сетях, если каждый хост имеет уникальный IP-адрес, распознаваемый станциями в сети, почему MAC-адрес все еще необходим?

Предположим, что станция A хочет отправить данные станции B. Станция A знает IP-адрес станции B. Но станция A все равно отправит ARP-запрос на MAC-адрес B перед отправкой. А затем, получив MAC-адрес B, A отправит данные с MAC-адресом B в качестве адреса назначения.

Почему B не может просто принять пакет так же, как он отвечает на ARP, отправленный A? Тогда, таким образом, станции A не нужно было бы отправлять ARP, чтобы запросить MAC-адрес, и это также устранило бы необходимость иметь MAC-адрес. Более того, IP-адреса уникальны среди сетевых станций, зачем нужен еще один MAC-адрес для распознавания станций?

решение1

Потому что вам нужен уникальный идентификатор, встроенный в сетевую карту для идентификации станции в случае, если у вас нет IP-адреса. Или как система должна получить действительный IP-адрес с помощью DHCP, когда нет идентификации станции, которая хочет его получить?

А поскольку IP — не единственный протокол, который можно передавать по Ethernet, сам Ethernet должен предоставлять уникальный идентификатор, чтобы разрешить использование различных протоколов.

решение2

Во-первых, позвольте мне поддержать ответ Дэна; надлежащее исследование предмета гораздо лучше, чем задавать вопросы, каждый из которых проливает лишь один свет в темноту. Я бы рекомендовалTCP/IP Стивена в иллюстрациях, который является сетевой библией; мой экземпляр Тома 1 практически сломан у корешка от чрезмерного использования. Но поскольку вы задали вопрос, и я набрал половину ответа, когда появился вопрос Дэна, позвольте мне нажать «Опубликовать в любом случае», в шляпе Старого Админа.

Отчасти, это исторически сложилось. MAC-адреса — это уровень 2, а IP-адреса — уровень 3 (см., например,эта страница Википедиидля более подробной информации о слоях).

Почему такое разделение? Ну, когда был изобретен Ethernet, IP не был единственной сетевой технологией, которая могла работать в сети Ethernet. Я сам в середине 80-х широко использовал DECnet, работающий поверх Ethernet, и у него не было IP-адресов. Более того, вполне возможно запускать IP поверх сетевых технологий, отличных от Ethernet, у которых нет MAC-адресов; на ум приходят сети Token-Ring, а также SLIP).

Если бы Ethernet и IP были спаяны вместе, как вы предлагаете, ни одно из вышеперечисленных действий не было бы возможным. Да, в ретроспективе ясно, что IP был Большим Победой в межсетевом взаимодействии, но это не было так очевидно в 1981 году, и разделение двух уровней было определенно Правильным Делом в то время.

решение3

xENOn, Это вопрос, который я задавал себе много раз в прошлом. Дело в том, что он довольно произволен, потому что, как любезно упомянул MadHatter, существуют типы IP-сетей, которые хорошо работают без необходимости в физическом адресе. То есть, нет теоретической необходимости в дополнительном типе адреса. Однако MAC-адрес удобен, когда IP-адреса распределяются автоматически, например, по DHCP, потому что DHCP-сервер должен однозначно знать, какой хост получил какой IP-адрес или что ни одному хосту не предоставлены незапрошенные дополнительные IP-адреса. Без MAC-адреса вам пришлось бы вручную устанавливать IP-адреса для каждого хоста, т. е. не очень практично, когда у вас большое количество хостов, и что-то вроде кошмара для ИТ-администраторов. Когда дело доходит до локальных соединений Ethernet, у вас нет особого выбора, так как подсистема Ethernet распознает только кадры Ethernet, то есть каждая схема интерфейса Ethernet отфильтровывает все кадры Ethernet, которые не имеют ни своего собственного, ни широковещательного/многоадресного MAC-адреса в качестве адреса назначения. Только те кадры, которые выдержали эту фильтрацию на переднем конце, фактически доставляют свою полезную нагрузку IP на уровень IP. Надеюсь, это немного помогло вам прояснить тайну.

Связанный контент