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

Я читал о различиях между MAC-адресами и IP-адресами и почему нам нужны оба из них.

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

В реальном мире мы связываем адреса и имена с помощью телефонной книги. Какой механизм связывает IP-адреса с MAC-адресами и где этот механизм находится в сети?

13 голосов | спросил CodyBugstein 26 J0000006Europe/Moscow 2014, 13:52:12

6 ответов


19

Механизм называется Протокол разрешения адресов (ARP) . Все ARP-устройства Ethernet-сети IPv4 для разрешения адресов MAC-адресов Ethernet для целевых IP-адресов. Сопоставления IP к mac хранятся в таблице ARP каждого устройства (телефонная книга по вашей аналогии).

Чтобы упростить: в большинстве случаев для разрешения MAC-адреса, связанного с IP-адресом, вы отправляете широковещательный пакет ARP (на все устройства в сети), спрашивая у кого есть этот IP-адрес. Устройство с этим IP-адресом отвечает на ARP (с его MAC-адресом).

ответил mulaz 26 J0000006Europe/Moscow 2014, 13:59:16
13

Поскольку вопрос был помечен IPv6, я отвечу за это, потому что IPv6 сильно отличается от IPv4.

Начнем с того, что ARPv6 не существует. Отображение между адресами уровня 2 и IPv6 осуществляется протоколом обнаружения соседей (NDP), который отправляется через ICMPv6. Таким образом, вы не должны игнорировать ICMPv6 и отфильтровывать его, как и обычай с устаревшим IP-адресом. ПНР предоставляет два типа сообщений, которые представляют интерес здесь: Соседние Сопровождение и Соседка. Узел, который хочет узнать адрес канального уровня для определенного IP-адреса, отправляет запрос соседей к соответствующему адресу link-local multicast address-address address - больше нет трансляции для IPv6.

Например, если рассматриваемый адрес 2001: db8 :: 0011: 2233: 4455: 6677 , то соответствующий адрес многоадресной рассылки - ff02 :: 1: ff55 : 6677 , а соответствующий сетевой адрес многоадресной рассылки 33: 33: ff: 55: 66: 77 . Все узлы с адресом, заканчивающимся на * 55: 6677 , принадлежат к этой группе многоадресной передачи и будут слушать это - это, скорее всего, только сама целевая система. Соседство соседей содержит также адреса одноадресной IPv6 и MAC-адрес системы отслеживания.

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

И да, NDP-spoofing работает так же, как ARP-спуфинг. И нет, IPsec не является ответом.

ответил countermode 31 J000000Thursday14 2014, 23:11:24
4

Главный ответ хорош. В случае, если это помогает, вот описание с точки зрения аналогий вашей телефонной книги. Реальные сетевые условия в круглых скобках.

По их имени (IP-адрес) вы знаете, что они живут в вашем районе (широковещательный домен). Сначала вы просматриваете свою телефонную книгу (кеш ARP), чтобы узнать, знаете ли вы их адрес (MAC-адрес). Если их нет в телефонной книге, вы выходите на улицу и кричите (транслируете): «Где живет Стив?» Достаточно громко, чтобы все могли услышать (запрос ARP). Предполагая, что Стив действительно живет там, и он бодрствует, он отвечает - просто вам, а не крику. - Вот мой адрес (ответ ARP). Вы записываете его в своей телефонной книге для дальнейшего использования (кеширование ARP).

ответил P1h3r1e3d13 29 MarpmTue, 29 Mar 2016 22:40:43 +03002016-03-29T22:40:43+03:0010 2016, 22:40:43
2
  1. MAC-адреса могут быть изменены. В Linux используйте ip или ifconfig для большинства Windows, чтобы посмотреть настройки драйвера вашего сетевого интерфейса.

  2. Вы ничего не конвертируете. MAC-адреса находятся на уровне 2, IP на уровне 3 модели OSI. Для IPv4 ARP используется для определения того, какой MAC-адрес (Layer-2) принадлежит определенному IP-адресу (Layer-3). Для IPv6 используется ICMPv6 (Neighbor Discovery).

ответил Jens Link 26 J0000006Europe/Moscow 2014, 13:59:21
0

Протокол разрешения адресов (ARP)

IP-адрес ---> ARP ---> MAC-адрес

MAC-адрес ---> RARP ---> IP-адрес

IP-адрес = логический адрес [32 бит]

MAC-адрес = физический адрес [48 бит]

Сетевой уровень (IP) ----> ARP ---> Уровень канала передачи данных (MAC)

IP-адрес необходим в сетевом слое для идентификации хоста источника /получателя.

MAC-адрес необходим на уровне канала передачи данных для идентификации хоста источника /получателя.

ответил Dipankar Nalui 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 08 Sep 2017 15:58:00 +0300 2017, 15:58:00
0

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

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

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

Если пакет должен быть отправлен на многоточечном канальном уровне (например, Ethernet и т. д.), ОС затем просматривает следующий скачок в таблице arp (ipv4) или соседа (ipv6). Если он найдет запись без устаревания, тогда он имеет требуемый MAC-адрес и может отправить пакет.

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

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

В v6 запросы запроса приглашения отправляются на многоадресный адрес, сгенерированный с следующего адреса пересылки. Целевое задание отвечает односторонней рекламой соседа. Хосты также могут отправлять соседние объявления в группу «all-nodes multicast» (ака эффективно транслируемой), чтобы обновлять записи в своих кэшах обнаружения соседних узлов.

ответил Peter Green 25 Maypm18 2018, 16:35:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132