TCP/IP
| Полное название | Internet Protocol Suite |
|---|---|
| Авторы | Винтон Серф, Роберт Кан |
| Первая публикация | 1974 |
| Внедрение в ARPANET | 1 января 1983 |
| Уровни | канальный, межсетевой, транспортный, прикладной |
| Основные протоколы | IP (v4, v6), TCP, UDP, ICMP |
| Стандартизация | IETF (документы RFC) |
TCP/IP (англ. Internet Protocol Suite — «набор протоколов интернета») — семейство сетевых протоколов, на котором работает интернет и почти все локальные сети. Название составлено из двух главных протоколов: IP (Internet Protocol) отвечает за адресацию и доставку пакетов между сетями, а TCP (Transmission Control Protocol) — за надёжную передачу потока данных между программами. Рядом с ними работают UDP, ICMP и множество прикладных протоколов — HTTP, DNS, SSH.
Также TCP/IP называют четырёхуровневую модель, которая описывает этот стек и служит практической альтернативой модели OSI.
История
В начале 1970-х в США работала сеть ARPANET, но она не умела соединяться с другими сетями — радио- и спутниковыми. В 1974 году Винтон Серф и Роберт Кан опубликовали статью «Протокол для межсетевого взаимодействия пакетных сетей» с идеей единого протокола поверх разнородных сетей.[1] Позже монолитный протокол разделили на два: IP для маршрутизации и TCP для надёжной доставки; так стало возможным добавить UDP для задач, которым надёжность не нужна.
Спецификации IP и TCP вышли как RFC 791 и RFC 793 в 1981 году.[2] 1 января 1983 года ARPANET полностью перешла на TCP/IP — эту дату часто называют днём рождения интернета. Реализация стека в BSD Unix, свободно распространявшаяся университетам, сделала TCP/IP стандартом де-факто. В 2004 году Серф и Кан получили премию Тьюринга. Спецификация TCP в 2022 году была собрана заново в RFC 9293.[3]
Уровни
| Уровень | Задача | Протоколы | Аналог в OSI |
|---|---|---|---|
| Прикладной | обмен данными приложений | HTTP, DNS, TLS, SMTP, SSH | 5–7 |
| Транспортный | доставка между процессами (порты) | TCP, UDP, QUIC (поверх UDP) | 4 |
| Межсетевой | адресация и маршрутизация пакетов | IPv4, IPv6, ICMP | 3 |
| Канальный | передача в пределах одной сети | Ethernet, Wi-Fi, ARP | 1–2 |
Описание модели с этими четырьмя уровнями дано в RFC 1122.[5]
IP
IP доставляет пакеты — порции данных с заголовком, где указаны адрес отправителя и получателя. Каждый маршрутизатор по пути смотрит на адрес назначения и решает, куда переслать пакет дальше. IP работает по принципу «наилучшей попытки» (best effort): пакеты могут теряться, дублироваться и приходить не по порядку, и протокол этого не исправляет.
Используются две версии: IPv4 с 32-битными адресами (около 4,3 млрд) и IPv6 со 128-битными.[6] Адреса IPv4 давно исчерпаны, и нехватку компенсирует NAT — трансляция многих внутренних адресов в один внешний. Адресация и разбиение на подсети описаны в статье IP-адрес и подсети (CIDR).
TCP и UDP
Программы на одном компьютере различаются портами — числами от 0 до 65535. Пара «IP-адрес и порт» с обеих сторон однозначно определяет соединение: веб-сервер слушает порт 443, а браузер подключается со случайного порта.
| TCP | UDP | |
|---|---|---|
| Соединение | устанавливается тройным рукопожатием | нет |
| Надёжность | подтверждения, повторная передача, порядок | нет |
| Управление потоком и перегрузкой | есть | нет |
| Единица | поток байтов | отдельные датаграммы |
| Применение | веб, почта, SSH, базы данных | DNS, видеозвонки, игры, QUIC |
TCP устанавливает соединение обменом SYN — SYN-ACK — ACK, нумерует байты, подтверждает полученное, повторяет потерянное и регулирует скорость, чтобы не перегрузить сеть.[3] UDP просто отправляет датаграммы — быстро и без гарантий.[4] На UDP построен QUIC, основа HTTP/3: он переносит надёжность и шифрование в пространство пользователя и избавляется от задержек TCP.
Путь запроса
Когда браузер открывает https://example.com:
- DNS превращает имя в IP-адрес.
- TCP устанавливает соединение с портом 443 (или QUIC — по UDP).
- TLS шифрует канал.
- HTTP-запрос делится на сегменты, сегменты упаковываются в IP-пакеты, пакеты — в Ethernet- или Wi-Fi-кадры.
- Маршрутизаторы пересылают пакеты от сети к сети до сервера, где всё распаковывается в обратном порядке.
Инструменты
ip addr # адреса интерфейсов (Linux)
ip route # таблица маршрутизации
ping -c 4 example.com # доступность по ICMP
traceroute example.com # путь пакетов через маршрутизаторы
ss -tlnp # какие процессы слушают TCP-порты
nc -vz example.com 443 # открыт ли порт
sudo tcpdump -i any port 53 # перехват пакетов DNS
Для анализа трафика с графическим интерфейсом используют Wireshark, а для HTTP-уровня — curl.
См. также
Источники
- V. Cerf, R. Kahn — A Protocol for Packet Network Intercommunication (IEEE, 1974)
- RFC 791 — Internet Protocol
- RFC 9293 — Transmission Control Protocol (TCP)
- RFC 768 — User Datagram Protocol
- RFC 1122 — Requirements for Internet Hosts: Communication Layers
- RFC 8200 — Internet Protocol, Version 6 (IPv6) Specification