Learning Platform
Глоссарий Troubleshooting
Урок 04.02 · 17 мин
Начальный
TCP/IP modelNetworkingInternet protocols

Модель TCP/IP — 4 слоя реальной жизни

OSI — красивая академическая модель, но в реальном мире у нас работает модель TCP/IP. Она проще: всего 4 слоя. И именно её протоколы (TCP, IP, Ethernet, HTTP) построили Internet. OSI часто упоминают как «эталон», но реализованных систем по OSI не существует — слишком сложно, слишком много слоёв с размытыми границами.

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


TCP/IP — 4 слоя

Модель TCP/IP объединяет некоторые из 7 слоёв OSI в более простые группы:

Модель TCP/IP -- 4 слоя
Application LayerHTTP, DNS, SMTP, SSH, FTP, gRPC и прочие прикладные протоколы. Объединяет L5-L6-L7 из OSI. Здесь живёт весь user-facing software
Transport LayerTCP, UDP, QUIC. Соответствует L4 OSI. Передача данных между процессами. Reliability (TCP) или connectionless (UDP)
Internet LayerIP (IPv4, IPv6), ICMP. Соответствует L3 OSI. Маршрутизация между сетями. Адресация по IP-адресам
Link LayerEthernet, Wi-Fi, PPP -- всё про передачу внутри одной сети. Объединяет L1 и L2 OSI. Физическая среда + кадры

Сравнение с OSI:

  • Link layer = L1 (Physical) + L2 (Data Link) OSI. Объединили, потому что в реальности «уровень физической передачи битов» и «уровень адресации в LAN» работают одной командой (Ethernet-чип, Wi-Fi-карта).
  • Internet layer = L3 (Network) OSI. То же самое.
  • Transport layer = L4 (Transport) OSI. То же самое.
  • Application layer = L5 + L6 + L7 OSI. Объединили, потому что в TCP/IP мире нет отдельных session и presentation слоёв — их функции либо в приложении, либо в transport, либо в библиотеках.

Почему 4 слоя, а не 7

Несколько практических причин, по которым TCP/IP победила.

Почему TCP/IP выиграла
Простота4 слоя проще объяснить и применить, чем 7. Меньше абстракций, меньше путаницы
ПрагматикаTCP/IP отражает то, что реально реализовано в коде. OSI описывает то, что 'должно было быть' в теории
Эволюция от реализацииARPANET и Internet строили TCP/IP с 1970-х. OSI пришла в 1984, когда TCP/IP уже работала. OSI -- ретроспективный академический документ
ОткрытостьTCP/IP -- открытые стандарты RFC, любой может прочитать и реализовать. OSI -- проприетарные документы ISO, дорогие
Government pushМинистерство обороны США в 1980-х продавило TCP/IP в свою инфраструктуру. Это дало critical mass для распространения

Историческая ирония: OSI создавалась как «правильная» модель будущего, а TCP/IP считалась «временным решением». В итоге временное решение стало стандартом, а правильное — осталось академическим. Это типичная история в IT: prototype, который работает, побеждает идеальный дизайн, которого ждут годами.

Это полезный урок для проектирования: лучше выпустить работающую версию 1, чем годами полировать идеал. Можно потом обновить (HTTP/1 -> HTTP/2 -> HTTP/3). Главное — запустить адаптацию.


Что на каком слое в TCP/IP

Конкретные протоколы по слоям TCP/IP:

Протоколы по слоям TCP/IP
ApplicationHTTP, HTTPS (HTTP внутри TLS), DNS, SMTP, IMAP, POP3, FTP, SSH, Telnet, gRPC, WebSocket, MQTT, AMQP, SNMP, NTP
TransportTCP -- reliable, connection-oriented, 95% веба. UDP -- unreliable, connectionless, для DNS, video, gaming. QUIC -- современный, поверх UDP, для HTTP/3. SCTP -- редко (телекомы)
InternetIPv4 -- классический, 32-битные адреса. IPv6 -- следующее поколение, 128-битные адреса. ICMP -- control messages (ping, traceroute, errors). ARP в L2 для resolve IP->MAC, но обслуживает IP
LinkEthernet (802.3) -- доминантный wired LAN. Wi-Fi (802.11) -- беспроводной LAN. PPP -- point-to-point links. Frame Relay, ATM -- старые WAN-технологии

