Какое точное использование MAC-адреса?


126

Я понимаю, что IP-адреса являются иерархическими, поэтому маршрутизаторы в Интернете знают, в каком направлении следует пересылать пакеты. В случае MAC-адресов иерархия отсутствует, и, следовательно, пересылка пакетов невозможна. Таким образом, MAC-адреса не используются для передачи пакетов.

Я не думаю, что он сидит там без причины. Итак, мой вопрос, где именно MAC-адрес вступает в игру во время передачи пакета?

Ответы:


57

TL; DR> MAC-адреса являются компонентом низкого уровня сети Ethernet (и некоторых других аналогичных стандартов, таких как WiFi). Они позволяют устройству обмениваться данными с машиной в локальной физической сети (ЛВС) и не могут маршрутизироваться через Интернет - поскольку теоретически физическое оборудование может быть подключено в любой точке мира.

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

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

Если мы когда-нибудь найдем лучший стандарт, чем IP (например, IPv6, если все адреса IPv4 закончились), большинство оборудования Ethernet сможет передавать новый тип трафика без изменений - и простое обновление программного обеспечения / микропрограммного обеспечения исправит большинство остальных.

MAC-адреса необходимы для работы локальной сети Ethernet (или Wi-Fi). Они позволяют сетевому устройству привлекать внимание одного напрямую подключенного устройства, даже если физическое соединение используется совместно. Это может быть важно, когда тысячи устройств соединены вместе в рамках одной организации. Они не выполняют никакой функции в более широком Интернете.

Чтобы действительно понять ответ на этот вопрос, вам нужно понять модель OSI (иногда называемую 7-уровневой) .

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

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

Вместо этого проблема сетевого взаимодействия была разделена на уровни, и каждый уровень знал, как разговаривать с соответствующим уровнем на удаленном компьютере и как общаться с уровнем, расположенным ниже (а иногда и выше), на локальном компьютере. Он вообще ничего не знал о любых других существующих слоях - поэтому вашему веб-браузеру не нужно заботиться о том, работает ли он на машине, использующей токен-кольцо, сеть Ethernet или Wi-Fi, - и определенно не нужно знать, какое оборудование удаленная машина использует.

Для этого в 7-слойной модели используется система, похожая на вложенные конверты; приложение создает свои данные и помещает их в конверт для доставки операционной системой. ОС оборачивает это в другой конверт и передает его сетевому драйверу. Сетевой драйвер оборачивает это в еще один конверт и помещает его на физический кабель. И так далее.

Нижний слой, уровень 1 , является физическим уровнем. Это слой проводов, транзисторов и радиоволн, и на этом уровне связь - это, в основном, просто поток единиц и нулей. Данные идут везде, где есть физическая связь. Вы подключаете сетевой порт вашего компьютера к коммутатору с помощью кабеля CAT-5.

Уровень 2 является канальным уровнем. Это обеспечивает некоторую структуру для тех и других, некоторые возможности обнаружения и исправления ошибок, а также некоторую информацию о том, какое физически подключенное устройство (физические соединения здесь могут фактически быть через Wi-Fi) следует обратить внимание на сообщение. Это тот уровень, на который MAC-адреса вступают в игру, и мы вернемся к нему позже. Но MAC-адреса не единственная возможность на этом уровне. Например, для сетей Token Ring требуется другая реализация канала передачи данных.

Уровень 3 является сетевым уровнем. Это тот уровень, на котором работает IP (хотя это и не единственный протокол сетевого уровня), и именно он позволяет компьютерам отправлять сообщения, которые могут попасть на любой компьютер в любом месте «сети». Между этими машинами не должно быть прямой связи.

Уровни 4-7 являются протоколами более высокого уровня. Они все дальше удаляются от оборудования и приближаются к приложению. TCP, например, расположен поверх IP и предоставляет механизмы, которые автоматически пересылают сообщения, когда они пропадают.

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

Предположим, у меня есть приложение, которое хочет отправить данные на компьютер с IP-адресом 8.8.8.8.

Уровень 3 упаковывает данные в конверт, который содержит, помимо прочего, IP-адрес 8.8.8.8, а затем передает его на уровень 2.

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

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

