Лекция 2. Сетевые основы интернет-приложений
1. Модели и инкапсуляция
Модель OSI (7 уровней)
| Уровень | Функции | Протоколы | Единицы данных |
|---|---|---|---|
| 7. Прикладной | Интерфейс пользователя | HTTP, HTTPS, FTP, SMTP, DNS | Сообщения |
| 6. Представительский | Шифрование, сжатие | SSL/TLS, JPEG, MPEG | Данные представления |
| 5. Сеансовый | Управление сессиями | NetBIOS, RPC | Данные сессии |
| 4. Транспортный | Сквозная доставка данных | TCP, UDP, SCTP | Сегменты |
| 3. Сетевой | Маршрутизация | IP, ICMP, OSPF | Пакеты |
| 2. Канальный | Передача между узлами | Ethernet, Wi-Fi, PPP | Кадры |
| 1. Физический | Передача битов | Ethernet, Wi-Fi, Bluetooth | Биты |
Модель TCP/IP (4 уровня)
| Уровень | Соответствует OSI | Протоколы | Функции |
|---|---|---|---|
| Прикладной | 5-7 уровни | HTTP, HTTPS, WebSocket, gRPC | Сетевые службы |
| Транспортный | 4 уровень | TCP, UDP, SCTP | Сквозная доставка |
| Сетевой | 3 уровень | IP, ICMP, BGP | Маршрутизация |
| Канальный | 1-2 уровни | Ethernet, Wi-Fi, ARP | Физическая передача |
Важно: В разработке интернет-приложений ключевы два верхних уровня TCP/IP:
- Транспортный (TCP, UDP) - надежная доставка данных
- Прикладной (HTTP, WebSocket, gRPC) - формат и семантика обмена
Инкапсуляция данных: каждый уровень добавляет свой заголовок; на приёме происходит обратная декапсуляция.
2. Транспортный уровень
TCP (Transmission Control Protocol)
- Характеристики: соединение, упорядоченность, ACK/повторы, окна, контроль перегрузки
- Применение: веб (HTTP/HTTPS), почта, БД, SSH
- Handshake: 3-way (SYN → SYN-ACK → ACK)
UDP (User Datagram Protocol)
- Характеристики: без соединения и гарантий, минимальная задержка
- Применение: стримы/RTC, игры, DNS, телеметрия
SCTP (Stream Control Transmission Protocol)
- Характеристики: мультипотоки, частичная упорядоченность, защита от SYN-flood, мульти-homing
3. Прикладные протоколы
HTTP эволюция
- HTTP/0.9 (1991): только GET
- HTTP/1.1 (1997): keep-alive, кэш, пайплайнинг
- HTTP/2 (2015): бинарный, мультиплексирование, HPACK
- HTTP/3 (2022): QUIC, устойчив к потерям
HTTPS/TLS
- Функции: шифрование, аутентификация, целостность
- Стандарт: TLS 1.3
WebSocket
- Характеристики: постоянное двустороннее соединение поверх TCP
- Handshake: через HTTP Upgrade
gRPC
- Основа: HTTP/2 + Protocol Buffers
- Особенности: строгие контракты, потоки (unary/streaming), мультиязычность
4. HTTP - структура обмена
Структура запроса
Метод URI HTTP/версияЗаголовки[Тело запроса]Важные группы заголовков
- Контент:
Content-Type,Content-Length,Content-Encoding - Кэш:
Cache-Control,ETag,Last-Modified - Аутентификация:
Authorization,Cookie - CORS:
Origin,Access-Control-*
HTTP методы
| Метод | Безопасный | Идемпотентный | Описание |
|---|---|---|---|
| GET | ✅ | ✅ | Получение ресурса |
| POST | ❌ | ❌ | Создание ресурса |
| PUT | ❌ | ✅ | Обновление/создание |
| DELETE | ❌ | ✅ | Удаление ресурса |
| HEAD | ✅ | ✅ | Заголовки ресурса |
| OPTIONS | ✅ | ✅ | Поддерживаемые методы |
Коды состояния HTTP
- 2xx: 200 OK, 201 Created, 204 No Content
- 3xx: 301 Moved Permanently, 302 Found, 304 Not Modified
- 4xx: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests
- 5xx: 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout
5. Форматы данных
JSON
- Преимущества: компактный, быстрый парсинг, универсален в вебе
- Применение: основной формат обмена данными
HTML
- Назначение: разметка UI
- Версии: HTML5 с семантическими элементами
XML
- Особенности: строгая структура и валидация
- Применение: конфигурации, обмен данными между системами
YAML
- Назначение: конфигурации
- Особенности: читаемость, отступы
Бинарные форматы
- Protobuf: компактность/скорость для высоких нагрузок
- MessagePack: совместимость с JSON
6. Жизненный цикл HTTP-запроса
- Инициация: Действие пользователя → DNS-резолюция → TCP (3-way handshake) → TLS handshake (HTTPS)
- Отправка: Формирование запроса и отправка через сеть
- Обработка: Сервер: парсинг → маршрутизация → authN/authZ → бизнес-логика → БД
- Ответ: Формирование ответа и отправка клиенту
- Клиент: Парсинг, обновление UI (DOM/рендер)
7. Безопасность
Основные угрозы
- Перехват (sniffing): пассивное прослушивание трафика
- Подмена (spoofing/MitM): изменение передаваемых данных
- DoS/DDoS: отказ в обслуживании
Средства защиты
- Протоколы: TLS/HTTPS, IPSec, DNSSEC
- Заголовки: HSTS, CSP, X-Frame-Options, X-Content-Type-Options
- Аутентификация: JWT, OAuth 2.0, OpenID Connect
8. Производительность и надёжность
Метрики
- Latency: задержка от запроса до ответа
- Throughput: пропускная способность
- Bandwidth: полоса пропускания
- Reliability: надёжность доставки
- Scalability: масштабируемость
Техники оптимизации
- HTTP/2/3: мультиплексирование, сжатие заголовков
- Кэширование: Cache-Control/ETag + CDN
- Сжатие: Gzip/Brotli
- Балансировка: Load Balancer/Reverse proxy
- Мониторинг: APM, RUM, synthetic
Практические рекомендации
Фронтенд
- Минимизация запросов
- Агрессивный кэш статических ресурсов
- Preconnect/HTTP/2
- Lazy-loading
Бэкенд
- Эффективные БД-запросы
- Connection pooling
- Асинхронность
- Rate limiting
9. Практические советы
Обязательные практики
- ✅ Используйте HTTPS и современные заголовки безопасности
- ✅ Для API: чёткие контракты, корректные коды состояния, кэширование и пагинация
- ✅ Выбирайте протокол под задачу:
- HTTP для запрос-ответ
- WebSocket для real-time
- gRPC для межсервисного RPC
- ✅ Измеряйте и оптимизируйте: метрики → гипотеза → эксперимент → внедрение
Заключение
Понимание моделей, протоколов, структуры HTTP, форматирования данных, безопасности и оптимизаций — фундамент для проектирования быстрых, безопасных и масштабируемых интернет-приложений.