Numbers · MAC · ARP · Encapsulation
Компьютерные сети · Глава 04
АДРЕСАЦИЯ
В МОДЕЛИ

От битов и hex до MAC-адресов и протокола ARP

Курс · Ананко · Качур
START ▸
Схема компьютерной сети
СОДЕРЖАНИЕ
01

Системы счисления

двоичная · hex · IP-октеты

02

MAC-адреса

строение · биты I/G, U/L · типы

03

Протокол ARP

как по IP узнать MAC

04

Сквозной пример

инкапсуляция и декапсуляция

Глава 04
PART 01
Раздел 01
СИСТЕМЫ
СЧИСЛЕНИЯ

Почему машина думает нулями и как из них вырастают 192.168.0.13 и F4-46-37-55-24-86

Глава 04 · Раздел 01
Глава 04 · Вступление
АДРЕСА ВНУТРИ УСТРОЙСТВ

Данные, спускаясь по уровням модели, обрастают заголовками: транспортный уровень добавляет номера портов, сетевой — IP-адреса, канальный — MAC-адреса. Но за этой лёгкостью прячутся два вопроса, на которые мы пока не отвечали.

Проблема 1
В каком виде адрес внутри машины?

Для нас 192.168.0.1 — четыре числа. Но внутри у компьютера нет цифр — есть только напряжение: «есть ток или нет». Значит, адрес внутри выглядит совсем иначе — придётся спуститься к двоичной записи.

Проблема 2
Как узнать MAC получателя?

Свой IP и MAC узел знает. IP получателя тоже. А MAC получателя взять неоткуда — он «зашит» в чужую карту. Нужен механизм, который по IP выяснит MAC. Это протокол ARP.

4.0 · Вступление
2.1 · Системы счисления
ПОЧЕМУ МАШИНА «ДУМАЕТ» НУЛЯМИ

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

Два состояния надёжнее десяти: их проще отличать, они меньше «плывут» от помех. Одно обозначают 0, другое 1 — и любое число, буква, адрес превращается в длинную последовательность нулей и единиц.

Всё «человеческое» — десятичные числа, точки, буквы — лишь удобная форма записи. Машина видит поток битов.

Бит — это тумблер · кликай ›

1
вкл
0
выкл
1
вкл
1
вкл
0
выкл
0
выкл
1
вкл
0
выкл

2.1 · Системы счисления
2.1 · Системы счисления
ПОЗИЦИОННАЯ СИСТЕМА СЧИСЛЕНИЯ

Возьмём число 192. Важна не только цифра, но и её позиция (разряд). Значение цифры умножается на «вес» разряда — степень основания:

1·10² + 9·10¹ + 2·10⁰ = 100 + 90 + 2 = 192

Само число 10 называется основанием — это количество разных цифр (0…9, ровно десять).

под запись

Позиционная система счисления — система, в которой значение цифры зависит от её места (позиции) в числе. Количество используемых цифр называется основанием.

2.1 · Системы счисления
2.1 · Двоичная система
ДВОИЧНАЯ СИСТЕМА · ВЕСА РАЗРЯДОВ

Та же идея позиционности, но основание 2. Веса разрядов — степени двойки. Кликай по разрядам — сумма «гирь» считается вживую:

27
0
128
26
0
64
25
0
32
24
0
16
23
0
8
22
0
4
21
0
2
20
0
1

2.1 · Двоичная система
2.1 · Считаем вместе
СЧИТАЕМ ВМЕСТЕ · ЖИВОЙ КАЛЬКУЛЯТОР

Один октет · клик по битам

0
128
0
64
0
32
0
16
0
8
0
4
0
2
0
1

IP-адрес · собери 4 октета

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0.0.0.0

Клик включает/выключает «гирю». Так на паре можно посчитать любой перевод 2 ↔ 10 прямо на экране.

2.1 · Считаем вместе
2.1 · Двоичная система
ПЕРЕВОД 10 → 2 · «РАСКЛАДКА НА ГИРИ»

Возьмём 13. Спрашиваем: суммой каких степеней двойки его собрать? 13 = 8 + 4 + 1. Значит, на весах лежат гири 8, 4 и 1, а гири 2 — нет. Начальные нули отбрасываем:

27
0
128
26
0
64
25
0
32
24
0
16
23
1
8
22
1
4
21
0
2
20
1
1
13₁₀ = 1101₂

Читается «один-один-ноль-один» — это набор битов, а не «тысяча сто один». В разряде либо 0 (гири нет), либо 1 (гиря есть) — цифры 3 в двоичной не существует.