В качестве альтернативы, если IP-адрес отсутствует в локальной сети, для нового конверта будет настроен MAC-адрес шлюза по умолчанию (т. Е. Маршрутизатора), настроенного для этого сетевого интерфейса, и оборудование будет передавать пакет на маршрутизатор.

Маршрутизатор замечает свой собственный MAC-адрес в конверте уровня 2 и открывает пакет уровня 2. Он просматривает IP-адрес на конверте 3-го уровня и определяет, куда должно идти сообщение, которое, вероятно, будет маршрутизатором вашего интернет-провайдера. Если маршрутизатор использует NAT (или аналогичный), он может даже изменить конверт уровня 3 на этом этапе, чтобы сохранить ваши внутренние IP-адреса закрытыми. Затем он обернет конверт уровня 3 в новый конверт уровня 2, который адресован MAC-адресу маршрутизатора интернет-провайдера, и отправит туда сообщение.

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

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

Но все это работает, почти как волшебство!

Обратите внимание, что сетевые коммутаторы могут использовать MAC-адреса для оптимизации потока сетевого трафика. В то время как концентратор Ethernet просто перенаправляет весь входящий трафик на все свои порты, в отличие от этого, коммутатор может перенаправлять трафик только на один порт, к которому подключен MAC-адрес назначения пакета. Это увеличивает эффективную пропускную способность сети; ориентируясь на определенные порты, коммутатор избегает пересылки трафика в ненужные сегменты сети. Коммутатор будет использовать ARP или перехват пакетов, чтобы определить, какие устройства подключены к какому порту. Коммутаторы полностью игнорируют содержимое пакетов уровня 2.


Здравствуй! Спасибо за ответ. Насколько я прочитал, ваш ответ самый лучший. Было бы здорово, если бы вы включили в свой сценарий еще несколько понятий, таких как ARP и NAT.
Вишну Вивек

1
Добавлена ​​ссылка на ARP и сетевые коммутаторы. Я не думаю, что NAT имеет какое-либо отношение к MAC-адресам, будучи функцией уровня 3 ...
Билл Мичелл

@BillMichell: в IPv6 для создания IP-адреса может использоваться MAC или другой локальный («аппаратный») идентификатор.
Лучано

Ответ сообщества Wiki. Вероятно, вы можете отредактировать ее, включив эту дополнительную информацию, если считаете, что она поможет ответить на вопрос ОП.
Билл Мичелл

Для этого нужен TL; DR.
AJMansfield

113

Для чего используются MAC-адреса?

MAC-адреса - это низкоуровневые основы, которые обеспечивают работу вашей локальной сети на основе Ethernet. Локальный означает, что сетевые устройства напрямую подключены через кабель, WiFi или через сетевой концентратор или сетевой коммутатор.

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

Существуют специальные MAC-адреса, например, ff: ff: ff: ff: ff: ff, который является широковещательным адресом и адресом каждого сетевого адаптера в сети.

Как IP-адреса и MAC-адреса работают вместе?

IP - это протокол, который используется на уровне выше Ethernet. Другой протокол, например, будет IPX. IP позволяет соединять различные локальные сети и, таким образом, формировать корпоративную сеть или глобальный Интернет.

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

До сих пор, похоже, дела шли хуже, потому что теперь у нас есть два IP-адреса: один - целевой адрес исходного IP-пакета, другой - IP-адрес устройства, на которое мы должны отправить пакет (следующий переход, либо последний пункт назначения или маршрутизатор).

Поскольку Ethernet использует MAC-адреса, отправителю необходимо получить MAC-адрес следующего перехода. Для этого используется специальный протокол ARP (протокол разрешения адресов). Как только отправитель извлекает MAC-адрес следующего перехода, он записывает этот целевой MAC-адрес в пакет и отправляет пакет.

Как работает ARP?

