Cloud & DevOps — Виртуализация и Сети
Подробный понятный гид: каждое понятие с «зачем оно нужно», аналогией из реальной жизни и наглядной схемой. Без жаргона ради жаргона.
Бэкенд-разработчику обязательно понимать, как устроены сети и виртуализация. Без этого нельзя:
- задеплоить приложение (нужно понимать VM, контейнер, IP, порты);
- отладить «у меня работает, а на проде нет» (firewall, NAT, DNS, MTU);
- спроектировать инфраструктуру (подсети, VPC в AWS, VLAN);
- общаться с DevOps-инженерами на одном языке.
| Блок | Что узнаешь |
|---|---|
| Виртуализация | Что такое VM, гипервизор Type 1 / Type 2 / Hybrid, чем отличается от контейнера |
| Основы сетей | PAN/LAN/WAN, топологии, hub/switch/router/gateway/modem |
| Модели OSI и TCP/IP | 7 уровней OSI vs 4–5 TCP/IP, как пакет «упаковывается» (encapsulation) |
| Адреса | MAC (локально), IPv4 (глобально), IPv6 (будущее) |
| Протоколы | ARP, TCP, UDP, ICMP, порты |
| Подсети | Маски, CIDR, NAT, VLSM — как делят сети |
| VLAN | Логическое разделение сети, 802.1Q tagging |
Виртуализация — это создание программной копии чего-то физического (компьютера, сети, диска), которая ведёт себя как настоящая, но живёт внутри другого компьютера.


| Тип | Что виртуализируется | Пример |
|---|---|---|
| Hardware (Server) | Целый компьютер (CPU + RAM + диск) | VMware ESXi, KVM, Hyper-V |
| Desktop | Рабочий стол отдельно от железа | Citrix, VDI |
| Application | Приложение запускается без установки | Microsoft App-V, Docker (отчасти) |
| Network | Несколько физ. сетей видны как одна (или наоборот) | VLAN, VPC, SDN |
| Storage | Несколько дисков как один большой | SAN, RAID, S3, Ceph |
| Mobile | Виртуализация на телефонах | Android dual-instance |
| Признак | Full Virtualization | Paravirtualization |
|---|---|---|
| Гостевая ОС знает, что она в VM? | Нет — думает, что на реальном железе | Да — специально модифицирована |
| Как работает | Гипервизор «переводит» инструкции на лету (binary translation) | ОС вызывает гипервизор напрямую (hypercalls) |
| Скорость | Медленнее (доп. перевод) | Быстрее |
| Совместимость | Любая ОС без изменений | Нужна модификация гостя |
Virtual Machine (VM) — это файл (точнее, набор файлов) на диске, который имитирует целый компьютер: своя ОС, своё «железо», свои настройки сети.
3 ключевых свойства VM:
- Partitioning — на одном хосте могут жить много VM, делят CPU/RAM/диск.
- Isolation — VM не видят друг друга (если так настроено), их можно безопасно изолировать.
- Encapsulation — VM — это файлы. Можно скопировать на другой сервер, сделать снапшот, бэкап.
Гипервизор — программа (или прошивка / железо), которая создаёт и запускает VM. Это «прослойка», которая делит ресурсы реального компа между виртуальными.

