Computer Science

Учебник Компьютерные сети для начинающих

29 уроков · 6 разделов · бесплатно, без регистрации

Концептуальный курс по компьютерным сетям для разработчиков и студентов. Вы поймёте, что лежит под HTTP: как работают модели OSI и TCP/IP, IP-адресация и подсети, транспортные протоколы TCP и UDP, система имён DNS, протокол HTTP во всех версиях, шифрование HTTPS/TLS, механизм CORS и инструменты сетевой диагностики. Особый упор — на то, что реально полезно веб-разработчику. Расчёты подсетей и разбор URL — живые запускаемые примеры на Python.

Курс «Компьютерные сети» состоит из 6 разделов и 29 уроков: Основы и модели, Канальный и сетевой уровни, Транспортный уровень, Прикладной уровень и DNS, Безопасность и веб и Инструменты и практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Основы и модели

    1. Что такое сеть и зачем нужны модели

      Компьютерная сеть, протоколы и зачем сетевые технологии разбивают на уровни. Введение в модели OSI и TCP/IP для веб-разработчиков.

    2. Модель OSI: семь уровней

      Семь уровней модели OSI: физический, канальный, сетевой, транспортный, сеансовый, представления, прикладной. За что отвечает каждый.

    3. Стек TCP/IP и сопоставление с OSI

      Практическая четырёхуровневая модель TCP/IP и её сопоставление с семью уровнями OSI: какие уровни объединяются, а какие совпадают.

    4. Инкапсуляция: как данные оборачиваются по уровням

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

    5. Что происходит при открытии сайта

      Полная цепочка при открытии сайта: разбор URL, DNS, TCP, TLS, HTTP, рендеринг. Обзор сверху вниз и разбор URL на Python.

  2. 2 Канальный и сетевой уровни

    1. MAC-адреса и Ethernet

      Канальный уровень: MAC-адреса, кадры Ethernet, коммутаторы и ARP. Чем MAC отличается от IP и зачем нужны оба адреса.

    2. IP-адресация: IPv4 и CIDR

      IPv4-адреса, почему классы устарели и пришёл CIDR, запись префикса /24, структура адреса на сеть и хост. Конвертация адреса в число на Python.

    3. Подсети и маски: расчёт на Python

      Маска подсети, адрес сети и broadcast, число хостов, деление на подсети и проверка вхождения адреса — живой расчёт через модуль ipaddress.

    4. Приватные адреса и NAT

      Приватные диапазоны IPv4 (10/8, 172.16/12, 192.168/16), зачем нужен NAT, как один публичный адрес обслуживает локальную сеть. Проверка на Python.

    5. IPv6: зачем и как читать

      IPv6: 128-битные адреса, шестнадцатеричная запись, сжатие нулей, специальные адреса. Зачем IPv6 и как он сосуществует с IPv4.

    6. Маршрутизация, ICMP и ping

      Как пакет находит путь между сетями: таблицы маршрутизации, шлюз по умолчанию, обзор протоколов. ICMP, ping и traceroute для диагностики.

  3. 3 Транспортный уровень

    1. Порты и сокеты

      Что такое порт и сокет, зачем нужны порты, известные порты (80, 443, 22), пара адрес:порт как идентификатор соединения.

    2. TCP: надёжное соединение

      TCP: трёхстороннее рукопожатие (3-way handshake), нумерация и упорядочивание сегментов, подтверждения, контроль потока и перегрузки.

    3. UDP: скорость вместо гарантий

      UDP: протокол без установления соединения, без подтверждений и порядка. Когда быстрее важнее надёжнее: DNS, видео, игры, VoIP.

    4. TCP vs UDP: что где использовать

      Сравнение TCP и UDP в одной таблице: соединение, надёжность, порядок, скорость, заголовок. Какой протокол и для каких задач выбирают.

  4. 4 Прикладной уровень и DNS

    1. DNS: телефонная книга интернета

      Что такое DNS и зачем он нужен: превращение доменных имён в IP-адреса. Иерархия доменов, корневые серверы, зоны.

    2. Резолвинг DNS и типы записей

      Как работает разрешение имени: рекурсивный и итеративный запросы, кэширование и TTL, типы записей A, AAAA, CNAME, MX. Модель резолвинга на Python.

    3. HTTP: методы, статусы, заголовки

      Протокол HTTP: структура запроса и ответа, методы GET/POST/PUT/DELETE, классы статус-кодов, заголовки, свойство statelessness.

    4. HTTP/1.1, HTTP/2 и HTTP/3

      Эволюция HTTP: проблемы HTTP/1.1, мультиплексирование в HTTP/2, переход на QUIC/UDP в HTTP/3. Что изменилось и зачем.

    5. Cookies и сессии

      Как stateless-HTTP помнит пользователя: cookies (Set-Cookie/Cookie), серверные сессии, флаги HttpOnly/Secure/SameSite, отличие от токенов.

  5. 5 Безопасность и веб

    1. HTTPS и TLS: зачем шифрование

      HTTPS = HTTP + TLS: зачем шифровать трафик, как проходит TLS-рукопожатие, роль сертификатов и центров сертификации (CA).

    2. Симметричное и асимметричное шифрование

      Два вида шифрования в TLS: симметричное (один ключ) и асимметричное (пара ключей). Зачем нужны оба и как они работают вместе. Демо на Python.

    3. Сетевые угрозы: MITM и спуфинг

      Обзор типичных сетевых атак для защиты: человек посередине (MITM), спуфинг (IP/DNS/ARP), сниффинг. Как от них защищаются.

    4. CORS: почему браузер блокирует запросы

      CORS для веб-разработчиков: что такое origin, политика одного источника, почему возникает ошибка CORS, preflight-запросы и как их разрешает сервер.

    5. Прокси и CDN

      Прокси-серверы (прямой и обратный), балансировщики и CDN: зачем нужны посредники между клиентом и сервером и как они ускоряют и защищают веб.

  6. 6 Инструменты и практика

    1. Инструменты диагностики сети

      Практическая диагностика: ping, traceroute, nslookup/dig, curl, netstat — что показывает каждая команда и как читать вывод.

    2. Чтение HTTP-обмена построчно

      Разбираем реальный HTTP-запрос и ответ строка за строкой: стартовая строка, заголовки, тело. Редиректы, кэш и условные запросы на практике.

    3. Главный вопрос: что происходит при вводе URL

      Самый частый вопрос собеседований полностью: от ввода https://shop.example.com до отрисованной страницы — DNS, TCP, TLS, HTTP, рендеринг, по слоям.

    4. Клиент-сервер, P2P и что дальше

      Две архитектуры сетевого взаимодействия: клиент-сервер и P2P. Их плюсы и минусы, где какая применяется, и куда двигаться дальше в изучении сетей.