6

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

Это заставляет меня задуматься, почему мы вообще используем IP-адреса в локальной сети. Учитывая сценарий, в котором все системы находятся в одной подсети, может показаться, что IP-адреса в этом случае являются излишними, поскольку системы действительно используют MAC-адреса только для маршрутизации обмена данными между собой.

Могут ли компьютеры фактически обходиться без IP-адресов полностью, если им не нужно обмениваться данными вне сегмента локальной сети? Почему не они?

4 ответа4

6

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

Более того, MAC специфичен для Ethernet, и хотя сейчас он является методом инкапсуляции 2-го уровня, это не всегда так, и вы никогда не узнаете, появится ли что-то лучшее в будущем.

5

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

Некоторые другие возможные причины

  • Возможно, вы захотите использовать IP-адреса, чтобы помочь вспомнить, что что-то есть (маршрутизатор оканчивается на .1 )
  • Возможно, вы захотите запустить две сети в одном сегменте, которые не общаются друг с другом (вы можете сделать это с помощью IP через подсети)
  • MAC-адреса не легко запомнить.
3

Короче говоря, нет ... вам не нужны IP-адреса для подключения компьютеров в одной сети. Есть несколько примеров таких протоколов, как: IPX или Banyan.

Проблема с использованием аппаратных адресов лучше всего описывается так:

Представьте на мгновение, что компьютеры - это люди в комнате ... (все приклеены к одному месту и не могут передвигаться) Если Боб хочет поговорить с Сьюзи ... он кричит "Эй, Сьюзи" ... и Сьюзи отвечает ... и начинается разговор. Отлично верно? Конечно ... в небольшом масштабе это работает довольно хорошо и фактически регулярно используется в некоторых сетевых протоколах между двумя (или несколькими) устройствами. (Многие протоколы с высоким I/O используют не IP протоколы, потому что они намного "проще" и точно настроены для этой задачи.) Интернет (как мы его знаем сегодня) - это не просто 2 ... или несколько человек, говорящих друг с другом напрямую. Интернет буквально МИЛЛИАРДЫ устройств. Если бы они все были помещены в одну "комнату" (сегмент сети) ... Представь, что случится, если Боб захочет поговорить с Сьюзи. Боб будет кричать "Эй, Сьюзи!"... и голос Боба будет потерян в толпе. (Строительство комнаты для МИЛЛИАРДОВ людей одинаково смешно.)

По этой причине сети segmented на "меньшие комнаты", которые позволяют людям, находящимся в одном и том же segment (комнате), общаться напрямую друг с другом, но людям за пределами комнаты необходим какой-то router для передачи сообщений из одной комнаты в Следующая комната. Но огромное количество комнат означает, что вам нужна какая-то схема адресации, чтобы различные routers в середине знали, как передать сообщение от Боба к Сьюзи. С помощью протокола IP они назначают subnet для каждой "комнаты", а маршрутизаторам говорят, как передать сообщение из одной комнаты в другую. Например, если адрес Боба - 1.1.1.1, адрес Сьюзи - 2.2.2.2, а subnet Боба - 1.1.1.0/24 (это означает, что первые 3 байта его адреса должны совпадать, чтобы он находился в его комнате), Боб должен передать его сообщение router чтобы его можно было передать в "комнату Сьюзи" *. Боб знает, что его router - 1.1.1.2, поэтому он передает сообщение router , и маршрутизатор передает его другим маршрутизаторам посередине, пока сообщение не будет передано маршрутизатору Сьюзи в 2.2.2.1, который передает сообщение непосредственно Сьюзи. ... и Сьюзи может отправить ответ Бобу таким же образом.

Компьютеры в одной и той же subnet действительно взаимодействуют друг с другом напрямую, используя MAC-адрес. На самом деле он начинается с отправки запроса ARP (ARP = Address Resolution Protocol), что означает, что он выкрикивает: «У кого есть адрес XXXX?«... и тот, кто имеет этот адрес, отвечает, и с этого момента они продолжают напрямую общаться друг с другом.

(Я могу продолжить эту аналогию и объяснить гораздо больше о том, как работает Интернет, если вы действительно заинтересованы.)

1

Теоретически, нет причин, по которым мы не могли бы просто использовать MAC-адреса Ethernet для связи в сегменте локальной сети.

На самом деле, как кто-то упомянул выше, это примерно так: ваш ноутбук отправляет ARP-запрос со словами «Я 11: 22: 33: aa: bb: cc, мой IP-адрес 10.10.10.20 - у кого 10.10 .10.10?«Ваш NAS отвечает:« Я xxx10, а мой MAC-адрес - aa: bb: cc: 11: 22: 33!». Последующие пакеты между вашим ноутбуком и NAS будут иметь соответствующий MAC-адрес в заголовке кадра Ethernet.

Итак, почему я говорю «в теории»?

На практике стандарт Ethernet обеспечивает механизм, с помощью которого устройства могут находить друг друга в сегменте сети; это полезно, потому что это означает, что устройства, которые не участвуют в сетевом разговоре, не должны слушать его, и что коммутаторы могут отслеживать, к какому физическому порту подключено каждое устройство. Это уменьшает количество сетевых разговоров в сегменте и увеличивает общую пропускную способность сети.

К сожалению, есть много замечательных вещей, которые предоставляет стек TCP/IP, которые Ethernet не предоставляет, и на то есть веские причины. Эти недостающие функции должны быть реализованы разработчиками каждого сетевого приложения, что является огромной работой, когда каждая современная операционная система имеет, по крайней мере, стек TCP/IPv4 и, вероятно, также имеет IPv6 один.

Существует также простой факт, что простая сеть часто не остается простой - рано или поздно вам захочется подключить вашу локальную сеть к Интернету или к другой локальной сети; IP маршрутизируемый, MAC-адреса нет.

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