
В обычных сетях, если каждый хост имеет уникальный 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. Надеюсь, это немного помогло вам прояснить тайну.