Я читал о различиях между MAC-адресами и IP-адресами и о том, почему мы нуждаемся в них обоих.
Подводя итог, можно сказать, что MAC-адреса - это физические неизменяемые уникальные идентификаторы для каждого устройства, в то время как IP-адреса назначаются, изменяются и являются виртуальными. Для сравнения, MAC-адреса похожи на людей с постоянными именами, а IP-адреса находятся там, где они в настоящее время живут.
В реальном мире мы связываем адреса и имена с помощью телефонной книги. Какой механизм связывает IP-адреса с MAC-адресами и где этот механизм находится в сети?
Ответы:
Механизм называется протоколом разрешения адресов (ARP) . Каждое устройство ARP Ethernet IPv4 разрешает MAC-адреса Ethernet для целевых IP-адресов. Сопоставления IP с Mac хранятся в таблице ARP каждого устройства (телефонная книга по вашей аналогии).
Для упрощения: в большинстве случаев для разрешения MAC-адреса, связанного с IP-адресом, вы отправляете широковещательный пакет ARP (всем устройствам в сети), спрашивая, у кого этот IP-адрес. Устройство с таким IP-адресом отвечает на ARP (со своим MAC-адресом).
источник
Поскольку вопрос был помечен с помощью IPv6, я отвечу за это, поскольку IPv6 сильно отличается от IPv4.
Начнем с того, что нет такой вещи как ARPv6. Сопоставление между адресами уровня 2 и IPv6 выполняется с помощью протокола обнаружения соседей (NDP), который отправляется по протоколу ICMPv6. Таким образом, вы не должны игнорировать ICMPv6 и отфильтровывать его, как это принято с устаревшими IP. NDP предоставляет два типа сообщений, которые представляют интерес здесь: запрос соседа и объявление соседа. Узел, который хочет узнать адрес канального уровня для определенного IP-адреса, отправляет запрос соседа на соответствующий многоадресный адрес запрашиваемого узла канала - больше нет широковещательной передачи для IPv6.
Например, если рассматриваемый адрес равен
2001:db8::0011:2233:4455:6677
, то соответствующий адрес многоадресной рассылки запрашиваемого узла равенff02::1:ff55:6677
и соответствующий адрес многоадресной рассылки Ethernet33:33:ff:55:66:77
. Все узлы с адресом, оканчивающимся на,*55:6677
принадлежат этой многоадресной группе и будут прослушивать это - это, скорее всего, только сама целевая система. Запрос соседей содержит также адреса одноадресной IPv6 и MAC-адрес запрашивающей системы.При получении целевой узел отвечает сообщением соседей, которое отправляется на адрес одноадресной передачи (канальный уровень и IPv6) запрашивающего узла. Таким образом, запрашивающий узел узнает MAC-адрес целевого узла.
И да, NDP-спуфинг работает так же, как ARP-спуфинг. И нет, IPsec не является ответом.
источник
Верхний ответ хороший. Если это поможет, вот описание с точки зрения аналогии с телефонной книгой. Реальные сетевые термины в скобках.
На основании их имени (IP-адреса) вы знаете, что они живут в вашем районе (широковещательный домен). Сначала вы просматриваете свою телефонную книгу (кэш ARP), чтобы узнать, знаете ли вы уже их адрес (MAC-адрес). Если их нет в телефонной книге, вы выходите на улицу и кричите (транслируете) «Где живет Стив?» Достаточно громко, чтобы все могли услышать (запрос ARP). Предполагая, что Стив на самом деле живет там и не спит, он отвечает - только вам, не крича - «Вот мой адрес» (ответ ARP). Вы записываете это в свою телефонную книгу для дальнейшего использования (кеширование ARP).
источник
MAC-адреса могут быть изменены. В Linux используйте ip или ifconfig для большинства Windows, посмотрите настройки драйвера вашего сетевого интерфейса.
Вы ничего не конвертируете. MAC-адреса находятся на уровне 2, а IP - на уровне 3 модели OSI. Для IPv4 ARP используется для определения того, какой MAC-адрес (уровень 2) принадлежит определенному IP-адресу (уровень 3). Для IPv6 используется ICMPv6 (Neighbor Discovery).
источник
Протокол разрешения адресов (ARP)
IP-адрес ---> ARP ---> MAC-адрес
MAC-адрес ---> RARP ---> IP-адрес
IP-адрес = логический адрес [32 бита]
MAC-адрес = физический адрес [48 бит]
Сетевой уровень (IP) ----> ARP ---> Канальный уровень (MAC)
IP-адрес необходим на сетевом уровне для идентификации хоста источника / назначения.
MAC-адрес необходим на канальном уровне для идентификации хоста источника / назначения.
источник
Сетевой стек сначала ищет целевой IP в своей таблице маршрутизации, из этого он определяет две вещи.
Обратите внимание, что IP-адрес следующего перехода является чисто локальной концепцией, он никогда не становится частью пакета, отправляемого по сети.
Если пакет должен быть отправлен на многоточечном канальном уровне (например, Ethernet и т. Д.), ОС затем ищет следующий переход в своей таблице arp (ipv4) или соседнего обнаружения (ipv6). Если он находит там нестандартную запись, то у него есть MAC-адрес, который ему нужен, и он может отправить пакет.
Если он не имеет пригодной для использования записи, он удерживает пакеты, предназначенные для следующего перехода, и отправляет запрос на поиск MAC-адреса. Механизмы здесь немного отличаются между v4 и v6.
В v4 arp запросы отправляются. Обычно это широковещательная рассылка, но в некоторых случаях, если у хоста есть устаревшая запись, он может сначала выполнить одноадресный запрос и вернуться к широковещательной передаче только в случае сбоя. Ответ обычно одноадресный.
В версии 6 запросы на отправку соседей отправляются по адресу многоадресной рассылки, созданному из адреса следующего перехода. Цель отвечает одноадресной рекламой соседа. Хосты также могут отправлять объявления о соседях группе «многоадресная рассылка всех узлов» (или, по сути, широковещательной), чтобы обновить записи в своих кешах обнаружения соседних узлов.
источник