Пакеты, IP и TCP: как данные доходят
Зачем:Вы поймёте, что страница путешествует не целиком, а кусками, и почему она всё-таки собирается правильно. После урока вы можете объяснить IP-адрес, порт, потерянный пакет и рукопожатие TCP простым языком.
20 минут
Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.
Пакет — кусок данных с заголовком «откуда, куда, номер». IP доставляет пакеты по адресам без гарантий, а TCP нумерует, подтверждает и повторяет потерянное.
Страница едет кусками
Когда вы открываете страницу, она не приходит одной посылкой. Данные режут на небольшие куски, пакеты, и каждый едет сам по себе. Сравните с переездом: вещи не грузят в один огромный вагон, а раскладывают по коробкам, нумеруют и отправляют разными машинами. На месте коробки открывают по номерам.
У пакета есть заголовок, как на посылке: откуда, куда и какой это номер. И есть содержимое: сам кусок данных. Размер ограничен: пакет обычно несёт полторы тысячи байт, то есть около полутора килобайт. Страница в сто килобайт это около семидесяти пакетов, а картинка в мегабайт около семисот.
Подвигайте ползунок потерь на схеме. Сеть не идеальна: пакеты иногда теряются, приходят не в том порядке, а получатель всё равно собирает целое.
откуда 203.0.113.7:51514 → куда 198.51.100.20:443 | пакет №3 из 10 | данные: «р и судеб»
203.0.113.7 и 198.51.100.20 это адреса узлов (так принято писать примеры). Число после двоеточия это порт: порт 443 принимает защищённый веб-трафик (HTTPS), а порт отправителя выбирает ваш компьютер.
Отправлено в этом круге: пакеты 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Дошли, в порядке прибытия: 3, 4, 7, 2, 1, 6, 10, 9. Потеряны: 5, 8. Получатель сообщает, каких номеров нет, и отправитель шлёт их снова.
Что собрал получатель: Кадастровый инженер и судебный экспе▒▒аю владельцам учас▒▒оять границы.
Всего отправлено пакетов: 13 при 10 в тексте. Лишняя работа из-за потерь: 3.
Проверьте себя: из чего состоит пакет?
Из заголовка (откуда, куда, номер) и содержимого (кусок данных).
Зачем резать на пакеты
Раньше телефонная связь работала по-другому: на время разговора вам выделяли целую линию, и никто другой её не использовал. Такая линия простаивала, пока вы молчите, и рвалась, если ломался хоть один участок.
Пакетная сеть устроена экономнее. Пакеты разных людей идут по одним и тем же линиям вперемешку. Если какой-то узел сломался, пакеты обходят его другой дорогой. Эту идею в начале 1960-х придумали Пол Бэран в США и Дональд Дэвис в Великобритании, и на ней вырос интернет.
Пересылают пакеты маршрутизаторы (роутеры): узлы, которые смотрят на адрес получателя в заголовке и решают, кому отдать пакет следующему. Ни один из них не знает всего маршрута, каждый знает только, куда отдавать дальше. Поэтому пакеты одного сообщения могут идти разными путями и приходить не по порядку.
IP: адрес узла
Каждому устройству в сети нужен адрес, иначе не понятно, куда везти пакет. Такой адрес называется IP-адресом. В протоколе IPv4 он состоит из четырёх чисел от 0 до 255, разделённых точками, например 198.51.100.20. Всего таких адресов около 4,3 миллиарда, и на все устройства планеты их давно не хватает.
Поэтому есть IPv6, где адрес гораздо длиннее и записывается в шестнадцатеричном виде, например 2001:db8::1. Адресов в нём практически бесконечно много, и сегодня оба протокола работают рядом.
Дома у вас обычно один «внешний» адрес, который выдал провайдер, и роутер, который раздаёт устройствам внутри дома свои адреса вида 192.168.…. Внутренние адреса снаружи не видны.
Важное свойство IP: он доставляет «как получится». Пакет может потеряться, прийти дважды или не в порядке. Гарантий нет, и это сознательное решение: так сеть остаётся простой и быстрой.
Проверьте себя: почему IPv6 понадобился, если есть IPv4?
Адресов IPv4 около 4,3 миллиарда, и их не хватает на все устройства. У IPv6 адрес длиннее, адресов практически неограниченно.
Порты: какая программа
IP-адрес приводит пакет на нужный компьютер. Но на компьютере работает много программ, и пакет надо отдать нужной: браузеру, почтовой программе, игре. Для этого есть порт: число от 0 до 65535. Адрес это дом, порт это квартира.
Некоторые порты стандартные: 80 для обычного веба (HTTP), 443 для защищённого (HTTPS), 25 для отправки почты, 53 для DNS. Браузер подставляет их сам, поэтому в адресе сайта вы порт не видите. В адресе https://example.com:8443/ порт указан явно, потому что он нестандартный.
TCP: надёжность поверх ненадёжности
IP не гарантирует доставку, а нам нужно, чтобы страница пришла целиком и в порядке. Этим занимается TCP, протокол надёжной передачи, который работает поверх IP. Он делает четыре вещи:
- Устанавливает соединение. Клиент и сервер сначала договариваются, как «рукопожатие» из трёх шагов: клиент говорит SYN («давайте общаться»), сервер отвечает SYN-ACK («согласен»), клиент отвечает ACK («принято»). Только потом идут данные.
- Нумерует пакеты.
- Подтверждает полученное: получатель сообщает, что именно дошло.
- Повторяет потерянное: если подтверждения нет, отправитель посылает пакет снова. Это вы видели на схеме.
Ещё TCP следит, чтобы не засыпать получателя и не перегрузить сеть: начинает осторожно и разгоняется, пока всё идёт гладко.
Есть и другой подход, UDP: он просто шлёт пакеты без гарантий и подтверждений. Он быстрее и подходит там, где опоздавший пакет уже не нужен: в видеозвонке, в запросах DNS, в играх.
Из рукопожатия следует важное: прежде чем пошёл первый байт страницы, прошло не меньше одного круга «туда и обратно». Скорость света в оптоволокне конечна, поэтому сайт, который стоит на другом конце планеты, открывается с задержкой, которую не победить никаким тарифом. Это одна из причин, по которым сайты размещают ближе к посетителям.
Проверьте себя: чем отличаются IP и TCP?
IP доставляет пакеты по адресам «как получится», без гарантий. TCP поверх него нумерует пакеты, подтверждает полученное и повторяет потерянное, так что данные приходят целыми и в порядке.
Практика
Вы в эпохе 1996 года. Ваш сайт будут открывать по модему, примерно 3,6 килобайта в секунду. Пятьдесят килобайт грузятся почти четырнадцать секунд, и это уже долго. Поэтому у каждой страницы был бюджет: сколько она может весить.
Под заголовком добавлена таблица веса страницы. Посчитайте, сколько весит текст, логотип, главная картинка и картинки к вашим услугам, товарам или людям (вы описали их в брифе). Пишите числа в килобайтах. Если картинки у вас нет, так и напишите. В итоговой строке сумма, и она должна уложиться в 50 килобайт.
Сколько пакетов это значит? Разделите вес на полтора килобайта: 40 килобайт это около 27 пакетов.
Что было не так с 1996 годом
Бюджет в 50 килобайт заставлял экономить: сжимать картинки, отказываться от лишнего. Это была вынужденная дисциплина, и она не устарела: сегодня медленные телефонные сети и дорогой трафик делают ту же экономию важной для миллионов людей. А вот способ считать на глаз устарел, потому что сегодня для этого есть инструменты браузера: мы откроем их в последнем уроке части.
Практика
Готовлю вашу страницу…
Тест
Вопрос 1 из 6
Карточки
Эти карточки попадут в повторение, когда вы завершите урок.
Что такое пакет?
Ответ
Небольшой кусок данных (обычно до 1500 байт) с заголовком: откуда, куда, номер. Любая страница путешествует по сети пакетами.
Что такое IP-адрес?
Ответ
Адрес узла в сети. В IPv4 это четыре числа от 0 до 255 через точку, а в IPv6 длиннее: адресов хватает на всех.
Зачем нужен порт?
Ответ
IP-адрес находит компьютер, а порт находит программу на нём: 80 для HTTP, 443 для HTTPS, 25 для почты.
Что делает TCP?
Ответ
Делает надёжной ненадёжную сеть: нумерует пакеты, подтверждает полученное и повторяет потерянное.
Как устроено рукопожатие TCP?
Ответ
Три шага: клиент шлёт SYN, сервер отвечает SYN-ACK, клиент отвечает ACK. Потом идут данные.
Источники
- Как работает Интернет (MDN) CC BY-SA, по-русски
- Internet protocol suite (Wikipedia) CC BY-SA, по-английски
- RFC 9293: Transmission Control Protocol (TCP) только ссылка, по-английски
- TCP (Википедия) CC BY-SA, по-русски
- Computer Networks: A Systems Approach только ссылка, по-английски
Видео
Что такое интернет-протокол TCP/IP (Zero to Hero, «Как устроен интернет», 3 из 13)
Видео загрузится с youtube-nocookie.com только после нажатия.
Дальше
Теперь вы знаете: пакеты и коммутация, IP-адреса, TCP и порты.