ARP сам по себе является протоколом выше Ethernet, как IP или IPX. Когда устройство хочет узнать MAC-адрес для данного IP-адреса, оно отправляет пакет на широковещательный MAC-адрес с вопросом «У кого есть IP-адрес гггг?» Все устройства получают этот пакет, но только одно устройство с IP-адресом yyyy ответит пакетом «Это я». Запрашивающее устройство получает ответ и теперь знает, что MAC-адрес источника пакета ARP является правильным MAC-адресом для использования. Конечно, результат будет кэширован, поэтому устройству не нужно каждый раз разрешать MAC-адрес.

маршрутизация

Я почти забыл упомянуть: нет маршрутизации на основе MAC-адресов. Ethernet-адреса низкого уровня и MAC-адреса могут быть доступны только каждому устройству в одной сети (кабельное или беспроводное). Если у вас есть две сети с маршрутизатором между ними, вы не можете иметь устройство в сети A, чтобы отправить пакет на MAC-адрес устройства в сети B. Ни одно устройство в сети A не имеет MAC-адрес устройства в сети B, поэтому Пакет с этим MAC-адресом будет отброшен всеми устройствами в сети A (также маршрутизатором).

Маршрутизация осуществляется на уровне IP. Проще говоря, маршрутизатор просто делает то, что я описал выше в разделе «Как работают IP-адреса и MAC-адреса?». Маршрутизатор будет получать пакеты для своего собственного MAC-адреса, но для другого IP-адреса. Затем он проверит, может ли он напрямую достичь целевого IP-адреса. Если это так, он отправляет пакет к цели. В противном случае сам маршрутизатор также настроил вышестоящий маршрутизатор и отправит пакет этому маршрутизатору.

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

Другие варианты использования для MAC-адресов

  1. Сетевые коммутаторы хранят список MAC-адресов, видимых на каждом порту, и только перенаправляют пакеты на порты, которые должны видеть пакет.

  2. Точки беспроводного доступа часто используют MAC-адреса для контроля доступа. Они разрешают доступ только для известных устройств (MAC-адрес уникален и идентифицирует устройства) с правильной парольной фразой.

  3. DHCP-серверы используют MAC-адрес для идентификации устройств и дают некоторым устройствам фиксированные IP-адреса.


16
+1 за фактический ответ на вопрос таким образом, что люди, которые еще не знают ответа, могут понять.
пушистый

Я не могу помочь, но чувствую желание создать потрясающую инфографику / диаграмму, способ взаимодействия MAC / IP довольно интересен!
NRGdallas

1
хороший ответ, просто деталь: MAC-адреса также используются для устройств, не относящихся к Ethernet, и, как вы описали, в основном подходит для любого канального уровня, используемого со стеком IP
Крисс

Стоит обратить внимание на Wi-Fi MAC: хотя они, как правило, уникальны и могут использоваться для идентификации устройств, их легко подделать и отправить в открытом виде по воздуху. Если в соединении не используется другое шифрование / аутентификация или если другие механизмы шифрования / аутентификации являются слабыми (например, WEP), злоумышленнику очень просто выдать себя за авторизованное устройство и подключиться к сети.
Изи

1
@Rick Вы правы, IP-адрес назначения для соединения не меняется. Но в процитированном параграфе я говорил о прямом назначении пакета - который мог бы быть маршрутизатором, и маршрутизатор мог измениться во время соединения. Что касается вашего второго комментария, я изменил текст на «исходный MAC-адрес пакета ARP». Я надеюсь, что это более понятно.
Вернер Хенце

47

MAC-адрес (Media Access Control address) в целом является идентификатором устройств в сети. Таким образом, каждый сетевой адаптер (контроллер сетевого интерфейса, найденный в маршрутизаторе, компьютере, сетевом принтере, сервере и т. Д.) Имеет MAC-адреса. Некоторые серверы имеют более одной встроенной сетевой карты и поэтому имеют несколько MAC-адресов. MAC-адрес имеет длину 6 байт (6 октетов). Слева - самый старший байт, а справа - младший байт. Как вы можете видеть на рисунке ниже, первые 3 байта являются уникальным идентификатором организации . Это указывает на производителя, который сделал это устройство.

Вот список Организационно уникального идентификатора : Standards.ieee.org

Вот альтернатива вышеупомянутому: MAC-Vendor-Lookup

