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) адресам. Эти типы адресов мы рассмотрим в следующей лекции.