2.1 · Двоичная система
2.1 · Двоичная система
ЕЩЁ ПРИМЕРЫ · ПРЯМОЙ И ОБРАТНЫЙ

Переведём 196. Подбираем гири: 196 = 128 + 64 + 4.

27
1
128
26
1
64
25
0
32
24
0
16
23
0
8
22
1
4
21
0
2
20
0
1
196₁₀ = 11000100₂

Обратный перевод ещё проще: сложить веса разрядов, где стоит 1. Возьмём 10101000₂:

27
1
128
26
0
64
25
1
32
24
0
16
23
1
8
22
0
4
21
0
2
20
0
1

128 + 32 + 8 = 168

10101000₂ = 168₁₀
2.1 · Двоичная система
2.1 · Октеты
ОТ ЛЕНТЫ БИТОВ — К IP-АДРЕСУ

Физически устройство получает ленту из 32 бит. Держать её в голове невозможно, поэтому делаем два шага.

11000000101010000000000000000001

Шаг 1 — режем на октеты по 8 бит. Шаг 2 — каждый октет в десятичное число:

11000000
192
·
10101000
168
·
00000000
0
·
00000001
1
192.168.0.1
2.1 · Октеты
2.1 · Шестнадцатеричная
ШЕСТНАДЦАТЕРИЧНАЯ · ЗАЧЕМ

Двоичная запись честная, но длинная. Десятичная короткая, но плохо «дружит» с двоичной: одна десятичная цифра не соответствует ровному числу битов. Нужна третья система — короткая, как десятичная, и совпадающая с двоичной по границам разрядов.

Такая система — шестнадцатеричная: позиционная, основание 16. Но привычных цифр только десять (0–9) — где взять ещё шесть? Недостающие обозначили буквами:

A
10
B
11
C
12
D
13
E
14
F
15
2.1 · Шестнадцатеричная
2.1 · Шестнадцатеричная
ТАБЛИЦА СООТВЕТСТВИЙ 0–15

Одна hex-цифра = ровно 4 бита (тетрада). Выделены ключевые: 1111 → F и 1010 → A.

DECBINHEX
000000
100011
200102
300113
401004
501015
601106
701117
DECBINHEX
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F
2.1 · Шестнадцатеричная
2.1 · Шестнадцатеричная
ПЕРЕВОД 250 → FA

Идём через двоичную запись. Раскладываем: 250 = 128 + 64 + 32 + 16 + 8 + 2 → 11111010₂. Режем на тетрады по 4 бита и подставляем по таблице:

1111
F
1010
A
250₁₀ = 11111010₂ = FA₁₆

Механично: «разрезал по четыре и подставил по таблице».

2.1 · Шестнадцатеричная
2.1 · Шестнадцатеричная
ВАЖНОСТЬ НУЛЕЙ · ПОЗИЦИЯ РЕШАЕТ ВСЁ

Три внешне похожих числа дают три разных значения. Ноль где угодно, кроме крайней левой позиции, меняет значение — он «раздвигает» разряды. А крайние левые нули (leading zeroes) можно отбрасывать.

0FB16
0000 1111 1011
= 251
F0B16
1111 0000 1011
= 3851
FB016
1111 1011 0000
= 4016
2.1 · Шестнадцатеричная
PART 02
Раздел 02
MAC-
АДРЕСА

48 бит, две половины OUI и Interface ID, два служебных бита — и три типа рассылки

Глава 04 · Раздел 02
2.2 · MAC-адреса
ПОЧЕМУ ДЛЯ MAC — HEX

Под MAC отведено 48 бит (6 байт). В двоичном виде — 48 символов подряд, читать тяжело. В десятичном — шесть октетов, но MAC станет неотличим от IP. В шестнадцатеричном — всего 6 групп по 2 цифры, коротко и узнаваемо (буквы сразу выдают: «это hex, это MAC»).

Двоичный

111101000100011000110111…

48 символов — тяжело

Десятичный

244.70.55.85.36.134

путается с IP

Шестнадцатеричный

F4-46-37-55-24-86

коротко и узнаваемо ✓

2.2 · MAC-адреса
2.2 · MAC-адреса
ЖИВОЙ ПРИМЕР · ipconfig

Команда ipconfig (Windows; в Linux — ifconfig / ip a) показывает MAC. Часто он подписан вторым именем — физический адрес (Physical Address).

C:\Users\student> ipconfig /all

   Ethernet adapter Ethernet:
      Описание. . . . . . . . . : Realtek PCIe GbE Family Controller
      Физический адрес (Physical Address). . : F4-46-37-55-24-86
      DHCP включён. . . . . . . : Да
      IPv4-адрес. . . . . . . . : 192.168.0.13
