Что такое протокол и как устроена сеть
Прежде чем разбирать TCP и HTTP по отдельности, посмотрим на картину целиком: кто за что отвечает и почему протоколов так много.
- что такое сетевой протокол и кто их придумывает;
- зачем сеть разделена на уровни и какие они бывают;
- как данные «упаковываются» по дороге и какие адреса при этом используются.
1.1 Протокол — это договорённость
Протокол — это набор правил, по которым два устройства обмениваются данными: в каком порядке говорить, в каком формате, что считать ошибкой и что делать, если сообщение потерялось. Сами по себе устройства «не понимают» друг друга — понимание появляется только потому, что обе стороны следуют одним и тем же правилам.
Интернет — это не одна сеть, а миллионы сетей разных компаний и стран. Работать вместе им позволяет именно общий набор протоколов, который называют стеком TCP/IP — по двум главным его участникам.
Чтобы письмо дошло, все участники соблюдают договорённости: адрес пишут в определённом месте, индекс — шестью цифрами, марку клеят в углу. Почтальону не важно, что внутри конверта, — он смотрит только на адрес. Сетевые протоколы устроены так же: каждый отвечает за свою часть «доставки» и не лезет в чужую.
Протоколы интернета открыты: их описания публикуются в документах RFC (Request for Comments), которые готовит сообщество инженеров IETF. Любой производитель может прочитать RFC и сделать совместимое устройство или программу — поэтому телефон одной фирмы спокойно открывает сайт на сервере другой.
1.2 Уровни: кто за что отвечает
Передать страницу сайта — задача сложная, поэтому её разбили на несколько простых. Каждую решает свой уровень, и каждый уровень пользуется услугами того, что под ним. В интернете принята четырёхуровневая модель TCP/IP:
| 4 · Прикладной | смысл данных: страницы, почта, имена | HTTP, DNS, SMTP, SSH |
|---|---|---|
| 3 · Транспортный | доставка между программами | TCP, UDP, QUIC |
| 2 · Сетевой | доставка между сетями, маршрут | IP, ICMP |
| 1 · Канальный | доставка в пределах одной сети | Ethernet, Wi-Fi, ARP |
В учебниках часто встречается ещё и модель OSI из семи уровней. Это та же идея, только расписанная подробнее. На практике достаточно знать соответствие:
| Уровень OSI | В модели TCP/IP | Что передаётся |
|---|---|---|
| 7 Прикладной | Прикладной | Сообщения приложений: запрос HTTP, письмо, |
| 6 Представления | запрос DNS |
5 Сеансовый
| 4 Транспортный | Транспортный | Сегменты (TCP) или датаграммы (UDP) |
| 3 Сетевой | Сетевой | Пакеты IP |
| 2 Канальный | Канальный | Кадры и сами сигналы: электрические, световые, |
| 1 Физический | радио |
Когда говорят «проблема на третьем уровне» или «балансировщик седьмого уровня», имеют в виду именно номера OSI: L2 — Ethernet и Wi-Fi, L3 — IP, L4 — TCP и UDP, L7 — HTTP и другие прикладные протоколы.
1.3 Инкапсуляция: принцип матрёшки
Когда браузер отправляет запрос, данные проходят уровни сверху вниз. Каждый уровень добавляет впереди свой заголовок — служебную информацию, нужную именно ему, — и передаёт результат ниже. Это называется инкапсуляцией.
Кадр Ethernet / Wi-Fi — MAC-адреса отправителя и получателя
- Пакет IP — IP-адреса отправителя и получателя
- Сегмент TCP — порты, номера байтов, подтверждения
- Данные приложения — например, запрос HTTP: «GET /index.html»
На стороне получателя всё происходит в обратном порядке: каждый уровень снимает свой заголовок и передаёт содержимое выше. Промежуточные устройства заглядывают только на «свою» глубину: коммутатор смотрит на заголовок кадра, маршрутизатор — на заголовок IP, а что лежит внутри, им знать не нужно.
1.4 Четыре вида адресов
У каждого уровня свой способ сказать «кому». Путаница между ними — самая частая причина непонимания, поэтому соберём их в одну таблицу:
| Адрес | Пример | Уровень | Что обозначает |
|---|---|---|---|
| Доменное имя | example.com |
Прикладной (DNS) | Удобное для человека название сервера |
| Порт | 443 |
Транспортный | Конкретную программу на устройстве |
| IP-адрес | 203.0.113.10 |
Сетевой | Устройство в масштабе всего интернета |
| MAC-адрес | 3c:22:fb:1a:9e:04 |
Канальный | Сетевую карту в пределах одной локальной сети |
- IP-адрес — это город, улица и дом. Порт — номер квартиры: дом один, а жильцов (программ) много. Доменное имя — запись в записной книжке «бабушка», по которой вы находите настоящий адрес. MAC-адрес — это то, как почтальон узнаёт нужный подъезд уже на месте.
- М О Д У Л Ь 2