Учебник Компьютерные сети для начинающих
Концептуальный курс по компьютерным сетям для разработчиков и студентов. Вы поймёте, что лежит под HTTP: как работают модели OSI и TCP/IP, IP-адресация и подсети, транспортные протоколы TCP и UDP, система имён DNS, протокол HTTP во всех версиях, шифрование HTTPS/TLS, механизм CORS и инструменты сетевой диагностики. Особый упор — на то, что реально полезно веб-разработчику. Расчёты подсетей и разбор URL — живые запускаемые примеры на Python.
Курс «Компьютерные сети» состоит из 6 разделов и 29 уроков: Основы и модели, Канальный и сетевой уровни, Транспортный уровень, Прикладной уровень и DNS, Безопасность и веб и Инструменты и практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Основы и модели
- Что такое сеть и зачем нужны модели
Компьютерная сеть, протоколы и зачем сетевые технологии разбивают на уровни. Введение в модели OSI и TCP/IP для веб-разработчиков.
- Модель OSI: семь уровней
Семь уровней модели OSI: физический, канальный, сетевой, транспортный, сеансовый, представления, прикладной. За что отвечает каждый.
- Стек TCP/IP и сопоставление с OSI
Практическая четырёхуровневая модель TCP/IP и её сопоставление с семью уровнями OSI: какие уровни объединяются, а какие совпадают.
- Инкапсуляция: как данные оборачиваются по уровням
Инкапсуляция и декапсуляция данных в сети: как каждый уровень добавляет заголовок, имена единиц данных — сегмент, пакет, кадр.
- Что происходит при открытии сайта
Полная цепочка при открытии сайта: разбор URL, DNS, TCP, TLS, HTTP, рендеринг. Обзор сверху вниз и разбор URL на Python.
- Что такое сеть и зачем нужны модели
2 Канальный и сетевой уровни
- MAC-адреса и Ethernet
Канальный уровень: MAC-адреса, кадры Ethernet, коммутаторы и ARP. Чем MAC отличается от IP и зачем нужны оба адреса.
- IP-адресация: IPv4 и CIDR
IPv4-адреса, почему классы устарели и пришёл CIDR, запись префикса /24, структура адреса на сеть и хост. Конвертация адреса в число на Python.
- Подсети и маски: расчёт на Python
Маска подсети, адрес сети и broadcast, число хостов, деление на подсети и проверка вхождения адреса — живой расчёт через модуль ipaddress.
- Приватные адреса и NAT
Приватные диапазоны IPv4 (10/8, 172.16/12, 192.168/16), зачем нужен NAT, как один публичный адрес обслуживает локальную сеть. Проверка на Python.
- IPv6: зачем и как читать
IPv6: 128-битные адреса, шестнадцатеричная запись, сжатие нулей, специальные адреса. Зачем IPv6 и как он сосуществует с IPv4.
- Маршрутизация, ICMP и ping
Как пакет находит путь между сетями: таблицы маршрутизации, шлюз по умолчанию, обзор протоколов. ICMP, ping и traceroute для диагностики.
- MAC-адреса и Ethernet
3 Транспортный уровень
- Порты и сокеты
Что такое порт и сокет, зачем нужны порты, известные порты (80, 443, 22), пара адрес:порт как идентификатор соединения.
- TCP: надёжное соединение
TCP: трёхстороннее рукопожатие (3-way handshake), нумерация и упорядочивание сегментов, подтверждения, контроль потока и перегрузки.
- UDP: скорость вместо гарантий
UDP: протокол без установления соединения, без подтверждений и порядка. Когда быстрее важнее надёжнее: DNS, видео, игры, VoIP.
- TCP vs UDP: что где использовать
Сравнение TCP и UDP в одной таблице: соединение, надёжность, порядок, скорость, заголовок. Какой протокол и для каких задач выбирают.
- Порты и сокеты
4 Прикладной уровень и DNS
- DNS: телефонная книга интернета
Что такое DNS и зачем он нужен: превращение доменных имён в IP-адреса. Иерархия доменов, корневые серверы, зоны.
- Резолвинг DNS и типы записей
Как работает разрешение имени: рекурсивный и итеративный запросы, кэширование и TTL, типы записей A, AAAA, CNAME, MX. Модель резолвинга на Python.
- HTTP: методы, статусы, заголовки
Протокол HTTP: структура запроса и ответа, методы GET/POST/PUT/DELETE, классы статус-кодов, заголовки, свойство statelessness.
- HTTP/1.1, HTTP/2 и HTTP/3
Эволюция HTTP: проблемы HTTP/1.1, мультиплексирование в HTTP/2, переход на QUIC/UDP в HTTP/3. Что изменилось и зачем.
- Cookies и сессии
Как stateless-HTTP помнит пользователя: cookies (Set-Cookie/Cookie), серверные сессии, флаги HttpOnly/Secure/SameSite, отличие от токенов.
- DNS: телефонная книга интернета
5 Безопасность и веб
- HTTPS и TLS: зачем шифрование
HTTPS = HTTP + TLS: зачем шифровать трафик, как проходит TLS-рукопожатие, роль сертификатов и центров сертификации (CA).
- Симметричное и асимметричное шифрование
Два вида шифрования в TLS: симметричное (один ключ) и асимметричное (пара ключей). Зачем нужны оба и как они работают вместе. Демо на Python.
- Сетевые угрозы: MITM и спуфинг
Обзор типичных сетевых атак для защиты: человек посередине (MITM), спуфинг (IP/DNS/ARP), сниффинг. Как от них защищаются.
- CORS: почему браузер блокирует запросы
CORS для веб-разработчиков: что такое origin, политика одного источника, почему возникает ошибка CORS, preflight-запросы и как их разрешает сервер.
- Прокси и CDN
Прокси-серверы (прямой и обратный), балансировщики и CDN: зачем нужны посредники между клиентом и сервером и как они ускоряют и защищают веб.
- HTTPS и TLS: зачем шифрование
6 Инструменты и практика
- Инструменты диагностики сети
Практическая диагностика: ping, traceroute, nslookup/dig, curl, netstat — что показывает каждая команда и как читать вывод.
- Чтение HTTP-обмена построчно
Разбираем реальный HTTP-запрос и ответ строка за строкой: стартовая строка, заголовки, тело. Редиректы, кэш и условные запросы на практике.
- Главный вопрос: что происходит при вводе URL
Самый частый вопрос собеседований полностью: от ввода https://shop.example.com до отрисованной страницы — DNS, TCP, TLS, HTTP, рендеринг, по слоям.
- Клиент-сервер, P2P и что дальше
Две архитектуры сетевого взаимодействия: клиент-сервер и P2P. Их плюсы и минусы, где какая применяется, и куда двигаться дальше в изучении сетей.
- Инструменты диагностики сети