2.2 · MAC-адреса
2.2 · MAC-адреса
F4-46-37-55-24-86 → 48 БИТ

Двенадцать hex-цифр = шесть пар = 48 бит (каждая цифра = 4 бита). Развернём потетрадно:

F4
11110100
46
01000110
37
00110111
55
01010101
24
00100100
86
10000110
111101000100011000110111010101010010010010000110
2.2 · MAC-адреса
2.2 · MAC-адреса
СТРОЕНИЕ MAC · OUI | INTERFACE ID

Любой MAC делится на две равные половины по 24 бита. Коды OUI выдаёт централизованно IEEE — как IANA раздаёт IP, кто-то один ведёт общий реестр (standards-oui.ieee.org).

OUI · 24 бита

идентификатор производителя (IEEE)

F4-46-37
Interface ID · 24 бита

порядковый номер адаптера

55-24-86
2.2 · MAC-адреса
2.2 · MAC-адреса
ДВА СЛУЖЕБНЫХ БИТА · I/G И U/L

Внутри первого октета OUI спрятаны два управляющих бита — они говорят, как обращаться с адресом. Аналогия: два флажка на конверте — они не меняют текст письма, но меняют, как с ним поступить.

Bit0 · I/G

Individual / Group. «Кадр одному или многим?» 0 — одноадресная, 1 — групповая или широковещательная.

Bit1 · U/L

Universal / Local. «Адрес настоящий или назначенный?» 0 — заводской (глобально уникальный), 1 — изменён (рандомизация MAC).

2.2 · MAC-адреса
2.2 · MAC-адреса
РАЗБОР ПЕРВОГО ОКТЕТА · F4 = 11110100

Пронумеруем биты от старшего (Bit7) к младшему (Bit0). Смотрим на два младших:

Bit7
1
Bit6
1
Bit5
1
Bit4
1
Bit3
0
Bit2
1
Bit1
0
U/L
Bit0
0
I/G

Bit0 = 0 → адрес одноадресный (unicast)

Bit1 = 0 → адрес заводской, не менялся

Компьютер показывает сети честный заводской адрес и принимает только адресованные лично ему кадры.

2.2 · MAC-адреса
2.2 · Групповой MAC
ГРУППОВОЙ (MULTICAST) MAC · ПРАВИЛО

Один источник → многим, но не всем (прямой эфир на Rutube: источник один, зрителей тысячи). На сетевом уровне это multicast IP из диапазона 224.0.0.0 – 239.255.255.255. На канальном для группового трафика собирают специальный MAC прямо из IP:

1

Префикс

01-00-5E

младший бит первого октета = 1 — тот самый I/G: «кадр групповой»

2

25-й бит

= 0

всегда нулевой

3

Биты 26–48

23 бита IP

переносятся младшие 23 бита группового IP-адреса

2.2 · Групповой MAC
2.2 · Групповой MAC · Сборка
ЭТАП 1 · IP → 23 МЛАДШИХ БИТА

Источник вещает с группового IP 239.193.1.15. В IP 32 бита, но в MAC уместятся только младшие 23 — старшие 9 бит отбрасываются. Разложим IP по битам и нажмём кнопку: серые уходят, оранжевые остаются.

2.2 · Групповой MAC · этап 1/3
2.2 · Групповой MAC · Сборка
ЭТАП 2–3 · СОБИРАЕМ 48-БИТНЫЙ MAC

Фиксированная половина 01-00-5E занимает первые 24 бита, 25-й бит = 0 обязателен, а в оставшиеся 23 бита ложатся младшие биты IP из этапа 1. Прокликай шаги — таблица заполняется по частям.

2.2 · Групповой MAC · этап 2–3
2.2 · Широковещательный MAC
ШИРОКОВЕЩАТЕЛЬНЫЙ (BROADCAST) MAC

Иногда нужно достучаться до всех узлов сразу — когда отправитель ещё не знает, кому адресовать (так работают ARP и DHCP). Решение лаконичное: 48 единиц. В первом октете FF = 11111111 оба служебных бита = 1 (I/G=1 «не одноадресный», U/L=1 «сконструирован»). В Wireshark подписан Broadcast.

FF-FF-FF-FF-FF-FF

= 48 единиц · держатся на нём DHCP и ARP

2.2 · Широковещательный MAC
PART 03
Раздел 03
ПРОТОКОЛ
ARP

Как по известному IP выяснить неизвестный MAC — запрос всем, ответ лично

Глава 04 · Раздел 03
2.3 · Протокол ARP
ЗАЧЕМ НУЖЕН ARP