Несколько примеров распространенных известных производителей:

  • 00-05-5D (D-Link Systems Inc.)
  • 00-09-5B (Netgear Inc.)
  • 00-E0-4C (Realtek Semiconductor Corp.)
  • 00-E0-4F (Cisco Systems Inc.)
  • 00-E0-64 (Samsung Electronics)

Последние 3 байта (3 октета) случайным образом назначаются производителем.

Как правильно указал pjc50, MAC-адрес в сети Ethernet помогает коммутаторам решить, какой пакет куда отправить. Существует также широковещательный MAC-адрес. ff: ff: ff: ff: ff: ff используется для широковещательного MAC-адреса. Обратите внимание, что MAC-адрес можно изменить, поэтому будьте осторожны, используя его в качестве определенного идентификатора устройства! MAC-адрес также используется с протоколом ARP (Address Resolution Protocol). Итак, как это работает, ПК A отправляет ARP-запрос на ПК B со своим собственным IP-адресом, MAC-адресом, IP-адресом получателя и широковещательным адресом, упомянутым выше (ff: ff: ff: ff: ff : и далее). После этого ПК Б проверяет, был ли Пакет отправлен ему или нет. Если да, то ПК B отправляет обратно свой собственный MAC-адрес, IP-адрес, MAC-адрес получателя и IP-адрес получателя. Другие устройства отбрасывают пакет.

И ПК A, и B обычно сохраняют успешное соединение в так называемом ARP-кэше. Способ, которым ПК сохраняют соединение, отличается от устройства к устройству. Если вы не знаете IP-адрес, вы можете получить IP-адрес с помощью протокола обратного разрешения адресов (RARP). С помощью RARP устройство связывается с центральным клиентом и запрашивает IP-адрес. Но этот метод в наши дни практически не используется.

Следующие технологии используют формат идентификатора MAC-48:

  • Ethernet
  • Беспроводные сети 802.11
  • блютус
  • IEEE 802.5 Token Ring
  • большинство других сетей IEEE 802
  • FDDI
  • ATM (только коммутируемые виртуальные соединения, как часть адреса NSAP) Fibre Channel и Serial Attached SCSI (как часть всемирного имени)

4
Более точно , чем «каждое устройство (...) есть MAC-адрес.», Каждый сетевой адаптер имеет A MAC - адрес . (Не принимая во внимание возможность установки собственного MAC-адреса.) Не все принтеры имеют встроенные сетевые карты, и многие серверы имеют более одной сетевой карты и, следовательно, более одного MAC-адреса.
CVn

2
Допустим, ПК-1 отправляет пакет на ПК-2. Теперь коммутатор считывает только MAC-адрес ПК-1 и сохраняет его в таблицу. Если вам нужна дополнительная информация о том, как это работает, прочитайте это: Как работают коммутаторы локальной сети :)
Meintjes

3
Другой момент заключается в том, что MAC-адрес - это то, как NIC решает, что отбрасывать и что отправлять процессору для обработки. Фрейм Ethernet, обнаруженный на проводе, имеет свой MAC-адрес назначения XOR'd с MAC-адресом NIC, и если результат равен 0, то это кадр, предназначенный для этого NIC.
bbayles

7
-1: вопрос, заданный, как используются MAC-адреса, а не каков MAC-адрес. Единственная часть вашего ответа, которая касается вопроса, - это список маркеров в конце, и он не вдавается в подробности.
Кевин

4
Изображение взято из Википедии: en.wikipedia.org/wiki/File:MAC-48_Address.svg , изображения, лицензированные по лицензии Creative Commons, при использовании должны быть приписаны их авторам.
Этьен

24

Они будут использоваться для передачи пакетов: по сети Ethernet, существует целый ряд устройств, а также MAC - адрес определяет , какое устройство должно принимать пакет. Коммутаторы Ethernet будут использовать его для выбора порта, на который будет отправляться полученный пакет.


5
Может быть интересно отметить, что Ethernet изначально был средой шины, где все машины физически использовали один и тот же носитель (это все еще верно для беспроводных сетей). Так что логически это работает так.
LawrenceC

и все еще верно для сетей, которые все еще используют концентраторы :)
Doon

