Основы компьютерных сетей и протоколов в среде Kali Linux

Практический курс, охватывающий модели OSI и TCP/IP [mkdev.me](https://mkdev.me/ru/posts/kak-rabotayut-seti-chto-takoe-svitch-router-dns-dhcp-nat-vpn-i-eschyo-s-desyatok-neobhodimyh-veschey), а также работу основных протоколов. Обучение включает использование инструментов Kali Linux (ip, ping, nmap) для диагностики и анализа сети [labex.io](https://labex.io/ru/tutorials/kali-basic-networking-tools-in-kali-552191).

1. Модели OSI и TCP/IP: основы архитектуры и настройка интерфейсов

Модели OSI и TCP/IP: основы архитектуры и настройка интерфейсов

Для специалиста по информационной безопасности, работающего в Kali Linux, сеть — это не просто способ выхода в интернет, а основное поле деятельности. Чтобы искать уязвимости, перехватывать трафик или настраивать защищенные туннели, необходимо понимать, как именно данные перемещаются от одного компьютера к другому. В основе этого понимания лежат две архитектурные модели: OSI и TCP/IP.

Зачем нужны сетевые модели?

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

Сетевые модели выполняют ту же функцию: они разбивают сложный процесс передачи данных на простые этапы (уровни). Это позволяет разному оборудованию и программам от разных производителей работать вместе.

Эталонная модель OSI

Модель OSI (Open Systems Interconnection) — это теоретический стандарт, состоящий из 7 уровней. Она помогает понять структуру сети, хотя в чистом виде используется редко. Мы разберем её «сверху вниз» — от приложения к проводу, так как хакеры часто начинают анализ именно с прикладного уровня.

!Структура семиуровневой модели OSI

Уровни модели OSI

  • Прикладной уровень (L7 — Application)
  • Это то, что видит пользователь и с чем взаимодействуют программы. Здесь работают протоколы HTTP (веб-сайты), DNS (преобразование имен в IP), SMTP (почта). Если вы атакуете веб-сайт через браузер или SQL-инъекцию, вы работаете на L7.

  • Уровень представления (L6 — Presentation)
  • Отвечает за формат данных. Здесь происходит кодирование (ASCII, UTF-8), сжатие и шифрование (например, SSL/TLS). Этот уровень «переводит» данные с языка сети на язык приложения.

  • Сеансовый уровень (L5 — Session)
  • Управляет сеансами связи: устанавливает соединение, поддерживает его и разрывает. Он следит за тем, чтобы диалог между приложениями не прерывался.

  • Транспортный уровень (L4 — Transport)
  • Один из самых важных для пентестера. Отвечает за надежность доставки и распределение данных между приложениями. Здесь живут протоколы TCP и UDP. TCP* гарантирует доставку (рукопожатие, проверка целостности). UDP* отправляет данные без гарантии (быстрее, используется для видео и DNS). > Транспортный уровень «договаривается» с получателем через заголовки, несмотря на то, что физически данные проходят через все нижние уровни nubes.ru.

  • Сетевой уровень (L3 — Network)
  • Отвечает за маршрутизацию — выбор пути, по которому пойдут данные. Главный герой здесь — IP-адрес. На этом уровне работают маршрутизаторы (роутеры). Команды ping и утилита traceroute в Kali Linux работают именно здесь.

  • Канальный уровень (L2 — Data Link)
  • Обеспечивает передачу данных внутри одной локальной сети (например, между вашим ноутбуком и Wi-Fi роутером). Здесь используются MAC-адреса (физические адреса устройств). Коммутаторы (свитчи) работают на L2.

  • Физический уровень (L1 — Physical)
  • Это «железо»: кабели, радиоволны Wi-Fi, оптическое волокно. Здесь данные превращаются в биты (0 и 1) и передаются в виде электрических или световых сигналов.

    Стек протоколов TCP/IP

    Если OSI — это теория, то TCP/IP — это практика, на которой построен современный Интернет. Эта модель проще и состоит всего из 4 уровней (иногда выделяют 5), объединяя некоторые функции OSI.

    !Сопоставление уровней: Прикладной TCP/IP объединяет L5-L7 OSI

    Сопоставление уровней

    | Уровень TCP/IP | Соответствие OSI | Протоколы | | :--- | :--- | :--- | | Прикладной (Application) | Прикладной, Представления, Сеансовый (L5-L7) | HTTP, DNS, DHCP, SSH, FTP | | Транспортный (Transport) | Транспортный (L4) | TCP, UDP | | Интернет (Internet) | Сетевой (L3) | IP (IPv4, IPv6), ICMP, NAT | | Канальный / Доступа к сети | Канальный, Физический (L1-L2) | Ethernet, Wi-Fi, ARP |

    В среде Kali Linux мы чаще всего оперируем терминами TCP/IP. Например, когда мы сканируем порты утилитой Nmap, мы взаимодействуем с Транспортным уровнем. Когда настраиваем IP-адрес — с уровнем Интернет.

    Инкапсуляция данных

    Понимание инкапсуляции критически важно для анализа трафика в Wireshark или tcpdump. Когда данные спускаются по уровням вниз (от приложения к кабелю), каждый уровень добавляет к ним свой заголовок. Этот процесс называется инкапсуляцией.

  • Данные (Data): Вы вводите пароль на сайте (L7).
  • Сегмент (Segment): На L4 добавляется заголовок TCP (порт отправителя и получателя).
  • Пакет (Packet): На L3 добавляется заголовок IP (IP-адрес отправителя и получателя).
  • Кадр (Frame): На L2 добавляется заголовок Ethernet (MAC-адрес отправителя и получателя).
  • Биты (Bits): Кадр преобразуется в сигналы и уходит в провод.
  • На принимающей стороне происходит обратный процесс — декапсуляция (снятие оберток).

    > Инженеры безопасности используют уровневый подход OSI для архитектуры Zero Trust, где контроль доступа и инспекция трафика применяются на разных уровнях модели it-classic.ru.

    Практика в Kali Linux: Работа с интерфейсами

    В Kali Linux управление сетью осуществляется через терминал. Старая команда ifconfig считается устаревшей (хотя всё ещё работает), современный стандарт — утилита ip из пакета iproute2.

    1. Просмотр интерфейсов

    Откройте терминал и введите:

    Вы увидите список интерфейсов: * lo (loopback): локальная петля, адрес 127.0.0.1. Используется для общения программ внутри самого компьютера. * eth0: обычно это проводное подключение (Ethernet). * wlan0: обычно это беспроводной адаптер (Wi-Fi).

    2. Анализ вывода

    Рассмотрим пример строки вывода для eth0:

    inet 192.168.1.15/24 brd 192.168.1.255 scope global dynamic eth0

    * inet: указывает на IPv4 адрес. * 192.168.1.15: ваш текущий IP-адрес. * /24: маска подсети (указывает размер сети). * brd: широковещательный адрес.

    Также обратите внимание на строку link/ether. За ней следует ваш MAC-адрес (например, 00:0c:29:bd:8a:22). Это адрес уровня L2.

    3. Управление состоянием интерфейса

    Иногда для смены MAC-адреса или настройки адаптера нужно выключить и включить интерфейс.

    Выключить интерфейс:

    Включить интерфейс:

    4. Назначение IP-адреса вручную

    В Kali Linux часто требуется задать статический IP, чтобы не зависеть от DHCP сервера (например, при атаке «Man-in-the-Middle»).

    Команда для назначения адреса:

    Чтобы удалить старый адрес:

    Итоги

    * Модель OSI состоит из 7 уровней и служит теоретической базой для понимания сетевых процессов и диагностики ошибок. * Стек TCP/IP — это практическая реализация из 4 уровней, на которой работает современный Интернет. * Инкапсуляция — это процесс «упаковки» данных в заголовки протоколов при движении от приложения к физическому кабелю. * В Kali Linux основной инструмент для работы с сетевыми интерфейсами (L2 и L3) — это команда ip (например, ip addr, ip link). * Понимание того, на каком уровне работает протокол (IP на L3, TCP на L4, HTTP на L7), позволяет точно выбирать инструменты для атаки или защиты.

    2. Транспортный уровень: принципы работы и анализ TCP/UDP

    Транспортный уровень: принципы работы и анализ TCP/UDP

    В предыдущей статье мы разобрали архитектуру сетевых моделей и научились настраивать IP-адреса на сетевом уровне (L3). Однако IP-адрес позволяет доставить пакет только до конкретного компьютера (хоста). Но как компьютер понимает, какой именно программе предназначен этот пакет — браузеру, мессенджеру или SSH-серверу?

    За это отвечает Транспортный уровень (L4). Именно здесь происходит «магия» распределения данных между приложениями и управление надежностью доставки. Для специалиста по кибербезопасности в Kali Linux понимание L4 критично: сканирование портов, перехват сессий и DoS-атаки строятся на особенностях протоколов этого уровня.

    Порты и сокеты: основа адресации L4

    Если IP-адрес — это номер дома, то порт — это номер квартиры. Порт — это 16-битное число, которое идентифицирует конкретный процесс (программу) на устройстве.

    Диапазоны портов

    Всего существует портов (от 0 до 65535). Они делятся на три группы:

  • Системные (Well-known, 0–1023): Зарезервированы для стандартных служб. Например, веб-серверы обычно «слушают» порт 80 (HTTP) или 443 (HTTPS), а SSH — порт 22.
  • Зарегистрированные (1024–49151): Используются конкретными приложениями (например, базы данных MySQL часто используют 3306).
  • Динамические (49152–65535): Обычно используются клиентами для исходящих соединений.
  • Комбинация IP-адреса и порта называется сокетом (например, 192.168.1.5:80).

    Практика в Kali Linux: Просмотр открытых портов

    Чтобы увидеть, какие порты открыты на вашей машине (какие программы ждут подключений), используйте утилиту ss (современная замена netstat):

    * -t: показать TCP порты. * -u: показать UDP порты. * -l: показать только слушающие (listening) сокеты. * -n: показывать номера портов, а не названия сервисов.

    Протокол UDP: Скорость превыше всего

    UDP (User Datagram Protocol) — это простейший протокол транспортного уровня. Его принцип: «отправил и забыл».

    Характеристики UDP

    * Без установления соединения: Клиент просто шлет пакеты серверу, не спрашивая, готов ли тот их принять. * Ненадежный: Нет гарантии доставки. Если пакет потерялся, UDP не будет запрашивать его повторно. * Без упорядочивания: Пакеты могут прийти в разном порядке. * Легковесный: Заголовок UDP занимает всего 8 байт.

    Где используется?

    Там, где важна скорость, а потеря пары пакетов не критична: потоковое видео, онлайн-игры, DNS-запросы, VoIP (IP-телефония).

    Анализ UDP в Kali Linux

    Попробуем передать данные по UDP с помощью утилиты netcat (nc) и перехватить их.

  • Откройте первый терминал (это будет сервер) и запустите прослушивание порта 5555 по UDP:
  • Откройте второй терминал (клиент) и отправьте данные:
  • Напишите любой текст и нажмите Enter. Он появится в первом окне.

    Если вы запустите сниффер tcpdump в третьем окне:

    Вы увидите, что обмен происходит мгновенно, без предварительных «рукопожатий».

    Протокол TCP: Надежность и контроль

    TCP (Transmission Control Protocol) — это полная противоположность UDP. Его девиз: «Доверяй, но проверяй». На TCP работает большая часть интернета (веб-сайты, почта, передача файлов).

    Характеристики TCP

    * Установление соединения: Перед передачей данных создается виртуальный канал. * Гарантия доставки: Если пакет потерян, TCP отправит его снова. * Упорядочивание: Все пакеты нумеруются (Sequence Number), чтобы получатель мог собрать их в правильном порядке. * Управление потоком: Регулирует скорость передачи, чтобы не перегрузить получателя.

    Тройное рукопожатие (3-Way Handshake)

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

    !Процесс установления соединения TCP (3-Way Handshake)

  • SYN (Synchronize): Клиент отправляет пакет с флагом SYN («Я хочу начать разговор»).
  • SYN-ACK (Synchronize-Acknowledge): Сервер отвечает флагами SYN и ACK («Я услышал тебя и тоже готов говорить»).
  • ACK (Acknowledge): Клиент подтверждает готовность сервера флагом ACK («Отлично, начинаем»).
  • Только после этого начинается передача данных (HTTP-запрос и т.д.).

    > Именно на манипуляции этими флагами работает самый популярный тип сканирования в Nmap — SYN Scan (-sS). Сканер посылает SYN, получает SYN-ACK (значит порт открыт) и... не посылает последний ACK, а резко обрывает соединение (RST). Это позволяет быстро проверить порт, не создавая полноценного соединения habr.com.

    Математика надежности: Пропускная способность

    TCP использует механизм «окна» (Window Size), чтобы определить, сколько данных можно отправить без подтверждения. Теоретическая пропускная способность TCP ограничена задержкой сети (RTT — Round Trip Time).

    где: * — пропускная способность (бит/с). * — размер окна приема (Receive Window) в битах. Это объем данных, который получатель готов принять в буфер. * — время кругового обращения (время, за которое сигнал идет туда и обратно).

    Пример: Если размер окна байт ( бит), а пинг до сервера сек (100 мс), то максимальная скорость одного потока не превысит:

    Даже если у вас гигабитный канал, физика протокола ограничит скорость одного соединения при высоком пинге, если не использовать специальные расширения TCP (Window Scaling).

    Практика в Kali Linux: Анализ флагов

    Давайте посмотрим на рукопожатие вживую.

  • Запустите tcpdump для перехвата флагов:
  • Эта команда фильтрует пакеты, где установлены флаги SYN или ACK.

  • В другом окне попробуйте подключиться к любому сайту, например, Google:
  • В окне с tcpdump вы увидите последовательность: S (SYN), S. (SYN-ACK), . (ACK). Это и есть «пульс» интернета.

    Сравнение TCP и UDP

    | Характеристика | TCP | UDP | | :--- | :--- | :--- | | Тип связи | С установлением соединения | Без соединения | | Надежность | Гарантированная доставка | Потери возможны | | Порядок данных | Строго упорядочен | Хаотичен | | Скорость | Медленнее (из-за проверок) | Максимально быстрая | | Заголовок | 20-60 байт | 8 байт | | Примеры | HTTP, SSH, FTP, SMTP | DNS, DHCP, Video Streaming |

    Итоги

  • Транспортный уровень (L4) отвечает за доставку данных конкретному приложению, используя систему портов (0–65535).
  • UDP — это быстрый, но ненадежный протокол («выстрелил и забыл»), идеальный для видео и DNS.
  • TCP — это надежный протокол с гарантией доставки, который требует установления соединения через тройное рукопожатие (SYN -> SYN-ACK -> ACK).
  • Понимание флагов TCP (особенно SYN, ACK, RST) является фундаментом для работы с сетевыми сканерами вроде Nmap.
  • В Kali Linux для диагностики L4 используются инструменты ss (просмотр сокетов), nc (создание соединений) и tcpdump (анализ пакетов).