Чтобы передать данные соседу, нужны два адреса получателя: IP (логический) и MAC (физический). Без MAC протокол Ethernet не соберёт кадр. Свой IP и MAC узел знает, IP получателя — тоже. А MAC получателя взять неоткуда: он зашит в чужую карту.

под запись
ARP · Address Resolution Protocol

сетевой протокол для определения MAC-адреса устройства по его известному IP-адресу.

2.3 · Протокол ARP
2.3 · Протокол ARP
КАК РАБОТАЕТ ARP · ЗАПРОС ВСЕМ, ОТВЕТ ЛИЧНО

Узел .233 формирует широковещательный кадр (DST = FF-FF-FF-FF-FF-FF) с вопросом «У кого IP .1? Ответьте .233» — это ARP-запрос. Коммутатор рассылает всем; каждый сравнивает Target IP со своим. Совпадение у одного — он отвечает одноадресно, ведь MAC спрашивавшего известен из запроса. Отправитель пишет MAC в свою ARP-таблицу.

SWITCH PC-A.233спрашивает PC-B .1✓ это я PC-C✗ не мне
2.3 · Протокол ARP
2.3 · Протокол ARP
ARP-ЗАПРОС В WIRESHARK

Так выглядит перехваченный запрос. Красные номера — те же поля, что мы разбирали: адреса, протокол, opcode и четыре ARP-поля.

No.TimeSourceDestinationProtocolLengthInfo
20.0572761IntelCor_55:24:862Broadcast3ARP4425Who has 192.168.1.1? Tell 192.168.1.233
70.099701ASUSTekC_30:e2:9cIntelCor_55:24:86ARP42192.168.1.1 is at ac:9e:17:30:e2:9c
Frame 2: 42 bytes on wire (336 bits), 42 bytes captured
Ethernet II, 6Src: IntelCor_55:24:86 (f4:46:37:55:24:86), 7Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Type: ARP (0x0806)
Address Resolution Protocol (request)
Hardware type: Ethernet (1)
8Protocol type: IPv4 (0x0800)
Hardware size: 6   Protocol size: 4
9Opcode: request (1)
10Sender MAC: IntelCor_55:24:86 (f4:46:37:55:24:86)
Sender IP: 192.168.1.233
Target MAC: 00:00:00:00:00:00 — пустая ячейка
Target IP: 192.168.1.1
2.3 · Протокол ARP · Wireshark
2.3 · Протокол ARP
ARP-ОТВЕТ · КАРТИНА ЗЕРКАЛЬНО МЕНЯЕТСЯ

Пакет №7 — ответ. Source и Destination поменялись местами, Destination теперь не Broadcast, а конкретный MAC, а Opcode стал reply (2).

No.TimeSourceDestinationProtocolLengthInfo
20.057276IntelCor_55:24:86BroadcastARP42Who has 192.168.1.1? Tell 192.168.1.233
70.0997011ASUSTekC_30:e2:9c2IntelCor_55:24:863ARP425192.168.1.1 is at ac:9e:17:30:e2:9c
Ethernet II, 6Src: ASUSTekC_30:e2:9c (ac:9e:17:30:e2:9c), 7Dst: IntelCor_55:24:86 (f4:46:37:55:24:86)
Type: ARP (0x0806)
Address Resolution Protocol (reply)
Hardware type: Ethernet (1)
8Protocol type: IPv4 (0x0800)
Hardware size: 6   Protocol size: 4
9Opcode: reply (2)
10Sender MAC: ASUSTekC_30:e2:9c (ac:9e:17:30:e2:9c)
Sender IP: 192.168.1.1
Target MAC: IntelCor_55:24:86 (f4:46:37:55:24:86)
Target IP: 192.168.1.233

Служебные биты искомого MAC: U/L = 0 (заводской), I/G = 0 (unicast) — «кричать» больше незачем.

2.3 · Протокол ARP · Wireshark
2.3 · Протокол ARP
ARP-ТАБЛИЦА · КЭШ СООТВЕТСТВИЙ

Рассылать broadcast перед каждой отправкой расточительно. Поэтому узел складывает пары IP ↔ MAC в ARP-таблицу и заглядывает туда первым делом. Записи со временем устаревают — устройства меняются, и «вечная» запись начала бы врать. Ограниченное время жизни держит таблицу и компактной, и актуальной.

Интернет-адресФизический адресТип
192.168.1.1ac-9e-17-30-e2-9cдинамический
192.168.1.255ff-ff-ff-ff-ff-ffстатический
224.0.0.2201-00-5e-00-00-16статический
2.3 · Протокол ARP
PART 04
Раздел 04
СКВОЗНОЙ
ПРИМЕР