впредь коммутаторы - это просто средство (действительно широко распространенное с локальными сетями RJ-45), у нас есть и есть IP-сети без них (с использованием концентраторов или 802.11)
Крис

7

Забудьте иерархию в этом случае, это не очень важный вопрос.

MAC-адрес - это адреса для уровня 2 (канального уровня) в моделях ISO / OSI или TCP / IP. IP-адреса из уровня 3 (сетевой уровень) в тех же моделях.

В сети уровня 2, например в обычной сети Ethernet, существует домен коллизий, в котором все подключенное оборудование может принимать все кадры (данные блока уровня 2) из ​​любой конечной точки. Но никто за пределами сети не может получить эти кадры. MAC-адреса - это адреса в этих доменах.

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

Коммутаторы являются устройствами уровня 2 и передают кадры с использованием таблиц MAC-адресов. Маршрутизаторы являются устройствами уровня 3, и они пересылают пакеты, используя таблицы IP-адресов.


6

Ethernet предполагает, что другой компьютер (другой MAC), с которым он хочет общаться, напрямую доступен из сетевого адаптера. IP нет. IP предполагает, что он может достичь любого другого IP-адреса во всем мире, и если он не может достичь его в текущей подсети, маршрутизатор перенесет его туда, несмотря на NAT. Понятие шлюзов не существует на уровне 2 или Ethernet.

Если у вас есть несколько машин, подключенных к коммутатору, и вам никогда не понадобится обмениваться трафиком с другими сетями / Интернетом через маршрутизатор, то вам действительно не нужно иметь запущенный IP-адрес. Конечно, приложение должно было бы реализовать или предоставить собственный протокол выше уровня 2, так как практически все ОС и приложения предполагают, что вы всегда хотите использовать TCP / IP.

Всегда помните, что «Интернет» в IP означает «межсетевое взаимодействие », означающее, что на самом деле он связан с получением трафика между сетями больше, чем в сети, хотя, очевидно, его можно (и также) использовать для этого.


Первый абзац - идеальный ответ! Осветительный!
Milind R

6

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

Если адаптер Ethernet будет знать что-либо об IP, то мы должны обновить все наши прошивки, чтобы перейти на новый протокол (например, с IPv4 на IPV6).

Также в MAC-адресе есть информация о производителе.


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

5

Он используется, когда ARP (протокол разрешения адресов) для IPv4 или NDP (протокол обнаружения соседей) для IPv6 преобразует IP-адреса в MAC-адреса, чтобы определить, какому уникальному хосту должны быть отправлены кадры.


Это довольно близко, но это не охватывает все использование. Вот как MAC относится к TCP / IP, но MAC используется не только для этого. Это первый ответ, который я не даю -1, хотя (работает снизу вверх).
Марк Хендерсон

@ Марк Хендерсон Спасибо за критику. Ну, я просто попытался ответить на вопрос, How MAC addresses were used in packet transferа затем я предположил, что это было на уровне Ethernet. И да, это простой ответ, но я отвечаю на уровне, который соответствует моему уровню :)
Джеспер Дженсен

3

Чтобы завершить ответы других, я бы добавил, что MAC-адрес еще более важен для маршрутизаторов, чем для коммутаторов. Что я имею в виду под более важным, так это то, что коммутаторы на самом деле не нужны для существования IP-сети. Если вы посмотрите на 20 лет назад (до RJ-45) Локальные IP-сети работали идеально без коммутаторов, не маршрутизированные сети Ethernet просто подключали устройства по одному и тому же проводу (например, посмотрите на технологию X base-T ethernet).

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

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

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

Вы также должны заметить, что MAC-адреса сегодня обычно означают либо MAC-48 (адрес физического устройства), либо EUI-48 (адрес логического устройства), либо даже 8-байтовые адреса EUI-64, используемые в больших сетях. Исторически MAC был изобретен Xerox для технологии Ethernet и впоследствии повторно использовался для других технологий сетевого транспорта (802.11, Bluetooth, FibreChannel, BlueTooth), необходимых для идентификации устройства.

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

