MAC-адресация
MAC-адресация.
MAC-адрес (также Hardware Address, физический адрес) — уникальный идентификатор, присваиваемый каждой единице активного оборудования или некоторым их интерфейсам в сетях Ethernet.
При проектировании стандарта Ethernet было предусмотрено, что каждая сетевая карта (равно как и встроенный сетевой интерфейс) должна иметь уникальный номер (MAC-адрес), «прошитый» в ней при изготовлении. Этот номер используется для идентификации отправителя и получателя фрейма, таким образом, данные доставляются только определенному узлу или узлам.
MAC-адреса формируют основу сетей на канальном уровне модели OSI, которую используют протоколы более высокого (сетевого) уровня.
Физический адрес состоит из 6 байтов. Его принято выражать в шестнадцатеричной системе счисления и записывать в следующем формате 00-AA-00-64-C8-09 или 00:AA:00:64:C8:09 . Значение каждого байта отделяют дефисом или двоеточием для того, чтобы адрес легко воспринимался визуально.
Теперь необходимо рассмотреть, каким способом можно узнать MAC-адрес сетевого оборудования.
При работе
с Linux MAC-адрес можно определить с помощью
команды ifconfig. Задайте
команду ifconfig
или укажите при вызове ifconfig
нужный интерфейс, например, ifconfig
enp1s0, и утилита выведет информацию об
указанном сетевом интерфейсе. Отображаемые
данные будут выглядеть приблизительно
следующим образом:
haardath@home:~$ ifconfig
enp1s0 Link encap:Ethernet HWaddr 90:2b:34:dc:77:29
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
enp2s0 Link encap:Ethernet HWaddr 90:2b:34:dc:77:2b
inet addr:192.168.1.175 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:55487878 errors:0 dropped:0 overruns:0 frame:0
TX packets:116386665 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12314482442 (12.3 GB) TX bytes:163980486035 (163.9 GB)
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:106588 errors:0 dropped:0 overruns:0 frame:0
TX packets:106588 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:14790084 (14.7 MB) TX bytes:14790084 (14.7 MB)
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
MAC-адрес
следует за ключевым словом HWaddr;
в случае интерфейса enp1s0 это значение
90:2b:34:dc:77:29.
Можно сократить вывод команды, воспользовавшись командой grep, утилитой командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их.
haardath@home:~$ ifconfig enp1s0 | grep HWaddr
enp1s0 Link encap:Ethernet HWaddr 90:2b:34:dc:77:29
В Windows используется команда ipconfig, которая служит для управления сетевыми интерфейсами и отображения всех текущих параметров сети TCP/IP. Чтобы узнать физический адрес, нам нужен ключ /all. Ниже представлен сокращенный вывод команды:
C:\Users\haardath>ipconfig /all
Настройка протокола IP для Windows
Имя компьютера . . . . . . . . . : x120e
Основной DNS-суффикс . . . . . . :
Тип узла. . . . . . . . . . . . . : Гибридный
IP-маршрутизация включена . . . . : Нет
WINS-прокси включен . . . . . . . : Нет
Порядок просмотра суффиксов DNS . : lan
Адаптер беспроводной локальной сети Беспроводное сетевое соединение:
DNS-суффикс подключения . . . . . : lan
Описание. . . . . . . . . . . . . : 1x1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter
Физический адрес. . . . . . . . . : 88-9F-FA-FA-42-8A
DHCP включен. . . . . . . . . . . : Да
Автонастройка включена. . . . . . : Да
Для чего же нам нужны MAC-адреса? В сети Ethernet для идентификации источника и получателя информации они используются наравне с IP-адресами. Пакет, пересылаемый от одного компьютера другому, содержит в себе физический адрес отправителя, IP-адрес отправителя, физический адрес получателя и IP-адрес получателя.
Поскольку эти два адреса никак друг с другом не связаны, существует протокол, который обеспечивает связь между этими двумя адресами — ARP (Address Resolution Protocol, протокол определения адреса).
Рассмотрим, как функционирует ARP на простом примере.
1. Компьютер А (IP-адрес 192.168.0.1) и компьютер B (IP-адрес 192.168.0.2) соединены сетью.
2. Компьютер А желает переслать пакет данных на компьютер B, IP-адрес компьютера B ему известен, но компьютеру А не известен физический адрес компьютера В.
3. По протоколу ARP компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним сегменте сети.
4. Запрос выглядит как «компьютер с IP-адресом 192.168.0.2, сообщите свой MAC-адрес компьютеру с МАС-адресом F0:EE:D1:11:A1:01».
5. Компьютер B отвечает компьютеру А на запрос и сообщает свой MAC-адрес, например, 00:F0: B1:12:F1:AA. Теперь компьютер А может передавать ему любые данные через сеть.
Все узнанные в результате работы в сети соответствия между физическими адресами и IP-адресами хранятся в таблице, которая называется ARP-таблица.
В ARP-таблице, помимо IP и MAC адреса, еще указывается тип связи, существует два типа записей:
- Статические записи создаются вручную, они существуют до тех пор, пока оборудование (компьютер, маршрутизатор, коммутатор) остается включенным.
- Динамические же записи создаются модулем протокола ARP в процессе работы. Если запись не обновлялась в течении определенного времени, то она исключается из таблицы. Такой способ хранения называется ARP-кэшем.
В Linux и Windows существует утилита arp, с помощью которой можно просмотреть текущую ARP-таблицу.
Пример вывода утилиты arp с ключом а на Ubuntu:
haardath@home:~$ arp -a
work.lan (192.168.1.240) в e8:2a:ea:26:f0:52 [ether] на enp2s0
LEDE.lan (192.168.1.1) в f2:b4:29:ed:2d:69 [ether] на enp2s0
Ключ s используется чтобы добавить Ethernet-адрес хоста к ARP-таблицам, например, arp -s 157.55.68.1 f1:aaff:62:а6:01.
Ключ d используется для очистки ARP-таблицы.
Работа с утилитой arp в Windows аналогична Linux, пример вывода командной строки представлен ниже:
C:\Users\haardath>arp -a
Интерфейс: 192.168.1.185 —- 0xf
адрес в Интернете Физический адрес Тип
192.168.1.1 f2-b4-29-ed-2d-69 динамический
192.168.1.255 ff-ff-ff-ff-ff-ff статический
224.0.0.22 01-00-5e-00-00-16 статический
224.0.0.252 01-00-5e-00-00-fc статический
239.255.255.250 01-00-5e-7f-ff-fa статический
255.255.255.255 ff-ff-ff-ff-ff-ff статический
Здесь интересно обратить внимание на разные типы статистических записей, которые соответствуют широковещательным (например, 255.255.255.255) и мультикастовым (например, 224.0.0.22) адресам. Эти типы адресов мы рассмотрим в следующей лекции.