Сетевые технологии на пальцах: от физики до движения пакета

Курс простым языком объясняет 12 ключевых сетевых тем, запрошенных пользователем. Особое внимание уделено визуализации и детальному разбору движения пакета через сетевые устройства.

1. Фундамент: Физика, модели OSI/TCP-IP, Инкапсуляция и Декапсуляция

Физика сети: от электричества до битов

Прежде чем говорить о сложных протоколах вроде DNS или NAT, нужно понять, как информация вообще покидает ваш компьютер. В основе всего лежит физика. Компьютер не понимает слова «привет» или картинку с котиком. Он понимает только биты — нули и единицы.

На физическом уровне (Physical Layer) эти биты превращаются в сигналы, которые могут путешествовать по среде передачи. Существует три основных способа передачи:

  • Электричество (Медная витая пара): Наличие напряжения — это 1, отсутствие (или другой уровень) — это 0. Это как включать и выключать фонарик, только миллионы раз в секунду.
  • Свет (Оптоволокно): Импульс света — 1, темнота — 0. Самый быстрый способ передачи данных на большие расстояния.
  • Радиоволны (Wi-Fi): Изменение фазы или частоты волны кодирует информацию.
  • !Преобразование битов в физические сигналы

    Главная задача физического уровня — доставить сигнал от одной сетевой карты до другой, не задумываясь о смысле передаваемой информации.

    Зачем нам модели? (OSI и TCP/IP)

    Представьте, что вы отправляете письмо другу в другую страну. Процесс разбит на этапы: вы пишете текст, кладете в конверт, пишете адрес, почта сортирует, грузовик везет, самолет летит. Водителю грузовика не нужно знать содержание письма, ему нужно знать только маршрут до аэропорта.

    В сетях то же самое. Чтобы разные устройства (от умной лампочки до суперкомпьютера) могли общаться, инженеры придумали эталонные модели.

    Модель OSI (Open Systems Interconnection)

    Это теоретическая модель из 7 уровней. Она идеальна для обучения, так как детально разбивает процессы.

  • Физический (Physical): Провода, сигналы, разъемы (RJ-45). Здесь живут биты.
  • Канальный (Data Link): Здесь живут MAC-адреса и Switch (коммутатор). Данные упаковываются в Кадры (Frames). Происходит проверка на ошибки передачи.
  • Сетевой (Network): Здесь живут IP-адреса и Маршрутизаторы (Routers). Данные становятся Пакетами. Главная задача — найти маршрут (Route) к получателю.
  • Транспортный (Transport): Здесь живут протоколы TCP и UDP. Гарантирует доставку и целостность. Данные называются Сегментами.
  • Сеансовый (Session): Управление диалогом между программами.
  • Представления (Presentation): Шифрование, сжатие данных (например, JPEG или SSL).
  • Прикладной (Application): То, с чем взаимодействует пользователь (браузер, HTTP, DNS).
  • Модель TCP/IP

    Это практическая модель, на которой построен современный интернет. Она проще и объединяет некоторые уровни OSI.

    | Уровень OSI | Уровень TCP/IP | Единица данных (PDU) | Ключевые понятия | | :--- | :--- | :--- | :--- | | 7. Прикладной <br> 6. Представления <br> 5. Сеансовый | Прикладной (Application) | Данные (Data) | HTTP, DNS, DHCP | | 4. Транспортный | Транспортный (Transport) | Сегмент (TCP) / Датаграмма (UDP) | Порты, TCP, UDP | | 3. Сетевой | Интернет (Internet) | Пакет (Packet) | IP-адрес, Маршрутизация, ARP | | 2. Канальный <br> 1. Физический | Сетевого доступа (Network Access) | Кадр (Frame) / Бит | MAC-адрес, Ethernet, Wi-Fi |

    !Сопоставление моделей OSI и TCP/IP

    Инкапсуляция и Декапсуляция: Сетевая матрешка

    Самый важный процесс для понимания движения данных — это инкапсуляция. Когда вы отправляете сообщение в мессенджере, данные спускаются по уровням вниз, и на каждом уровне к ним добавляется заголовок (служебная информация).

    Процесс Инкапсуляции (Сверху вниз)

  • Прикладной уровень: Вы пишете «Привет». Это просто Данные.
  • Транспортный уровень: Компьютер добавляет заголовок TCP или UDP (откуда и куда внутри компьютера, т.е. порты). Теперь это Сегмент.
  • Сетевой уровень: Добавляется IP-заголовок (IP-адрес отправителя и получателя). Теперь это Пакет.
  • Канальный уровень: Добавляется MAC-заголовок (физический адрес соседа) и трейлер (проверка ошибок). Теперь это Кадр (Frame).
  • Физический уровень: Кадр превращается в последовательность битов и улетает в провод.
  • > Инкапсуляция — это как положить письмо в конверт (TCP), конверт в пакет (IP), а пакет в контейнер (Ethernet).

    Процесс Декапсуляции (Снизу вверх)

    Когда данные приходят на устройство получателя, происходит обратный процесс. Устройство читает заголовки, понимает, кому адресовано послание, и снимает «обертку» слой за слоем, пока не доберется до чистых данных.

    !Визуализация процесса добавления заголовков при инкапсуляции

    Движение пакета в простой сети

    Рассмотрим простейший пример: два компьютера соединены через Switch (коммутатор).

  • Компьютер А хочет отправить файл. Он инкапсулирует данные в Кадр.
  • В заголовке кадра указан MAC-адрес Компьютера Б.
  • Кадр попадает на Switch. Свитч — это устройство 2-го уровня (Канального). Он не смотрит на IP-адреса. Он смотрит только на MAC-адреса.
  • Свитч видит: «Ага, это для MAC-адреса Б» и отправляет кадр в нужный порт.
  • Компьютер Б получает биты, собирает кадр, проверяет MAC-адрес. Если совпадает — начинает декапсуляцию до самого верха.
  • Движение пакета в сложной сети (Интернет)

    Здесь в игру вступает Router (Маршрутизатор) и 3-й уровень (Сетевой).

  • Вы запрашиваете сайт Google. Данные упаковываются в Пакет с IP-адресом назначения Google.
  • Пакет упаковывается в Кадр и отправляется на ваш домашний роутер.
  • Роутер (устройство 3-го уровня) делает декапсуляцию до 3-го уровня. Он срывает старый MAC-заголовок, смотрит на IP-адрес назначения.
  • Роутер понимает, что Google далеко. Он смотрит в свою Таблицу маршрутизации (Routing Table), чтобы понять, кому перекинуть пакет дальше (провайдеру).
  • Роутер снова делает инкапсуляцию: создает новый Кадр с новым MAC-адресом (адресом оборудования провайдера) и отправляет дальше.
  • Важно: IP-адреса (отправителя и получателя) в заголовке пакета обычно не меняются на всем пути (если нет NAT, о котором позже). А вот MAC-адреса меняются на каждом прыжке (hop) от роутера к роутеру.

    !Изменение заголовков при прохождении через маршрутизаторы

    Итоги

  • Физика: Все данные — это сигналы (свет, ток, радио). Компьютер понимает только биты.
  • Модели: TCP/IP — это стандарт интернета (4 уровня). OSI — учебная модель (7 уровней).
  • Инкапсуляция: Данные оборачиваются в заголовки при отправке (Данные -> Сегмент -> Пакет -> Кадр -> Биты).
  • Декапсуляция: Обратный процесс снятия заголовков при получении.
  • Адресация: MAC-адреса работают внутри локальной сети (Канальный уровень), IP-адреса нужны для глобальной доставки (Сетевой уровень).
  • 2. Локальная связность: IP-адреса, Маски, ARP и работа Switch

    Локальная связность: IP-адреса, Маски, ARP и работа Switch

    В прошлой статье мы разобрали, как биты бегают по проводам и как данные упаковываются в «матрешку» (инкапсуляция). Теперь пришло время оживить нашу сеть. Представьте, что вы подключили три компьютера в один коммутатор (Switch). Как они находят друг друга? Как компьютер понимает, кому предназначено сообщение?

    Здесь в игру вступают три кита локальной сети: IP-адресация, Маска подсети и протокол ARP.

    IP-адрес: Логический паспорт устройства

    MAC-адрес, о котором мы говорили ранее, «вшит» в сетевую карту на заводе. Это как отпечаток пальца: уникальный, но хаотичный. По отпечатку пальца нельзя понять, в какой стране или городе живет человек.

    Чтобы организовать доставку данных, нужна иерархия. Эту роль выполняет IP-адрес (Internet Protocol Address). Это логический адрес, который выдается администратором или автоматически.

    Самая распространенная версия — IPv4. Это 32-битное число, которое для удобства записывают в виде четырех десятичных чисел, разделенных точками (октетов).

    Пример: 192.168.1.10

    Каждый IP-адрес состоит из двух частей:

  • Адрес сети (Network ID): Название улицы.
  • Адрес хоста (Host ID): Номер дома.
  • Но где заканчивается улица и начинается номер дома? В адресе 192.168.1.10 улицей может быть 192.168.1, а домом 10. Или улицей 192.168, а домом 1.10. Чтобы компьютер знал, где граница, нужна Маска подсети.

    Маска подсети: Граница миров

    Маска подсети (Subnet Mask) — это шаблон, который накладывается на IP-адрес. Она говорит компьютеру: «Вот эта часть адреса — общая для всех наших (сеть), а вот эта — уникальный номер соседа (хост)».

    Маска всегда состоит из последовательности единиц, за которыми следуют нули.

    * 255 в маске означает: «Смотри на это число в IP-адресе, это часть адреса сети». * 0 в маске означает: «Это число — адрес конкретного устройства».

    Рассмотрим классический пример: * IP: 192.168.1.10 * Маска: 255.255.255.0

    Компьютер выполняет побитовую операцию И (AND) между IP и Маской, чтобы получить адрес сети.

    Где — адрес сети, — адрес устройства, — маска подсети, а — побитовое умножение.

    Давайте посчитаем на простом примере последнего октета (числа). Если у нас IP заканчивается на 10, а маска на 0:

    Если маска 255 (в бинарном виде все единицы), то число остается неизменным.

    В итоге для 192.168.1.10 с маской 255.255.255.0: * Первые три числа (192.168.1) — это Сеть. * Последнее число (10) — это Хост.

    !Как маска подсети делит IP-адрес на адрес сети и адрес устройства

    Зачем это нужно?

    Перед отправкой любого пакета компьютер задает себе главный вопрос: «Получатель находится в моей сети или в чужой?»

  • Компьютер берет свой IP и свою Маску -> вычисляет свою Сеть.
  • Берет IP получателя и свою Маску -> вычисляет Сеть получателя.
  • Сравнивает.
  • * Если сети совпадают: Получатель — мой сосед. Я отправлю данные ему напрямую. * Если сети разные: Получатель далеко. Я отправлю данные на Шлюз (Gateway/Router), пусть он разбирается.

    Switch (Коммутатор): Умный почтальон

    Допустим, компьютер понял, что получатель находится в одной с ним локальной сети. Данные спускаются на Канальный уровень (Layer 2), где правят бал MAC-адреса и устройство под названием Switch.

    Свитч выглядит как коробка с кучей разъемов (портов). В отличие от старых хабов (Hub), которые тупо копировали сигнал во все порты, Свитч — интеллектуальное устройство.

    У Свитча есть MAC-таблица (CAM table). Она работает так:

    | Порт | MAC-адрес устройства | | :--- | :--- | | 1 | AA:AA:AA:AA:AA:AA | | 2 | BB:BB:BB:BB:BB:BB |

    Алгоритм работы Свитча:

  • Обучение (Learning): Когда кадр заходит в порт №1, Свитч смотрит на MAC-адрес отправителя. Он записывает: «Ага, устройство с MAC AA... живет на порту 1».
  • Продвижение (Forwarding): Затем Свитч смотрит на MAC-адрес получателя.
  • Если он знает, где этот MAC (есть в таблице), он отправляет кадр только* в нужный порт. Если он не знает* этого адреса, он отправляет кадр во все порты, кроме того, откуда пришел сигнал (это называется Flood).

    !Коммутатор отправляет данные точечно, используя таблицу MAC-адресов

    ARP: Недостающее звено

    Здесь возникает проблема. * Мы (как люди и программы) знаем IP-адрес получателя (например, 192.168.1.5). * Свитч и сетевая карта умеют доставлять только по MAC-адресу.

    Как узнать MAC-адрес соседа, зная только его IP? Нам нужен протокол ARP (Address Resolution Protocol).

    Это работает как перекличка в классе:

  • Запрос (ARP Request): Ваш компьютер кричит на всю сеть: «Эй, кто здесь имеет IP 192.168.1.5? Скажи мне свой MAC!».
  • * Этот запрос отправляется на специальный Broadcast MAC-адрес: FF:FF:FF:FF:FF:FF. Свитч обязан разослать такой кадр абсолютно всем.
  • Ответ (ARP Reply): Устройство с IP 192.168.1.5 слышит запрос, узнает себя и отвечает (уже лично вам): «Это я! Мой MAC — BB:BB...».
  • Кэширование: Ваш компьютер запоминает эту связку (IP -> MAC) в своей ARP-таблице, чтобы не кричать каждый раз.
  • Движение пакета в простой сети (Step-by-Step)

    Давайте соберем всё вместе. Дано: * Компьютер А (IP: 10.0.0.1, MAC: AAAA) * Компьютер Б (IP: 10.0.0.2, MAC: BBBB) * Они подключены к одному Свитчу. * А хочет отправить файл Б.

    Процесс:

  • Проверка маски: Компьютер А накладывает маску на свой IP и IP Б. Результат: «Мы в одной сети».
  • Поиск MAC: Компьютер А смотрит в свою ARP-таблицу: «Знаю ли я MAC для 10.0.0.2
  • Сценарий 1: Не знаю.* Компьютер А формирует ARP-запрос. Свитч рассылает его всем. Б отвечает своим MAC-адресом. А сохраняет его.
  • Инкапсуляция:
  • * Данные упаковываются в Пакет (IP отправителя 10.0.0.1, IP получателя 10.0.0.2). * Пакет упаковывается в Кадр (MAC отправителя AAAA, MAC получателя BBBB).
  • Отправка: Кадр летит в провод к Свитчу.
  • Коммутация: Свитч получает кадр на порту 1.
  • * Обновляет таблицу: «AAAA на порту 1». * Смотрит получателя: BBBB. Ищет в таблице. * Находит: «BBBB на порту 2».
  • Доставка: Свитч отправляет кадр только в порт 2.
  • Прием: Компьютер Б получает кадр, сверяет MAC (совпал), снимает упаковку и забирает данные.
  • !Алгоритм действий компьютера перед отправкой данных в локальной сети

    Итоги

  • IP-адрес — это логический адрес. С помощью Маски подсети он делится на адрес Сети (улица) и адрес Хоста (дом).
  • Маска подсети нужна, чтобы понять: получатель «свой» (в локальной сети) или «чужой» (нужен роутер).
  • ARP — это клей между IP и MAC. Он позволяет узнать физический адрес устройства по его IP-адресу через широковещательный запрос.
  • Switch (Коммутатор) работает на 2-м уровне (Канальном). Он использует MAC-адреса для точечной доставки данных и не смотрит на IP-адреса.
  • Broadcast (FF:FF:FF:FF:FF:FF) — это адрес «для всех». Свитч рассылает такие кадры во все порты.