PC-A отправляет файл PC-B: инкапсуляция вниз, ARP добывает MAC, декапсуляция вверх

Глава 04 · Раздел 04
2.4 · Обмен данными внутри одной сети
ОБМЕН ДАННЫМИ ВНУТРИ ОДНОЙ СЕТИ
Что «на проводе» сейчас · с заголовками
ARP-таблица PC-A · IP ↔ MAC
2.4 · Обмен данными внутри одной сети
2.4 · Инкапсуляция
ИНКАПСУЛЯЦИЯ ВНИЗ · ПРИЛОЖЕНИЯ → IP

Приложения (FTP). Файл форматируется и уходит ниже — к TCP.

Транспортный (TCP). Разбивка на сегменты, метки портов: источник 54236, назначение 21 (FTP). Получаем сегмент.

Сетевой (IP). Проставляются SrcIP и DstIP (оба известны). Сегмент стал пакетом.

IP · Src/Dst
TCP · 54236→21
Данные
2.4 · Инкапсуляция
2.4 · Инкапсуляция
ЗАМИНКА НА КАНАЛЬНОМ · НЕТ MAC

Чтобы упаковать пакет в кадр, нужен MAC PC-B — а его PC-A не знает. PC-A запоминает почти готовый пакет в памяти и формирует ARP-запрос: IP получателя = IP PC-B, MAC получателя = широковещательный FF:FF:FF:FF:FF:FF.

Широковещание. Коммутатор рассылает кадр всем. Фильтрация: PC-C убеждается, что запрос не ему, и отбрасывает; PC-B узнаёт свой IP и готовит ответ.

SWITCH PC-A.233спрашивает PC-B .1✓ это я PC-C✗ не мне
2.4 · Инкапсуляция
2.4 · Инкапсуляция
ARP-ОТВЕТ И ДОСТРОЙКА КАДРА

ARP-ответ. PC-B отправляет ответ одноадресно обратно на PC-A, вложив свой MAC.

Достройка. PC-A записывает MAC PC-B в ARP-таблицу и достаёт из памяти тот самый пакет. Теперь есть оба адреса — пакет упаковывается в кадр.

Ethernet · Src/DstMAC
IP · Src/Dst
TCP · 54236→21
Данные
= кадр
2.4 · Инкапсуляция
2.4 · Декапсуляция
ОТПРАВКА И ДЕКАПСУЛЯЦИЯ ВВЕРХ

Отправка. PC-A шлёт готовый кадр одноадресно на PC-B; коммутатор по своей таблице отправляет его только в нужный порт.

Канальный. PC-B видит, что DstMAC — его, снимает Ethernet-заголовок → пакет.

Сетевой. Сравнивает DstIP со своим, снимает IP-заголовок → сегмент.

IP · Src/Dst
TCP · 54236→21
Данные
← снимаем слои
2.4 · Декапсуляция
2.4 · Итог
ТРАНСПОРТ, ПРИЛОЖЕНИЯ · ФАЙЛ НА ДИСКЕ

По полю «порт назначения» DPrt = 21 PC-B понимает: это FTP. Заголовок сегмента снимается, данные уходят FTP, который форматирует и записывает файл на диск. Передача завершена ✓.

Всё сложилось в цепочку: биты дали возможность записывать адреса, октеты и hex сделали их читаемыми, типы MAC задали адресацию «одному / группе / всем», а ARP связал мир IP с миром MAC. Дальше — маршрутизаторы и шлюзы, когда получатель в другой сети.

2.4 · Итог
Приложение A · Интерактив
ARP · ЗАПРОС И ОТВЕТ
Цель:
ARP-таблица PC-A · IP ↔ MAC
IPMAC
Таблица коммутатора · MAC ↔ порт
MACпорт
Приложение A · ARP
Приложение B · Пошаговый провод
1 Читаем MAC
2 Спец-адреса
3 ARP находит MAC
4 Сквозной пример
Приложение B · Капстоун
Практика · ДЗ
ЗАДАЧИ
1

Групповой MAC

По групповому IP собрать multicast-MAC: записать IP в двоичном виде, взять младшие 23 бита, приписать к 01-00-5E и нулевому 25-му биту.

2

По вендорам

По первым 24 битам (OUI) определить производителя сетевой карты; сверить с реестром IEEE и прочитать служебные биты первого октета.

Глава 04 · ДЗ
СПАСИБО

Биты → адреса → типы MAC → ARP → инкапсуляция. Дальше — маршрутизаторы и шлюзы.

Ананко · Качур · VK · TG
Глава 04