| Тип | Где живёт | Скорость | Примеры |
|---|---|---|---|
| Type 1 — Native / Bare Metal | Прямо на железе, без хостовой ОС | Самый быстрый | VMware ESXi, KVM, Hyper-V, Citrix XenServer |
| Type 2 — Hosted | Внутри обычной ОС (Windows/Mac/Linux) | Медленнее | VirtualBox, VMware Workstation, Parallels Desktop, QEMU |
| Type 3 — Hybrid | Тонкий гипервизор + служебная ОС | Средне | Microsoft Hyper-V (в Win Server), Xen |
VirtualBox на твоём ноутбуке — это Type 2 (поверх macOS). А продакшен-серверы у хостеров (DigitalOcean, AWS EC2) — это Type 1 (KVM/Xen прямо на железе).
Часто путают VM и Docker-контейнер. Главное различие:
| VM | Container (Docker) | |
|---|---|---|
| Что внутри | Полная ОС + ядро + приложение | Только приложение + библиотеки. Ядро общее с хостом |
| Размер | Гигабайты (полный диск ОС) | Мегабайты |
| Запуск | Минуты (загрузка ОС) | Миллисекунды |
| Изоляция | Полная (отдельное ядро) | Процессная (общее ядро Linux) |
| Когда выбирать | Разные ОС (Windows + Linux), сильная изоляция | Микросервисы, CI/CD, скорость |
- Скачать VirtualBox с
virtualbox.org. - Скачать ISO с Ubuntu Server / Desktop с
ubuntu.com. - Создать VM, указать ISO как загрузочный диск, выделить 4 ГБ RAM и 20 ГБ диска.
- Установить Ubuntu, попробовать команды управления: Start, Stop, Pause, Save State.
- Сделать клон VM (Clone) — увидишь, что копия запускается независимо.
- Сделать снапшот (Snapshot), что-то сломать, восстановить из снапшота.
Полезно знать, как мы пришли к современному Интернету — это объясняет, почему многое сделано именно так.
Электромеханическая печатная машинка, которая позволяла обмениваться текстом по телефонной линии. Звуковой сигнал переводился в текст и наоборот.
- Ограничение: только point-to-point (двое говорят между собой). Не масштабируется.
- Использовалось в новостных агентствах, телеграфе.
- Наследие: современные терминалы в Linux до сих пор называются «TTY» (
/dev/tty).
Дональд Дэвис (UK) предложил концепцию: вместо того, чтобы держать целую телефонную линию для одного разговора (circuit switching), разбить сообщение на маленькие пронумерованные пакеты и отправить их по общей сети.
ARPA (Advanced Research Projects Agency, США) построило первую packet-switched сеть.
- 29 октября 1969 — первая передача данных между UCLA и Stanford Research Institute.
- Хотели послать «
login», но система упала после «lo» — официально первое сетевое сообщение. - Использовал первую версию IP (Internet Protocol).
- Это основа современного Интернета.
Первая публичная сеть — работает и сегодня. Принцип: как email, но «один → многим». Сообщения группируются в newsgroups (форумы).
Культурное наследие: из USENET в массы пошли понятия nickname, smiley, moderator, spam, troll, ban. По сути это прародитель Reddit и всех форумов.
Протокол: NNTP (Network News Transfer Protocol).
Любительская сеть на основе модемов и телефонных линий. Стоила копейки (звонок ночью был дешёвым) и дала миллионам людей доступ к глобальному общению до массового Интернета.
Сегодня практически вымерла, но научила людей строить глобальные сообщества.
Интернет = глобальная сеть, состоящая из множества меньших сетей, обменивающихся данными по единым протоколам.
Раннее подключение: модемы по телефонной линии (dial-up). Тот самый звук «писк-шипение» при подключении — это была согласовываемая модуляция: модем превращал биты данных в аналоговый звук.
- Data Packets — данные режутся, отправляются, собираются обратно.
- IP Address — уникальный идентификатор (напр.
192.168.0.1). - DNS (Domain Name System) — переводит имена (
google.com) в IP (142.250.185.14).
- Internet Hosts — центральные узлы, связывающие провайдеров.
- ISPs (Internet Service Providers) — дают доступ конечным пользователям.
- Типы подключения: dial-up (устар.), DSL, кабельное, LTE/5G, оптоволокно.
- Протоколы: определяют правила обмена (TCP/IP, HTTP, etc.).
Сети классифицируют по географическому покрытию. Каждый тип решает свою задачу.
PAN — Personal Area Network
Что: очень маленькая сеть вокруг одного человека (~10 м).
Примеры: Bluetooth-наушники, мышь, клавиатура, AirDrop между Mac/iPhone.
Зачем знать: понимаешь, чем Bluetooth отличается от Wi-Fi.
LAN — Local Area Network
Что: сеть в пределах здания (офис, дом, кампус). До ~16 млн устройств теоретически.
Технологии: Ethernet (по кабелю), Wi-Fi (по воздуху — это WLAN).
Адреса: приватные IP (192.168.x.x, 10.x.x.x).
Зачем знать: когда коллега говорит «зайди по локалке на сервер», он про LAN.
MAN — Metropolitan Area Network
Что: сеть масштаба города.
Примеры: городской провайдер (Beeline, Kazakhtelecom), кабельное ТВ, муниципальный оптоволоконный backbone.
Роль: мост между LAN (офисы города) и WAN (глобальной сетью).
WAN — Wide Area Network
Что: сеть масштаба страны / континента / мира. Интернет — это самый большой WAN.
Технологии: магистральные оптические каналы, спутники, подводные кабели.
Кто строит: крупные провайдеры (Tier-1, Tier-2 ISPs), Google/Meta/Amazon (свои частные WAN).
WLAN — Wireless LAN
То же что LAN, но по воздуху (Wi-Fi). Минусы по сравнению с проводным LAN:
- медленнее при множестве клиентов;
- помехи (микроволновка может рубить сигнал);
- безопасность — трафик можно «снифать из воздуха», нужен WPA2/WPA3.
VPN — Virtual Private Network
Что: «виртуальный приватный кабель», проложенный поверх публичного Интернета. Трафик шифруется в туннеле.
Зачем 2 типа:
- Personal VPN (NordVPN, Surfshark) — приватность, обход блокировок.
- Corporate VPN (OpenVPN, WireGuard, Cisco AnyConnect) — сотрудник из дома получает доступ к внутренней сети офиса как будто он там физически.
Топология — это «карта» того, как провода и устройства соединены между собой.
- Физическая топология — как реально лежат кабели.
- Логическая топология — как данные «текут» между устройствами (может отличаться от физической).
Point-to-Point
Два устройства, один кабель. Просто, надёжно, но не масштабируется.
Bus
Один общий кабель, к нему подключены все. Устаревшее (Ethernet 10BASE2).
Минус: если кабель порвётся в середине — вся сеть упадёт. Все устройства слышат весь трафик (security risk).
Star (самая популярная сегодня)
Все устройства подключены к центральному узлу (switch / hub / router).
Плюс: один кабель упал — остальные работают. Легко искать неисправность.
Минус: упал центральный switch — упало всё.
Ring
Каждое устройство связано с двумя соседями, образуя кольцо. Данные идут в одну сторону.
Минус: один узел сломался — кольцо разорвалось. Решение: Dual Ring (два кольца, одно резервное).
Mesh — на этом построен Интернет
Каждое устройство связано с многими другими (не обязательно со всеми).
Плюс: отказ одного устройства/линка не ломает сеть — данные пойдут другим путём.
Минус: очень дорого (много кабелей).
Где: магистральные сети Интернета — Partial Mesh.
Hybrid
Реальные корпоративные сети — комбинация Star + Mesh + Ring. Часто древовидная структура.
Каждое устройство работает на определённом OSI-уровне. Чем выше уровень — тем «умнее» устройство и тем больше понимает о трафике.
Большие корпоративные сети строят по трёхуровневой модели (Cisco hierarchical model):
| Уровень | Где | Что делает | Устройства |
|---|---|---|---|
| Access | Этаж офиса | Подключает конечные устройства (ПК, принтеры, IP-телефоны) | Обычные switch'и |
| Distribution | Между этажами / отделами | Объединяет access switch'и, фильтрует трафик, маршрутизация VLAN | Управляемые / L3 switch'и |
| Core | Backbone здания / сайта | Магистраль — связывает distribution-узлы на максимальной скорости | Мощные L3 switch'и и router'ы |
| Уровень OSI | Устройство | Что умеет |
|---|---|---|
| L1 (Physical) | NIC (отчасти), Repeater, Hub, Modem | Просто гонит биты / сигналы |
| L2 (Data Link) | NIC (полностью), Bridge, Switch | Понимает MAC-адреса, ходит внутри LAN |
| L3 (Network) | Router, L3 Switch | Понимает IP, маршрутизирует между сетями |
| Все уровни | Gateway | Переводит между разными протоколами |
NIC (Network Interface Card)
Это «сетевая карта» — деталь в твоём ноутбуке/сервере, которая физически подключает к сети. Имеет уникальный MAC-адрес.
Где живёт:
- External — внешняя (USB Wi-Fi-адаптер).
- Internal — PCI-карта на материнской плате.
- Integrated — встроена в чипсет (все современные ноутбуки).
Эволюция коннекторов NIC:
| Коннектор | Где использовался | Скорость |
|---|---|---|
| AUI (Attachment Unit Interface) | 10BASE5 (Thick Ethernet, толстый коаксиал) | 10 Mbps |
| BNC (Bayonet Connector) | 10BASE2 (Thin Ethernet, тонкий коаксиал) | 10 Mbps |
| RJ-45 (8P8C) | Современный Ethernet — то, что ты видишь в кабеле LAN | до 10 Gbps |
| Fiber (SC, LC, ST) | Магистральные сети, ЦОДы | до 100 Gbps на 40 км |
OSI: работает на L1 (Physical) + L2 (Data Link). Это «гибридное» устройство.
Repeater
Что: регенерирует и усиливает сигнал, чтобы кабель мог быть длиннее.
OSI: L1 (Physical). Не понимает ничего о содержимом — просто усиливает.
Зачем: у Ethernet есть ограничение по длине кабеля (~100 м). Repeater позволяет «продлить» сеть дальше.
Минус: не фильтрует ничего — повторяет всё, включая шум.
Сегодня: почти не используется отдельно, функция встроена в switch'и и Wi-Fi extender'ы.
Hub (устарел)
Получил пакет — отправил всем подключённым. Тупой повторитель. Все слышат всех → коллизии, security.
Сейчас не используется — везде switches.
Bridge (предок switch'а)
Что: соединяет и фильтрует трафик между двумя сегментами сети. Использует MAC-таблицу, чтобы решить — пропускать кадр дальше или нет.
OSI: L2 (Data Link).
Типы:
- Transparent — невидим для устройств, сам строит MAC-таблицу.
- Translating — соединяет разные среды (Ethernet ↔ Wi-Fi).
- Encapsulating — оборачивает кадры одного протокола в другой.
Плюсы:
- Уменьшает количество коллизий, разделяя collision domains.
- Может фильтровать битые или слишком большие кадры.
Минус: добавляет задержку (анализирует кадры).
Сегодня: почти заменён switch'ами. Switch — это, по сути, многопортовый bridge.
Switch (основа любой LAN)
Получил пакет — посмотрел MAC получателя — отправил только нужному порту. Хранит MAC-таблицу (порт ↔ MAC).
Работает на L2. IP его не интересует — только MAC.
Методы коммутации:
- Store-and-Forward — полностью принять кадр, проверить на ошибки, потом отправить. Надёжно, но с задержкой.
- Cut-Through — отправить сразу как только увидели MAC получателя. Быстро, но может пропустить битый кадр.
- Fragment-Free — принять первые 64 байта (там обычно ошибки), потом форвардить. Компромисс.
Router
Получил пакет — посмотрел IP получателя — посмотрел routing table — решил, в какой следующий узел («next hop») отправить.
Работает на L3. Связывает разные сети между собой (LAN ↔ Интернет).
Дома твой Wi-Fi-роутер — это маленький router + switch + Wi-Fi access point + DHCP-сервер + NAT в одном корпусе.
L3 Switch (Multilayer)
Switch с функциями router'а. Работает на L2 + L3. Очень быстрый (специальные ASIC-чипы), но менее гибкий чем настоящий router.
Где: большие корпоративные LAN с несколькими VLAN — нужно быстро маршрутизировать между VLAN'ами без покупки дорогого роутера.
Gateway
Устройство (или софт), которое переводит между разными протоколами. Может работать на любых уровнях OSI.
Примеры: домашний роутер часто называют «default gateway» (он шлюз в Интернет); API Gateway в облаке; firewall как gateway между Интернетом и внутренней сетью.
Modem
Modulator + Demodulator. Переводит цифровой сигнал → аналоговый (для телефонной линии, DSL, кабельного ТВ) и обратно.
Сегодня чаще встретишь интегрированный modem + router от провайдера в коробке.
OSI (Open Systems Interconnection) — это теоретическая модель того, как устройства должны общаться по сети. Она не используется напрямую в коде, но это «язык», на котором говорят все сетевики.
| # | Уровень | Что делает | Единица данных (PDU) | Примеры |
|---|---|---|---|---|
| 7 | Application | Сервис для пользователя | Data | HTTP, FTP, SMTP, DNS |
| 6 | Presentation | Формат, шифрование, сжатие | Data | TLS, JPEG, ASCII↔Unicode |
| 5 | Session | Сессии, контроль диалога | Data | NetBIOS, RPC |
| 4 | Transport | Надёжная доставка end-to-end | Segment | TCP, UDP |
| 3 | Network | Маршрутизация между сетями | Packet | IP, ICMP, ARP |
| 2 | Data Link | Доставка внутри одной сети | Frame | Ethernet, Wi-Fi, PPP |
| 1 | Physical | Биты в провод/радио | Bits | Кабель, разъёмы, сигналы |
- L7 Application: Outlook формирует email через протокол
SMTP. - L6 Presentation: текст кодируется в UTF-8, прикреплённое фото — в JPEG, всё это шифруется через TLS.
- L5 Session: устанавливается сессия с почтовым сервером (логин, токен).
- L4 Transport: TCP режет email на сегменты, нумерует, ждёт подтверждений о доставке.
- L3 Network: IP добавляет к каждому сегменту твой IP + IP сервера, выбирает маршрут.
- L2 Data Link: Ethernet оборачивает пакет в кадр, добавляет MAC твоего ноута + MAC роутера.
- L1 Physical: кадр превращается в электросигнал в кабеле / радиоволну в Wi-Fi.
На сервере процесс идёт наоборот (снизу вверх): сигналы → биты → кадр → пакет → сегмент → email.
- L7 — каждый день (HTTP, JSON, REST, GraphQL).
- L4 — часто (TCP vs UDP, порты, firewall).
- L3 — иногда (IP, маршруты в VPN/AWS).
- L2 — редко (MAC, VLAN — больше DevOps/сетевики).
- L1 — почти никогда (если не работаешь с железом).
- L5/L6 — почти забыты, их функции «размазали» по L4 и L7.
TCP/IP — это практическая модель, на которой реально построен Интернет. В отличие от OSI это не теория, а живой набор протоколов.
| Уровень | Соответствует OSI | Что делает | Протоколы |
|---|---|---|---|
| Application | L5+L6+L7 | Сервис для приложений | HTTP, FTP, SMTP, DNS, DHCP |
| Transport | L4 | End-to-end доставка, порты | TCP, UDP |
| Internet | L3 | Маршрутизация по IP | IP, ICMP, ARP |
| Link (Network Interface) | L1+L2 | Локальная доставка, кадры | Ethernet, Wi-Fi, PPP |
В учебниках часто рисуют 5 уровней — это TCP/IP, но с разделением Link на Physical и Data Link (чтобы было проще сравнивать с OSI).
| OSI | TCP/IP | |
|---|---|---|
| Тип | Теоретическая модель | Реальные протоколы |
| Уровней | 7 | 4 (или 5 в гибриде) |
| Где используется | Учебники, теория | Интернет, реальные системы |
| Кто придумал | ISO (международный комитет) | DARPA + DoD (военные США) |
Когда твои данные идут вниз по уровням (от приложения к проводу), каждый уровень добавляет свой заголовок. Это называется инкапсуляция — как матрёшка.
Когда данные приходят на другой стороне и идут вверх — каждый уровень снимает свой заголовок. Это декапсуляция.
| Уровень | Что добавляет | Получается |
|---|---|---|
| Application | Полезные данные (HTTP request, JSON) | Data |
| Transport (TCP) | + порт источника, порт получателя, sequence number | Segment |
| Internet (IP) | + IP источника, IP получателя, TTL | Packet |
| Data Link (Ethernet) | + MAC источника, MAC получателя, CRC checksum | Frame |
| Physical | превращает в сигналы (электричество / свет / радио) | Bits |
Зеркальный процесс. Каждый уровень читает свой заголовок (например: «это мой IP? да!»), удаляет его и передаёт «начинку» наверх.
MAC (Media Access Control) — это уникальный идентификатор сетевой карты (NIC). Прошивается производителем при изготовлении.
- Длина: 48 бит = 6 байт.
- Запись: 6 пар hex через двоеточие или дефис.
- Пример:
D4:6A:6D:89:1F:22
| Часть | Что | Пример |
|---|---|---|
| Первые 3 байта (OUI) | Идентификатор производителя (выдаёт IEEE) | D4:6A:6D = Lenovo |
| Последние 3 байта | Серийник конкретной NIC у производителя | 89:1F:22 |
MAC работает только в пределах одной локальной сети (LAN). Когда пакет пересекает router — MAC меняется на каждом hop'е.
- В LAN-кадре указан MAC отправителя и MAC получателя в той же подсети.
- При переходе через router: router принимает кадр (с его MAC как получатель), снимает Ethernet-заголовок, выбирает следующий hop, упаковывает в новый кадр с новым MAC получателя.
- IP при этом не меняется на всём пути (если нет NAT).
Технически MAC «прошит», но ОС позволяет его подменить (Locally Administered Address). Используется для:
- обхода ограничений по MAC (некоторые сети пускают только «известные» MAC);
- анонимности;
- тестирования.
IPv4 — это адрес, по которому твой компьютер находят в Интернете. 32 бита, 4 октета по 8 бит. Пример: 192.168.1.1.
32 бита = 4 байта = 4 октета. Каждый октет = число от 0 до 255 (потому что 2⁸ = 256).
Всего адресов: 2³² ≈ 4.3 млрд. Звучит много — но не хватило!
В 1981 IPv4 разделили на 5 классов по первым битам:
| Класс | Диапазон | Хостов в сети | Где |
|---|---|---|---|
| A | 0–127.x.x.x | ~16 млн | Гигантские сети (gov, гиганты) |
| B | 128–191.x.x.x | ~65k | Крупные организации |
| C | 192–223.x.x.x | 254 | Малые сети |
| D | 224–239.x.x.x | — | Multicast (групповая рассылка) |
| E | 240–255.x.x.x | — | Экспериментальный |
127.0.0.1— localhost («сам себе»). Пингуй сам себя для проверки сетевого стека.0.0.0.0— «любой адрес» (часто используется как «слушать на всех интерфейсах»).255.255.255.255— broadcast (всем в локальной сети).
| Поле | Размер | Что |
|---|---|---|
| Version | 4 бита | = 0100 для IPv4 |
| IHL (Header Length) | 4 бита | Длина заголовка (мин 20 байт, макс 60) |
| ToS / DSCP | 8 бит | Type of Service — приоритет (QoS) |
| Total Length | 16 бит | Полная длина пакета (до 65 535 байт) |
| Identification | 16 бит | ID для сборки фрагментов |
| Flags | 3 бита | Можно ли фрагментировать (DF), есть ли ещё фрагменты (MF) |
| Fragment Offset | 13 бит | Где в исходном пакете этот фрагмент |
| TTL (Time To Live) | 8 бит | Счётчик хопов. Каждый router −1. Дошёл до 0 → пакет уничтожается. |
| Protocol | 8 бит | Что внутри: TCP=6, UDP=17, ICMP=1 |
| Header Checksum | 16 бит | Контрольная сумма заголовка |
| Source IP | 32 бит | IP отправителя |
| Destination IP | 32 бит | IP получателя |
У каждого канала есть MTU (Maximum Transmission Unit) — максимальный размер пакета. Для Ethernet это обычно 1500 байт.
Если пакет больше MTU — IP режет его на куски (фрагменты). Получатель собирает обратно.
IPv6 придумали в 90-х, когда поняли что IPv4 кончится. У IPv6 — 128 бит (вместо 32). Это 2¹²⁸ ≈ 3.4 × 10³⁸ адресов — хватит на каждую песчинку на Земле.
- 128 бит = 8 групп по 16 бит (8 «хекстетов»).
- В hex:
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - Сокращения:
- Лидирующие нули в хекстете можно убрать:
0db8 → db8 - Подряд идущие нули можно заменить на
::(только один раз в адресе!).
- Лидирующие нули в хекстете можно убрать:
| Тип | Префикс | Аналог в IPv4 |
|---|---|---|
| Global Unicast | обычные | Публичный IP |
| Unique Local (ULA) | fc00::/7 (fc или fd) | Приватные IP (10.x, 192.168.x) |
| Link-Local | fe80::/10 | Работает только в LAN, обязательный у каждого IPv6-устройства |
| Поле | Размер | Что |
|---|---|---|
| Version | 4 бита | = 0110 для IPv6 |
| Traffic Class | 8 бит | Приоритет (аналог ToS в IPv4) |
| Flow Label | 20 бит | Помечает поток для real-time (VoIP, видео) — все пакеты идут одним маршрутом |
| Payload Length | 16 бит | Размер данных |
| Next Header | 8 бит | Транспортный протокол: TCP, UDP, ICMPv6 |
| Hop Limit | 8 бит | То же что TTL в IPv4 |
| Source Address | 128 бит | IP отправителя |
| Destination Address | 128 бит | IP получателя |
- Безграничный пул адресов → не нужен NAT.
- Автоконфигурация (SLAAC) — устройство может само выбрать IP без DHCP.
- IPsec встроен — шифрование «из коробки».
- Заголовок проще (8 полей vs 13 в IPv4) → router'ы работают быстрее.
- Flow Label — улучшенный QoS для VoIP и видео.
- Нет broadcast — заменён на multicast и anycast (эффективнее).
| Признак | IPv4 | IPv6 |
|---|---|---|
| Длина | 32 бита | 128 бит |
| Запись | 192.168.1.1 | 2001:db8::1 |
| Пул | ~4.3 млрд (исчерпан) | ~3.4 × 10³⁸ (бесконечно) |
| NAT | Нужен (костыль) | Не нужен |
| Конфигурация | DHCP или вручную | Автоконфиг (SLAAC) + DHCPv6 |
| Безопасность | IPsec опционально | IPsec обязателен |
| Broadcast | Есть | Заменён на multicast/anycast |
| Заголовок | 20–60 байт, 13 полей | 40 байт, 8 полей |
ARP (Address Resolution Protocol) отвечает на вопрос: «я знаю IP получателя, а какой у него MAC?»
192.168.1.5). ARP это «справочное бюро» внутри LAN.
- ARP Request (broadcast — слышат все в LAN): «Кто такой
192.168.1.5? Ответь.» - Все хосты получают запрос. У кого нет такого IP — игнорируют.
- Хост с
192.168.1.5отвечает: «Это я, мой MAC —D4:6A:6D:89:1F:22.» - Отправитель сохраняет пару (
IP → MAC) в ARP-таблице на несколько минут. - Все последующие отправки идут сразу, без повторного запроса.
| Поле | Размер | Что |
|---|---|---|
| Hardware Type | 2 байта | Тип физической сети. Для Ethernet = 1 |
| Protocol Type | 2 байта | Какой протокол сетевого уровня. Для IPv4 = 0x0800 (2048) |
| Hardware Size | 1 байт | Длина MAC в байтах = 6 |
| Protocol Size | 1 байт | Длина IP в байтах = 4 для IPv4 |
| Operation | 2 байта | 1 = Request («кто такой?»), 2 = Reply («это я») |
| Sender MAC | 6 байт | MAC отправителя |
| Sender IP | 4 байта | IP отправителя |
| Target MAC | 6 байт | MAC получателя (в Request пустой — мы его и спрашиваем) |
| Target IP | 4 байта | IP получателя |
| Вид | Что делает | Зачем |
|---|---|---|
| Gratuitous ARP | «Бесплатный» ARP — устройство само объявляет свою пару IP/MAC, никто не спрашивал | Обнаружить конфликт IP (если кто-то уже использует) или обновить ARP-таблицы у других |
| RARP (Reverse ARP) | Наоборот: «Я знаю свой MAC, какой у меня IP?» | Устарел, заменён DHCP |
Каждое устройство хранит свою ARP-таблицу (IP → MAC):
- Static — добавляется вручную администратором (защита от spoofing).
- Dynamic — выучивается автоматически, истекает через таймаут (обычно несколько минут).
ARP не проверяет, кто отвечает. Поэтому злоумышленник в твоей сети может ответить раньше: «192.168.1.5 — это я!» — и весь твой трафик пойдёт через него. Это MITM-атака (Man-In-The-Middle).
Защита: Dynamic ARP Inspection на switch'ах, статические ARP-таблицы, VPN.
Как посмотреть свою ARP-таблицу:
arp -a # Mac/Windows/Linux
ip neigh show # Linux (новая команда)
TCP (Transmission Control Protocol) — это «заказное письмо с уведомлением». Гарантирует, что все байты дошли в правильном порядке, без потерь и дубликатов.
Прежде чем что-то передать, TCP устанавливает соединение:
| Механизм | Что делает |
|---|---|
| Sequence numbers | Каждому байту — свой номер. Получатель собирает в правильном порядке. |
| ACK | Получатель подтверждает «я получил байты до N включительно». |
| Retransmission | Если ACK не пришёл за timeout — отправитель шлёт пакет заново. |
| Sliding window | Можно отправить несколько пакетов, не дожидаясь ACK после каждого. Получатель говорит «у меня буфер на 64 КБ» — отправитель не льёт больше. |
| Flow control | Не дать перегрузить медленного получателя. |
| Congestion control | Если сеть забита — снизить скорость отправки (алгоритмы Reno, Cubic, BBR). |
- SYN — синхронизация (начало соединения)
- ACK — подтверждение
- FIN — корректное закрытие соединения
- RST — резкий разрыв (что-то пошло не так)
- PSH — «не буферизуй, отдай приложению немедленно»
| Тип | Как работает |
|---|---|
| Cumulative ACK (по умолчанию) | «Я получил всё до байта N». Если потерян один пакет — нужно перепосылать всё начиная с него. |
| Selective ACK (SACK) | «Я получил с 0 до 1000, а потом с 1500 до 2000. Перешли только 1000–1500». Эффективнее на потерях. |
| Поле | Размер | Что |
|---|---|---|
| Source Port | 16 бит | Порт приложения-отправителя |
| Destination Port | 16 бит | Порт приложения-получателя |
| Sequence Number | 32 бит | Номер первого байта в этом сегменте |
| Acknowledgment Number | 32 бит | Следующий ожидаемый байт от собеседника |
| Header Length | 4 бит | Длина заголовка (бывает разной из-за опций) |
| Flags | 9 бит | URG, ACK, PSH, RST, SYN, FIN, ECE, CWR, NS |
| Window Size | 16 бит | Сколько ещё байт готов принять (flow control) |
| Checksum | 16 бит | Контрольная сумма для проверки ошибок |
| Urgent Pointer | 16 бит | Указатель на «срочные» данные (если URG=1) |
| Options | 0–40 байт | SACK, window scaling, timestamps, MSS и т.д. |
| Плюсы | Минусы |
|---|---|
| Гарантия доставки | Тяжёлый — нужен handshake |
| Гарантия порядка | Больше overhead (заголовок 20-60 байт) |
| Обнаружение и исправление ошибок | Медленнее для real-time |
| Flow / congestion control | Head-of-line blocking (потерянный пакет тормозит всё) |
UDP (User Datagram Protocol) — «открытка». Отправил и забыл. Никаких подтверждений, никакой гарантии доставки.
| Есть | Нет |
|---|---|
| Порт отправителя, порт получателя | Handshake |
| Длина пакета | Подтверждения |
| Контрольная сумма (опционально в IPv4, обязательно в IPv6) | Гарантия доставки |
| Заголовок 8 байт (vs 20+ в TCP) | Гарантия порядка |
| Flow / congestion control |
Когда скорость важнее надёжности:
- Видео-стриминг (YouTube, Netflix) — лучше пропустить кадр, чем поставить на паузу.
- VoIP / видеозвонки (Zoom, WhatsApp) — то же самое: лучше потерять долю секунды звука, чем тормозить.
- Онлайн-игры — игроку важнее текущая позиция врага, чем «история всех ранее пропущенных позиций».
- DNS — запрос/ответ маленький, быстрый, нет смысла на handshake.
- DHCP — выдача IP, тоже короткое сообщение.
ICMP (Internet Control Message Protocol) — не передаёт «полезные» данные. Это «служебный канал» для сообщений об ошибках и диагностики.
| Type | Что значит | Где встречается |
|---|---|---|
| 0 — Echo Reply | «Я живой» (ответ на ping) | ping |
| 8 — Echo Request | «Ты живой?» (сам ping) | ping |
| 3 — Destination Unreachable | «Не могу доставить» (host down, port closed, etc.) | отлов проблем |
| 5 — Redirect | «Есть лучший маршрут, обнови routing table» | динамическая маршрутизация |
| 11 — Time Exceeded | «TTL дошёл до 0» — пакет уничтожен | traceroute |
# Проверить, доступен ли хост
ping google.com
ping 8.8.8.8
# Показать путь до сервера (через какие routers идёт)
traceroute google.com # Linux/Mac
tracert google.com # Windows
# Расширенная диагностика (ping + traceroute + loss %)
mtr google.com # Linux/Mac
ping до сервера не работает, это не значит, что сервер мёртв — может просто ICMP закрыт.
Порт — это число от 0 до 65535, которое говорит «к какому приложению на устройстве относится этот трафик».
| Диапазон | Тип | Кто использует |
|---|---|---|
| 0 – 1023 | Well-known | Стандартные сервисы (HTTP, SSH, DNS). Требуют root-прав. |
| 1024 – 49151 | Registered | IANA закрепила за конкретными сервисами (MySQL 3306, PostgreSQL 5432) |
| 49152 – 65535 | Dynamic / Ephemeral | Временные. ОС выдаёт клиенту при исходящем соединении. |
| Порт | Протокол | Сервис |
|---|---|---|
| 20, 21 | TCP | FTP (передача файлов) |
| 22 | TCP | SSH / SFTP |
| 25 | TCP | SMTP (отправка email) |
| 53 | UDP/TCP | DNS |
| 67, 68 | UDP | DHCP |
| 80 | TCP | HTTP |
| 110 | TCP | POP3 (приём email) |
| 143 | TCP | IMAP (приём email) |
| 443 | TCP | HTTPS |
| 3306 | TCP | MySQL |
| 5432 | TCP | PostgreSQL |
| 6379 | TCP | Redis |
| 3389 | TCP | RDP (удалённый рабочий стол Windows) |
Это 4 числа однозначно идентифицируют соединение. Поэтому на одном IP сервер может держать сотни тысяч одновременных соединений — у каждого свой набор (client_ip, client_port, server_ip, server_port).
# Какие порты слушает машина
sudo lsof -i -P -n | grep LISTEN # Mac/Linux
sudo ss -tulpn # Linux
netstat -an | grep LISTEN # Windows
# Кто занял порт 8000
lsof -i :8000
# Проверить, открыт ли порт на удалённом сервере
nc -zv example.com 443
telnet example.com 443
Subnetting — это разделение одной большой IP-сети на несколько маленьких.
- Экономия адресов — выдать ровно столько, сколько нужно (а не целый класс).
- Скорость — broadcast в большой сети грузит все устройства. В маленькой подсети broadcast не «гуляет» дальше.
- Безопасность — разные отделы (бухгалтерия, разработка) в разных подсетях, между ними firewall.
- Управление — проще отлавливать проблемы.
У каждой подсети 4 ключевых параметра:
| Атрибут | Что это | Пример (для 192.168.1.0/24) |
|---|---|---|
| Network address | Идентификатор подсети (все биты хоста = 0) | 192.168.1.0 |
| Broadcast address | Адрес «всем в подсети» (все биты хоста = 1) | 192.168.1.255 |
| First host | Первый юзабельный адрес | 192.168.1.1 |
| Last host | Последний юзабельный адрес | 192.168.1.254 |
| Mask / Prefix | Где кончается «сеть» и начинается «хост» | 255.255.255.0 = /24 |
2^(32 − prefix) − 2.
Subnet mask — это последовательность 32 бит, где единицы означают «это сетевая часть», а нули — «это часть хоста».
Вместо «маска 255.255.255.0» пишут «/24» — это просто количество единиц в маске.
| CIDR | Маска | Хостов | Применение |
|---|---|---|---|
| /8 | 255.0.0.0 | ~16 777 214 | Гигантские сети |
| /16 | 255.255.0.0 | 65 534 | Средние корпорации |
| /24 | 255.255.255.0 | 254 | Малые офисы, дома |
| /27 | 255.255.255.224 | 30 | Маленький отдел |
| /29 | 255.255.255.248 | 6 | Несколько серверов |
| /30 | 255.255.255.252 | 2 | Линк между двумя router'ами |
| /32 | 255.255.255.255 | 1 | Один конкретный host |
# Сколько хостов в подсети
hosts = 2^(32 − prefix) − 2
# Например, для /24:
2^(32-24) − 2 = 256 − 2 = 254 хоста
# Размер блока (block size) в последнем октете
block_size = 256 − (последний октет маски)
# Например, для маски 255.255.255.192 (/26):
block_size = 256 − 192 = 64
# → подсети начинаются с .0, .64, .128, .192
Чтобы конвертировать число в бинарный вид: делим на 2, записываем остатки, читаем снизу вверх.
Обратно: бинарное число → сумма степеней 2 для каждой 1.
Дано: IP 192.168.156.3/24.
| Параметр | Расчёт | Результат |
|---|---|---|
| Маска | /24 = 24 единицы | 255.255.255.0 |
| Network address | обнуляем 4-й октет | 192.168.156.0 |
| Broadcast | все 1 в 4-м октете | 192.168.156.255 |
| First host | network + 1 | 192.168.156.1 |
| Last host | broadcast − 1 | 192.168.156.254 |
| Хостов | 2^8 − 2 | 254 |
Интуиция: 24 единицы маски «закрепили» первые 3 октета — это «адрес сети». Последний октет свободен → 256 вариантов, минус 2 (network + broadcast) = 254 хоста.
Дано: IP 192.168.156.3/21. Что мы можем сказать?
| Параметр | Расчёт | Результат |
|---|---|---|
| Маска | /21 = 21 единица | 255.255.248.0 |
| Block size в 3-м октете | 256 − 248 | 8 |
| Сети начинаются | .0, .8, .16, ..., .152, .160, ... | наш .156 попадает в блок .152–.159 |
| Network address | 192.168.152.0 | 192.168.152.0 |
| Broadcast | 192.168.159.255 | 192.168.159.255 |
| First host | 192.168.152.1 | 192.168.152.1 |
| Last host | 192.168.159.254 | 192.168.159.254 |
| Хостов | 2^11 − 2 | 2046 |
Приватные IP-адреса — это специальные диапазоны, которые «не выходят в Интернет». Их используют внутри LAN. Один и тот же приватный IP может быть у миллионов разных компаний — конфликта нет, потому что они «не видят» друг друга.
| Блок | Диапазон | Адресов | Где используют |
|---|---|---|---|
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 16 777 216 | Гигантские корпорации, AWS VPC |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 1 048 576 | Средние организации, Docker |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 65 536 | Домашние Wi-Fi, малые офисы |
192.168.0.x или 192.168.1.x. Если зайти в админку роутера — увидишь это там.
NAT — это переводчик между приватной сетью и Интернетом. Живёт обычно на роутере.
NAT хранит таблицу трансляций: какой внутренний клиент с каким портом куда обратился.
| Внутри | Снаружи | Назначение |
|---|---|---|
| 192.168.1.5:54321 | 77.243.80.138:11001 | google.com:443 |
| 192.168.1.6:33445 | 77.243.80.138:11002 | youtube.com:443 |
Когда ответ приходит на 77.243.80.138:11001 — NAT смотрит таблицу, переводит обратно в 192.168.1.5:54321 и отправляет на ноутбук.
- Ломает end-to-end — извне нельзя инициировать соединение к устройству за NAT (только наоборот).
- Проблемы для P2P / VoIP — нужны костыли типа STUN/TURN.
- Усложняет debugging.
В IPv6 NAT не нужен — адресов хватает всем.
Когда делишь сеть на подсети, есть две стратегии:
Все подсети — одного размера. Берём самую большую нужную и применяем ко всем.
Пример: нужно 6 подсетей в 192.168.156.0/24. Делим на /27 (по 32 адреса = 30 хостов в каждой):
Плюс: просто.
Минус: если одной подсети нужно 28 хостов, а другой 5 — обеим даём по 30, и в маленькой 25 адресов пропадает.
Каждой подсети — своя маска. По потребности.
Пример: в той же сети /24 нужны:
- 1 подсеть на 28 хостов → /27 (32 адреса)
- 3 подсети по 16 хостов → /28 (16 адресов каждая)
- 2 подсети по 8 хостов → /29 (8 адресов каждая)
- Линки между роутерами по 2 адреса → /30
Плюс: ничего не пропадает, использование адресов в 4-5 раз эффективнее.
Минус: сложнее планировать (но опытные сетевики делают на автомате).
VLAN (Virtual LAN) — это способ логически разделить один физический switch на несколько независимых сетей.
К каждому Ethernet-кадру switch добавляет тег с номером VLAN. Это 32-битное поле между Source MAC и EtherType.
Тег содержит:
- TPID (16 бит) — всегда
0x8100, говорит «это VLAN-tagged кадр». - PCP (3 бита) — приоритет (QoS).
- DEI (1 бит) — можно ли дропнуть при перегрузке.
- VLAN ID (12 бит) — номер VLAN. Доступно 4094 (0 и 4095 зарезервированы).
| Access | Trunk | |
|---|---|---|
| Куда подключают | Конечные устройства (ПК, принтеры) | Между switch'ами или switch ↔ router |
| Кадры на проводе | Без тега (untagged) | С тегом (tagged) |
| Что делает switch | Добавляет тег на входе, убирает на выходе | Пропускает кадры с тегами как есть |
| Сколько VLAN | 1 (один порт = одна VLAN) | Много VLAN через один порт |
Сценарий 1: PC-A и PC-B в одной VLAN на одном switch — общаются напрямую (внутри switch без тегов).
Сценарий 2: PC-A и PC-B в одной VLAN на разных switch'ах — switch-1 тегирует, кадр идёт через trunk, switch-2 снимает тег, отдаёт PC-B.
Сценарий 3 (важный!): PC-A в VLAN 10, PC-B в VLAN 20 — не общаются напрямую. Switch отбросит кадр. Чтобы связать VLAN — нужен router (или L3 switch).
| Static VLAN | Dynamic VLAN | |
|---|---|---|
| Назначение порта | Вручную админом | Автоматически на основе MAC / типа устройства |
| Переехал на другой порт | Админ должен переназначить | Switch сам определит и назначит правильную VLAN |
| Где применяют | Малые/средние офисы | Большие корпорации, где люди постоянно перемещаются |
VMPS (VLAN Management Policy Server) — центральный сервер с политиками: «такой MAC → VLAN 10», «такой тип устройства → VLAN 20».
- Пользователь подключает устройство к свободному порту.
- Switch отправляет запрос на VMPS: «вот MAC
D4:6A:6D:89:1F:22, какая ему VLAN?» - VMPS смотрит политику и отвечает: «VLAN 10».
- Switch автоматически назначает этот порт в VLAN 10 и начинает тегировать кадры.
Плюс: сотрудник может сесть за любой стол — попадёт в свою VLAN автоматически.
Минус: требует дополнительной инфраструктуры (VMPS-сервер).
- Уменьшение broadcast-доменов — меньше «шума» в сети.
- Безопасность — бухгалтерия и разработка изолированы.
- Гибкость — переехал сотрудник на другой этаж, всё ещё в той же VLAN.
- Дешевле — не надо покупать отдельные switch'и для каждого отдела.
DHCP — сетевой сервис, который позволяет устройствам в сети динамически получать IP-адрес, маску подсети, шлюз по умолчанию, адреса DNS-серверов и десятки других сетевых параметров без ручной настройки на каждом устройстве. Работает по клиент-серверной модели: на сервере настраивается пул доступных адресов, клиент при подключении запрашивает один из них «в аренду» на определённое время.
Где применяется: end-user устройства (ноутбуки, смартфоны, IoT) — всегда через DHCP. Где НЕ применяется: сетевая инфраструктура (роутеры, свитчи, серверы, принтеры) — обычно со статическими адресами, чтобы их IP не менялся при перезагрузке.
| Метод | Как работает | Где применяется |
|---|---|---|
| Manual Allocation | Администратор заранее задаёт соответствие MAC → IP в таблице сервера. DHCP только передаёт назначенный адрес устройству. | Когда нужен фиксированный IP по железу (принтер с фиксированным адресом) |
| Automatic Allocation | DHCP-сервер назначает IP из пула постоянно (без срока аренды). Адрес остаётся за устройством навсегда. | Редко — жёсткое присваивание без удобства lease |
| Dynamic Allocation | DHCP арендует IP из пула на ограниченное время (lease). По окончании lease адрес возвращается в пул, если клиент не продлил. | Самый частый случай — стандарт для домашних и корпоративных сетей |
Аббревиатура для четырёх шагов lease origination process: Discover → Offer → Request → Acknowledge. Использует UDP, порт 67 на сервере, 68 на клиенте.
Шаг 1: DHCPDISCOVER (broadcast от клиента)
Клиент: «Мне нужен IP! Есть кто из DHCP-серверов?»
Ethernet: src=MAC_клиент, dst=FF:FF:FF:FF:FF:FF (broadcast)
IP: src=0.0.0.0, dst=255.255.255.255 (broadcast)
UDP: src=68, dst=67
DHCP: CIADDR=0.0.0.0, CHADDR=MAC_клиент
Шаг 2: DHCPOFFER (unicast от сервера)
Сервер: «Я DHCP-сервер. Предлагаю тебе адрес 192.168.1.10/24»
IP: src=192.168.1.254 (сервер), dst=192.168.1.10 (предлагаемый)
UDP: src=67, dst=68
DHCP: YIADDR=192.168.1.10, mask=255.255.255.0
Шаг 3: DHCPREQUEST (broadcast от клиента)
Клиент: «Беру адрес 192.168.1.10 от сервера X»
→ Снова broadcast! Это чтобы ДРУГИЕ DHCP-серверы узнали,
что их предложение не выбрано — и вернули свои адреса в пул.
Шаг 4: DHCPACK (unicast от сервера)
Сервер: «Подтверждаю, адрес твой на 24 часа (lease time)»
После получения адреса клиент использует его до конца lease. Когда проходит половина lease time, клиент шлёт DHCPREQUEST напрямую (unicast) серверу, чтобы продлить аренду. Сервер отвечает DHCPACK — lease обновляется.
| Сообщение | Кто шлёт | Зачем |
|---|---|---|
DHCPDISCOVER | Клиент (broadcast) | «Ищу DHCP-сервер» |
DHCPOFFER | Сервер | «Предлагаю IP» |
DHCPREQUEST | Клиент | «Беру этот IP» (или продлеваю аренду) |
DHCPACK | Сервер | «Подтверждаю, владей» |
DHCPNAK | Сервер | «Не могу выдать (адрес занят/неподходящий)» |
DHCPRELEASE | Клиент | «Возвращаю адрес досрочно» (при shutdown) |
DHCPINFORM | Клиент | «Уже имею IP, но прошу другие настройки (DNS и т.п.)» |
DHCPDECLINE | Клиент | «Полученный IP уже занят в сети (по ARP-проверке)» |
Address pool — диапазон IP, которые сервер может выдавать. Задаётся одним из трёх способов:
- Range start → end:
192.168.0.100 — 192.168.0.149; - Start + max users:
start=192.168.0.100, max=50; - Network/mask + excluded:
192.168.0.0/24минус список исключений (для шлюза, серверов).
DHCP Options — дополнительные параметры, передаваемые клиенту вместе с IP. Полный список — ecanet.ir/dhcp-option-list. Самые частые:
| Option | Что передаёт |
|---|---|
| 1 | Subnet Mask (маска подсети) |
| 3 | Default Gateway (шлюз) |
| 6 | DNS Servers (адреса DNS, обычно 1-3 штуки) |
| 15 | Domain Name (домен по умолчанию для коротких имён) |
| 51 | IP Address Lease Time (срок аренды в секундах) |
| 66 | TFTP Server (для PXE-загрузки) |
+-------------+-------------+----------------+-------------+
| OP Code (1) | HW Type (1) | HW Addr Len(1) | Hops (1) |
+-------------+-------------+----------------+-------------+
| Transaction Identifier (XID, 4 bytes) |
+-------------------------------+---------------------------+
| Seconds (2 bytes) | Flags (2 bytes) |
+-------------------------------+---------------------------+
| Client IP Address (CIADDR, 4 bytes) |
| Your IP Address (YIADDR, 4 bytes) ← назначаемый |
| Server IP Address (SIADDR, 4 bytes) |
| Gateway IP (GIADDR, 4 bytes) ← для relay |
| Client HW Address (CHADDR, 16 bytes) ← MAC |
| Server Name (SNAME, 64 bytes) |
| Boot Filename (BOOT, 128 bytes) |
+-----------------------------------------------------------+
| DHCP Options (variable) — здесь options 1, 3, 6...|
+-----------------------------------------------------------+
| Поле | Назначение |
|---|---|
OP Code | 1 = запрос (BOOTREQUEST), 2 = ответ (BOOTREPLY) |
HW Type | Тип сетевого железа: 1 = Ethernet, 15 = frame relay, 20 = serial |
HW Addr Length | Длина MAC: для Ethernet = 6 байт |
Hops | Счётчик пересылок через DHCP-relay (для multi-subnet) |
Transaction ID (XID) | Случайный ID, чтобы клиент мог сматчить ответ со своим запросом |
Flags | Один бит — broadcast flag (клиент просит ответ broadcast'ом) |
CIADDR | Текущий IP клиента (заполнен только при renewal, иначе 0.0.0.0) |
YIADDR | «Your» IP — адрес, который сервер предлагает/подтверждает клиенту |
SIADDR | IP следующего сервера в bootstrap-цепочке (для PXE) |
GIADDR | IP DHCP-relay-агента — для маршрутизации между подсетями |
CHADDR | MAC клиента — ключ для матчинга и manual-allocation |
Суть атаки: злоумышленник подключается к локальной сети и запускает свой DHCP-сервер. Когда жертва шлёт DHCPDISCOVER (broadcast), оба сервера (легитимный и rogue) отправляют DHCPOFFER. Клиент выбирает первый пришедший ответ — если rogue быстрее, побеждает он.
Что атакующий может подменить:
- Wrong Default Gateway — указать свой компьютер как шлюз → весь трафик пойдёт через атакующего (Man-in-the-Middle), он читает/модифицирует данные;
- Wrong DNS Server — направить DNS-запросы на фальшивый сервер → пользователь видит подменные сайты (phishing);
- Wrong IP / mask — выдать невалидные параметры → DoS, клиент не может работать в сети.
Защита: на свитчах включается DHCP Snooping — функция, которая разрешает DHCPOFFER только с заранее доверенных портов (где подключён настоящий DHCP-сервер). Любой ответ с недоверенного порта дропается.
Суть атаки: злоумышленник заваливает легитимный DHCP-сервер тысячами фейковых DHCPDISCOVER, каждый раз с новым (поддельным) MAC-адресом. Сервер выдаёт каждому запросу адрес из пула, пока пул не исчерпан — легитимные клиенты не могут получить IP.
Часто это первая фаза двойной атаки: сначала starvation истощает легитимный сервер, потом запускается rogue server (см. выше) — и все новые клиенты получают конфиг от атакующего.
Защита: на свитчах включается Port Security — ограничение количества MAC-адресов на порт. Атакующий не сможет генерировать неограниченное число фейковых MAC с одного физического порта.
В IPv6 нет broadcast'ов (заменены multicast'ом), поэтому DHCP работает по-другому. Существует три метода динамической конфигурации IPv6-адресов:
1. DHCPv6 Only (Stateful DHCPv6)
Аналогично DHCPv4: сервер выдаёт IP + параметры, поддерживает state (помнит какому клиенту что выдано). Клиент шлёт запрос на multicast-адрес FF02::1:2 (все DHCPv6-серверы) вместо broadcast.
2. SLAAC (Stateless Address Autoconfiguration)
Без DHCP-сервера вообще! Клиент сам конструирует свой IPv6-адрес. Источник prefix-информации — любой роутер в той же сети.
Шаг 1: Router Solicitation (RS) — multicast ff02::2 (all routers)
Клиент: «Нужна информация об адресе!»
Шаг 2: Router Advertisement (RA) — multicast ff02::1 (all nodes)
Роутер: «Вот префикс сети и его длина: 2001:db8::/64»
Шаг 3: Клиент строит полный адрес сам:
- префикс (64 бита) от роутера +
- host-ID (64 бита) — генерирует сам
Два способа сгенерировать host-ID (IID):
- EUI-64: из 48-битного MAC расширяют до 64 бит, вставляя
FF:FEв середину и инвертируя 7-й бит. Гарантирует уникальность по физике, но раскрывает MAC. - Randomly generated: случайное 64-битное число от ОС. Privacy extensions (RFC 4941) — стандарт в современных Windows/macOS/Linux.
3. SLAAC + DHCPv6 (Stateless DHCPv6)
Гибрид: IP-адрес клиент получает через SLAAC, а остальные параметры (DNS, NTP, домен) — через DHCPv6. Часто применяется когда роутер сам не умеет отдавать DNS через RA.
# /etc/dhcp/dhcpd.conf
default-lease-time 600; # 10 минут по умолчанию
max-lease-time 7200; # до 2 часов максимум
authoritative; # отвечать NAK на чужие renewal
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; # pool (100 адресов)
option routers 192.168.1.1; # option 3: default gateway
option subnet-mask 255.255.255.0; # option 1
option domain-name-servers 8.8.8.8, 1.1.1.1; # option 6
option domain-name "corp.example.com"; # option 15
}
# Manual allocation — фиксированный IP для конкретного MAC:
host office-printer {
hardware ethernet 00:1A:2B:3C:4D:5E;
fixed-address 192.168.1.50;
}
- VM = полный компьютер в файле. Гипервизор Type 1 (bare metal: ESXi, KVM) / Type 2 (hosted: VirtualBox).
- VM vs Container: VM = своя ОС, гигабайты, минуты. Container = только приложение, общее ядро, секунды.
PAN (Bluetooth) → LAN (офис) → MAN (город) → WAN (мир). WLAN = беспроводная LAN. VPN = шифрованный тоннель в Интернете.
| OSI (7) | TCP/IP (4) | Что |
|---|---|---|
| Application + Presentation + Session | Application | HTTP, DNS, SMTP |
| Transport | Transport | TCP, UDP, порты |
| Network | Internet | IP, ARP, ICMP |
| Data Link + Physical | Link | Ethernet, Wi-Fi, MAC |
| MAC | IPv4 | IPv6 | |
|---|---|---|---|
| Длина | 48 бит | 32 бит | 128 бит |
| Пример | D4:6A:6D:89:1F:22 | 192.168.1.1 | 2001:db8::1 |
| Где работает | LAN (один сегмент) | Глобально | Глобально |
| Аналогия | Имя жильца | Адрес квартиры | Адрес квартиры в новом городе |
| Протокол | Уровень | Что делает | Пример |
|---|---|---|---|
| ARP | L2/L3 | IP → MAC внутри LAN | «Кто 192.168.1.5? Скажи MAC» |
| TCP | L4 | Надёжно, с порядком, handshake | HTTP, SSH, Email |
| UDP | L4 | Быстро, без гарантий | Видео, VoIP, DNS, игры |
| ICMP | L3 | Диагностика, ошибки | ping, traceroute |
| IP | L3 | Маршрутизация по адресу | Все пакеты |
20/21 FTP 22 SSH 25 SMTP 53 DNS 67/68 DHCP
80 HTTP 443 HTTPS 110 POP3 143 IMAP
3306 MySQL 5432 PostgreSQL 6379 Redis 3389 RDP
Хостов в подсети = 2^(32 − prefix) − 2
Block size в октете = 256 − (последний октет маски)
Маски популярные:
/24 = 255.255.255.0 → 254 хоста (типичный офис)
/27 = 255.255.255.224 → 30 хостов
/29 = 255.255.255.248 → 6 хостов
/30 = 255.255.255.252 → 2 хоста (point-to-point)
Приватные диапазоны (RFC 1918):
10.0.0.0/8 (16М)
172.16.0.0/12 (1М)
192.168.0.0/16 (65K)
- VLAN — логическое разделение switch на отдельные сети.
- 802.1Q tag — 32-битное поле в кадре, содержит VLAN ID (1–4094).
- Access port = untagged (для ПК). Trunk port = tagged (между switch'ами).
- Между разными VLAN общение — только через router.
# Свой IP
ip addr # Linux
ifconfig # Mac (старая) / Linux
ipconfig # Windows
# Маршруты
ip route # Linux
netstat -nr # Mac/BSD
route print # Windows
# ARP таблица
arp -a
ip neigh
# DNS lookup
nslookup google.com
dig google.com
host google.com
# Доступность хоста
ping 8.8.8.8
traceroute google.com
mtr google.com
# Открытые порты на машине
sudo ss -tulpn
sudo lsof -i -P -n | grep LISTEN
# Открыт ли порт удалённо
nc -zv example.com 443
nmap -p 80,443 example.com
# Текущие TCP-соединения
ss -t
netstat -ant