В каждом слое можно поменять протокол, не меняя другие. Пример эволюции:

  • Application: HTTP/1.1 -> HTTP/2 -> HTTP/3. Внизу всё то же.
  • Transport: TCP стабилен 30+ лет. QUIC — альтернатива поверх UDP. Не вытесняет, а добавляет.
  • Internet: IPv4 (1981) -> IPv6 (1995, ratified 2017). Сосуществуют (dual stack).
  • Link: 10 Mbit -> 100 Mbit -> 1 Gbit -> 10 Gbit -> 100 Gbit Ethernet. Всё то же выше.

Где OSI всё ещё нужен

Хотя в реальной разработке вы будете думать в терминах TCP/IP, OSI-терминология остаётся в обиходе. Причины:

  1. Уровневые названия (L1-L7). Когда инженер говорит «L7 LB», «L4 firewall», «L3 routing» — он использует OSI-номера. Это просто короче, чем «application layer LB».

  2. Сертификации. CCNA, CompTIA Network+ — все используют OSI-модель. Если вы готовитесь к ним — придётся выучить 7 слоёв.

  3. Документация vendor’ов. Cisco, Juniper, Aruba — их документация часто привязана к OSI. «Этот switch поддерживает L2 и L3 функции» — стандартная фраза.

  4. Образование. Большинство учебников начинают с OSI. Это de facto педагогическая модель.

Поэтому полезно знать оба: TCP/IP для практики, OSI для коммуникации.


Hybrid модель — 5 слоёв

Существует ещё одна вариация — 5-слойная модель. Это компромисс между TCP/IP и OSI. Используется в некоторых университетских курсах (Kurose-Ross в первую очередь):

5-слойная модель -- компромисс
5. ApplicationHTTP, DNS, SMTP. Объединяет L5-L7 из OSI
4. TransportTCP, UDP, QUIC. То же, что L4 OSI
3. NetworkIP, ICMP. То же, что L3 OSI и Internet TCP/IP
2. Data LinkEthernet, Wi-Fi (логическая часть)
1. PhysicalКабели, радио, физическая передача битов

В 5-слойной модели Link разделяют обратно на физический и канальный (как в OSI), но Application остаётся одной (как в TCP/IP). Это полезно для академического обсуждения — проще обсуждать конкретные функции L1 vs L2.

В этом курсе мы будем гибко использовать обе модели:

  • Когда обсуждаем конкретные протоколы (HTTP, TCP, IP) — TCP/IP, 4 слоя.
  • Когда обсуждаем сетевое оборудование (L2 switch, L3 router, L7 LB) — OSI-нумерация.

Это не идеально с точки зрения чистоты, но соответствует тому, как говорят в индустрии.


Жизненный путь пакета

Лучший способ понять слои — проследить, что происходит с одним HTTP-запросом, когда он спускается через все слои и поднимается обратно.

Спуск HTTP-запроса через слои
App: HTTP reqБраузер формирует HTTP-запрос: GET /index.html HTTP/1.1, Host: example.com, ...
Transport: TCPTCP добавляет свой заголовок: src port (random, e.g. 54321), dst port (443), sequence numbers, ACK, flags. HTTP-message становится TCP-payload
Internet: IPIP добавляет свой заголовок: src IP (ваш ноут), dst IP (example.com сервер), TTL, protocol=6 (TCP). TCP-сегмент становится IP-payload
Link: EthernetEthernet добавляет свой заголовок: src MAC (ваш ноут), dst MAC (default gateway), EtherType=0x0800 (IP). IP-пакет становится Ethernet-payload
Physical: bitsEthernet-фрейм кодируется в электрические сигналы (Cat6) или световые (fiber) или радиоволны (Wi-Fi). Биты улетают в среду

На каждом слое к данным добавляется свой заголовок. На приёмной стороне всё разворачивается обратно — заголовки считываются и снимаются.

Это и есть encapsulation (инкапсуляция). Следующий урок посвящён этому процессу детально.


Где TCP/IP неточная

