3.1. Архитектура стека TCP/IP
3.1. Архитектура стека протоколов TCP/IP
Стек TCP/IP — фактический промышленный стандарт сети Интернет. Разработан в рамках проекта ARPANET/DARPA. В отличие от эталонной модели OSI, стек TCP/IP объединяет верхние три уровня в прикладной и ориентирован на практическую реализацию, а не на абстрактное описание.
3.1.1. Четыре уровня TCP/IP
| Уровень TCP/IP | Соответствие OSI | Основные функции | Примеры протоколов |
|---|---|---|---|
| Прикладной | 5, 6, 7 | Сетевые службы для приложений | HTTP, DNS, SMTP, FTP, SSH, SNMP |
| Транспортный | 4 | Доставка между процессами (портами) | TCP, UDP |
| Интернет (сетевой) | 3 | Маршрутизация, логическая адресация | IPv4, IPv6, ICMP, ARP |
| Канальный / сетевой доступ | 1, 2 | Передача по физической среде | Ethernet, Wi-Fi, PPP |
3.1.2. Структура заголовка IPv4 (основные поля)
| Поле | Размер | Назначение |
|---|---|---|
| Версия | 4 бита | Версия IP (4 для IPv4) |
| Длина заголовка (IHL) | 4 бита | Размер заголовка в 32-битных словах |
| Идентификатор, флаги, смещение | 16+3+13 бит | Фрагментация пакета |
| TTL | 8 бит | Время жизни пакета (уменьшается на каждом маршрутизаторе) |
| Протокол | 8 бит | Верхнеуровневый протокол (6=TCP, 17=UDP, 1=ICMP) |
| Адрес источника / назначения | по 32 бита | IPv4-адреса отправителя и получателя |
3.1.3. Пример сквозной передачи
При открытии https://example.com:
- DNS (прикладной) разрешает имя в IP-адрес.
- TCP (транспортный) устанавливает соединение на порт 443.
- IP (сетевой) маршрутизирует пакеты через шлюз и провайдера.
- Ethernet (канальный) доставляет кадры в пределах локального сегмента через ARP.
3.1.4. Документы стандартизации IETF
Стандарты Интернета публикуются как RFC (Request for Comments). Ключевые документы: RFC 791 (IPv4), RFC 793 (TCP), RFC 768 (UDP), RFC 2616/7230 (HTTP). Статус RFC: Proposed Standard, Draft Standard, Internet Standard.
Контрольные вопросы
- Сколько уровней в модели TCP/IP и какие уровни OSI они покрывают?
- Какое значение поля «Протокол» в заголовке IP указывает на TCP?
- Для чего используется TTL в IP-пакете?
- Чем стек TCP/IP отличается от модели OSI с практической точки зрения?
3.1.5. История и философия стека TCP/IP
Стек разрабатывался в 1970-х для сети ARPANET. Принцип end-to-end: интеллект на конечных узлах, сеть — «тупая» транспортная среда. Это позволило масштабировать Интернет без центрального управления каждым хопом. Протокол IP намеренно «ненадёжен» — повторная передача возложена на TCP при необходимости.
3.1.6. Заголовок TCP (основные поля)
| Поле | Назначение |
|---|---|
| Порт источника / назначения | Идентификация приложений (по 16 бит) |
| Номер последовательности (Seq) | Порядок байтов в потоке |
| Номер подтверждения (Ack) | Ожидаемый следующий байт от отправителя |
| Флаги (SYN, ACK, FIN, RST) | Управление соединением |
| Размер окна (Window) | Контроль потока — сколько данных готов принять получатель |
| Контрольная сумма | Проверка целостности заголовка и данных |
3.1.7. Фрагментация IP и DF-бит
Если IP-пакет превышает MTU следующего канала, маршрутизатор может фрагментировать его (если не установлен флаг DF — Don't Fragment). Фрагменты собираются на приёмнике. В IPv6 фрагментация маршрутизаторами исключена — только источник. Практический вывод: для VPN и туннелей часто уменьшают MTU (например, 1400), чтобы избежать фрагментации и потерь производительности.
3.1.8. Протокол ARP и его место в стеке
ARP работает «между» сетевым и канальным уровнями: по известному IP находит MAC в локальном сегменте. Без ARP узел не сможет сформировать кадр Ethernet для удалённого IP в той же подсети. Обратное разрешение — RARP (устарел), сейчас DHCP и DNS PTR.
3.1.9. Классификация RFC по статусу
- Informational — справочные материалы, не обязательны к внедрению.
- Experimental — экспериментальные протоколы.
- Proposed Standard — большинство действующих протоколов.
- Internet Standard — зрелые стандарты (мало; многие остаются Proposed).
- Historic — устаревшие (например, некоторые ранние версии).
Дополнительные вопросы для самопроверки
- Что произойдёт с пакетом с DF=1, если он больше MTU канала?
- Какое поле IP-заголовка указывает на вложенный протокол UDP?
- Почему принцип end-to-end важен для масштабирования Интернета?