Некоторые другие типы идентификаторов узлов устройств существуют для не IP-стеков. Например, X.25 полагается не на MAC-адреса, а на виртуальные каналы, устанавливаемые для каждого соединения, или устройства ATM идентифицируются в сетях ATM с использованием SNPA. Но ни X.25, ни ATM не являются IP-стеками (и даже ATM использует формат MAC-адресов в качестве части своей SNA, грубый эквивалент IP-адреса для ATM).


Маршрутизаторы не заботятся о MAC-адресах. Они заботятся о назначении подсети для каждого из их по крайней мере 2 сетевых адаптеров, но на самом деле не относятся к MAC-адресам. Они пересылают (то есть копируют) трафик с одного IP на другой, а не с IP на MAC или что-то подобное.
LawrenceC

4
@ultrasawblade, ваше утверждение абсурдно . Если маршрутизатор подключен к сети Ethernet, он должен обмениваться данными по протоколу Ethernet. IP-пакеты будут инкапсулированы в кадр Ethernet. Это означает, что знание mac-адресов всех ** хост-систем Ethernet напрямую * абсолютно необходимо. Устройство уровня 3 волшебным образом не просто взаимодействует по протоколу уровня 3, оно должно инкапсулировать протокол уровня 3 в протокол уровня 2, который затем передается по среде уровня 1.
Зоредаче

3
Я не согласен с вашим первым предложением - они не «более критичны» для маршрутизаторов, чем для коммутаторов - все они одинаково важны во всей сети Ethernet.
Марк Хендерсон

1
Вы можете заменить базовый уровень 2 чем-то совершенно другим (хотя я не знаю, что), и IP все равно будет работать так же. Протокол IP (уровень 3) не заботится, адресованы ли отдельные хосты MAC или какой-либо другой схемой. Конечно, необходимо поддерживать сопоставление IP-адреса с MAC-адресом, но трудно понять, действительно ли ARP «принадлежит» уровню 3 или уровню 2. Дело в том, что протокол уровня 2 не обязательно должен быть Ethernet, а IP не волнует / необходимо знать, что такое протокол уровня 2.
LawrenceC

2
@ Марк Хендерсон: когда я стар, я помню время, когда вокруг не было никаких переключателей. Они на самом деле не являются критически важной частью оборудования. IP-сети могут работать без коммутаторов. Коммутаторы просто использовали ранее существовавший макет сети передачи данных. Если мы в настоящее время имеем их повсеместно повсеместно, это следствие того, что технология RJ точка-точка заменяет старые автобусы. Другими словами: MAC-адреса не были изобретены для работы коммутаторов. С другой стороны, IP-сети были изобретены для целей маршрутизации, поэтому отношение MAC к IP является критическим.
Крис

2

Вспомните дни до смены (хабы).

Если люди являются компьютерами, то MAC-адрес является их именем.

Притворись, что много людей (компьютеры) разговаривают по одному и тому же телефону. Все говорят одновременно.

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

"FRED, THERE IS ICE CREAM!"

Конечно, вы также слушаете предложения, отправленные на адрес трансляции . Просто подумайте, что кто-то кричит,

"EVERYONE, THERE IS ICE CREAM!"

Чем больше людей (компьютеров) подключается к конференц-связи, тем больше вам приходится отфильтровывать. Передовые технологии и переключатели позволили нам напрямую общаться с одним человеком (компьютером / MAC), чтобы им не пришлось так усердно работать, чтобы отфильтровать весь этот шум (и освободить большую пропускную способность).

IP очень похож в базовой аналогии, но он имеет больше функций и уровней поверх MAC-адресации. Уровни 2 и 3 в модели OSI соответственно.


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

Очень верно. Но это помогает с аналогией. И сетевые карты по-прежнему ведут себя так же.
Рэнди Джеймс

2

MAC-адрес необходим, поскольку к «шине» (сети Ethernet) подключено несколько адресов. Отправитель должен иметь возможность идентифицировать получателя, а также идентифицировать себя для получателя.

Все аппаратные шины нуждаются в адресации, поскольку несколько отправителей и получателей используют одни и те же провода, а сообщения должны отправляться определенным получателям, а также идентифицировать отправителей.