Как и OSI, у TCP/IP-модели есть слабые места:

  1. TLS не имеет своего слоя. Это библиотека между transport и application. Концептуально это L5-L6, но в TCP/IP-моделях её часто упоминают как «между transport и application».

  2. QUIC размывает transport и application. QUIC — это transport, но содержит multiplexing (обычно ассоциируется с application layer) и встроенный TLS. Не вписывается чисто в один слой.

  3. VPN перепутывает иерархию. IPsec на L3 — это IP внутри IP. WireGuard — transport внутри UDP. Это не «честное» спускание вниз, а инкапсуляция одного уровня внутри другого того же уровня.

  4. Сложные приложения многослойны сами по себе. WebSocket поверх HTTP. gRPC поверх HTTP/2. Microservices через REST + Kafka. Каждое из них — свой стэк протоколов.

Но эти неточности не делают модель бесполезной — наоборот, они показывают, что networking сложнее любой одной модели. Используйте модель как ментальный инструмент, не как догму.


Попробуй сам

Посмотрите, как все слои работают вместе на одном запросе.

# Запустите захват пакетов на 5 секунд
sudo tcpdump -i en0 -c 20 -w /tmp/capture.pcap host example.com &
sleep 2

# В отдельном окне или после небольшой паузы
curl -s https://example.com > /dev/null

# Подождите завершения capture (или Ctrl+C)
sleep 3

Откройте /tmp/capture.pcap в Wireshark. Кликните на любой пакет. В нижней панели увидите дерево:

Ethernet II, Src: ..., Dst: ...      <- L2 (Link)
  Internet Protocol Version 4         <- L3 (Internet)
    Transmission Control Protocol      <- L4 (Transport)
      Transport Layer Security         <- (TLS, между L4 и L7)
        Hypertext Transfer Protocol    <- L7 (Application) -- виден если расшифровано

Это и есть encapsulation в действии. Каждый слой добавил свой заголовок при отправке, и Wireshark показывает их в обратном порядке — от внешнего (Ethernet) к внутреннему (HTTP).

Альтернативно, через CLI:

# Посмотреть детально один пакет
tcpdump -r /tmp/capture.pcap -nn -v -X | head -50
# -X показывает payload в hex и ASCII
# Видите заголовки IP, TCP, и кусочки данных

HTTP как Application Layer: от bytes до request/response Сетевые абстракции Docker: все 4 слоя изнутри
Проверка знанийKnowledge check
Senior спрашивает Junior'а на интервью: 'У нас есть выбор между двумя моделями для архитектурных диаграмм -- TCP/IP с 4 слоями и OSI с 7. Что выберешь и почему?'
ОтветAnswer
Правильный ответ зависит от целевой аудитории и контекста, но опытный Junior должен показать понимание trade-offs. Аргументы за TCP/IP: (1) Соответствует реальности -- именно эти протоколы (TCP, IP, Ethernet, HTTP) работают в production. (2) Проще -- 4 слоя легче объяснить, меньше путаницы. (3) Дизайн команды чаще думает в этих терминах: application код, transport-layer (gRPC vs HTTP), infrastructure (IP/Ethernet). Хорошо для high-level архитектурных дискуссий. Аргументы за OSI: (1) Точнее различение L1 vs L2 (физика vs канальный) -- полезно для дискуссий с network team про физическое оборудование. (2) L5-L6 концепции (session, presentation) могут быть нужны при сложных протоколах с custom-handshake'ами. (3) Стандарт в академии и сертификациях -- если у вас в команде кто-то после CCNA, он мыслит в OSI. (4) Удобно ссылаться на номера L1-L7 -- 'L7 firewall' короче, чем 'application-layer firewall'. Прагматичный ответ Junior'а: 'Для большинства архитектурных задач я предпочитаю TCP/IP с 4 слоями -- они отражают реальность и проще объясняются. Но для дискуссий с network team или security-аудита использую OSI-нумерацию (L2 switch, L3 router, L7 LB) -- это де факто терминология индустрии. На диаграмме я могу указать оба обозначения, особенно для protocols в transition (например, QUIC, который не вписывается в чистый L4)'. Это показывает: (а) понимание моделей и их назначения; (б) практический подход без догматизма; (в) учёт аудитории. Senior оценит. Главное -- не цепляться за одну модель как 'единственно верную'.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 6. Какие 4 слоя в модели TCP/IP, и как они соотносятся с 7 слоями OSI?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4