I2C, PCI, Ethernet, вы называете это.

У нас есть несколько адресов в межсетевом взаимодействии (IP-адрес и аппаратный адрес), потому что адрес аппаратного уровня является локальным только для определенной физической сети. Когда датаграмма перемещается из сети в сеть, она имеет тенденцию сохранять свой адрес сетевого уровня, но она меняет аппаратные адреса по пути. При работе по некоторым сетям у него может вообще не быть аппаратного адреса, а в некоторых других он может иметь аппаратный адрес, который не является MAC-адресом Ethernet. (Конечно, сетевые адреса могут быть перезаписаны шлюзом NAT, но аппаратные адреса удаляются и заменяются разными каждый раз, когда пакет пересекает маршрутизатор.)


1

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

Сетевое программное обеспечение было проще. У каждого устройства был MAC-адрес, который гарантированно был уникальным. Это не должно было быть чем-то другим - все, что он делал, это проверял, чтобы никакие два устройства в одной сети не имели одинаковый адрес.

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

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

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

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

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

Решение было в IP-сети и с использованием маршрутизаторов. Он построен поверх коммутируемой пакетной сети на основе MAC-адресов. Вместо необработанных данных пакеты теперь содержат IP-пакет - пакет внутри пакета.

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

В современных сетях вы редко видите концентраторы и шины (за исключением беспроводных сетей, где среда является общей для общего доступа), и вместо этого моя машина подключается напрямую к коммутатору, который подключается к маршрутизатору.

Моя машина имеет множество алгоритмов и протоколов, поэтому она знает, как настроена сеть.

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

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

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


1
Вы начали хорошо, но вы потеряли его в середине, где вы начинаете говорить о взаимосвязанных сетях. Переключения не были распространены до 90-х годов, но маршрутизация существовала за 20 лет до этого.
Марк Хендерсон

-1

Основное отличие состоит в том, что MAC назначается производителем во время изготовления, а IP-адрес назначается во время соединения.

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

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

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


+1 за то, что мы не просто продолжаем использовать MAC-адреса.
deed02392

3
Первый абзац технически правильный, но это не главное отличие. Основное отличие состоит в том, что MAC принадлежит Ethernet, а IP - TCP / IP. Вы можете запускать TCP / IP через несколько протоколов уровня 2 (например, ATM), и существует не только TCP / IP, который работает через Etherhet. Не существует такой вещи, как «перед подключением к сети», но есть «Перед получением IP-адреса от DHCP». Но MAC все еще используется после этого - поскольку он находится на другом уровне в модели OSI. Последний абзац совершенно неправильный - в сети нет замены MAC-адресу.
Марк Хендерсон

@MarkHenderson: Моя точка зрения заключается в том, что MAC, принадлежащий Ethernet и IP к TCP / IP, является в значительной степени исторической случайностью; теоретически, если бы мы перепроектировали весь интернет-стек с нуля (и проигнорировали OSI и совместимость с другими сетями), можно было бы заменить большинство случаев использования назначенного на заводе номера (например, MAC) динамически назначаемым номером (например, IP), за исключением что существует ряд пакетов, которые необходимо отправить / получить, прежде чем можно будет получить динамически назначенный номер, поэтому необходим глобально уникальный идентификатор, назначенный на заводе.
Ли Райан

@MarkHenderson: IMO, говоря, что нам нужны MAC и IP, потому что MAC - это уровень 2, а IP - это уровень 3, все равно что сказать: «Нам это нужно, потому что мы разработали Интернет таким образом», он упускает суть и не дает полезной информации. бы то ни было. На что я отвечаю, так это то, почему как фабрично-назначенный, так и динамически назначаемый идентификатор необходимы из-за характера проблемы, и что влечет за собой Интернет-стек без них (потеря эффективности маршрутизации из-за отсутствия динамически назначенного идентификатора и трудность уникальная адресация устройства перед динамическим назначением идентификатора без идентификатора, назначенного производителем).
Ли Райан

@LieRyan, На самом деле мы можем изменить MAC- адрес нашего ПК .......
Pacerier
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.