Как пакеты находят дорогу
Каждый маршрутизатор уменьшает TTL пакета на единицу. Когда он доходит до 0, пакет выбрасывают, поэтому пакет, попавший в петлю, не может кружить вечно.
Попробуй симулятор, прежде чем читать дальше. Поставь TTL 2 и нажми «Отправить», потом поставь 64 и отправь снова. Следи, где пакеты остановятся в первый раз.
Перетащи, чтобы повернуть. Колёсико или щипок для масштаба.
Что ты только что увидел: обратный отсчёт в каждом пакете
При TTL 2 каждый пакет погиб на втором встреченном маршрутизаторе, и обратно пришло красное сообщение. При 64 пакеты дошли до сервера с остатком 60 после четырёх маршрутизаторов. В заголовке IPv4 есть 8-битное поле Time to Live (TTL, «время жизни»), поэтому его наибольшее значение 255. RFC 791 требует, чтобы каждый маршрутизатор уменьшал его хотя бы на единицу, а многие компьютеры начинают с 64. Когда значение доходит до 0, маршрутизатор отбрасывает пакет и отправляет отправителю сообщение ICMP «Time Exceeded» (RFC 792). Это и было красное сообщение.
Зачем вообще обратный отсчёт? Ошибка в таблицах маршрутизации может пустить пакет по кругу, и без ограничения он занимал бы связи вечно. В названии есть слово «время», и на бумаге RFC 791 измеряет его в секундах. Но каждый маршрутизатор отнимает хотя бы единицу, так что на деле это счётчик переходов. В IPv6 у того же поля название проще: Hop Limit, предел переходов.
Кнопка traceroute по этому правилу рисует карту. Она отправляет пробу с TTL 1: первый маршрутизатор отбрасывает её и отвечает, и так становится известен его адрес. TTL 2 открывает второй маршрутизатор, и так далее, пока не ответит получатель. Нажми её и прочитай список, который она строит. Потом разорви R1 и R3 и отправь снова, чтобы увидеть, как пакеты идут другим путём.
Каждый маршрутизатор ищет одну строку в таблице
Ни один маршрутизатор не знает всего пути от твоего ноутбука до сервера на другом континенте. Каждый принимает одно решение: какому соседу отдать пакет с этим адресом получателя? Пакет проходит один переход, и следующий маршрутизатор решает снова. Маршрут складывается из цепочки таких местных решений.
Решение берётся из таблицы пересылки, списка префиксов, у каждого из которых указан сосед. Маршрутизатор выбирает запись, совпадающую с адресом получателя по самому длинному префиксу, потому что более длинный префикс означает более точное совпадение. Допустим, таблица отправляет 203.0.0.0/16 соседу B, а 203.0.113.0/24 соседу A. Пакет для 203.0.113.9 совпадает с обеими записями, побеждает /24, и он уходит к A. Пакет для 203.0.7.1 совпадает только с /16, поэтому уходит к B. В большинстве таблиц есть ещё запись по умолчанию для всего остального; в домашнем роутере она указывает на провайдера.
| Пакет для | Совпавшие записи | Куда отправлен |
|---|---|---|
| 203.0.113.9 | 203.0.113.0/24 (A), 203.0.0.0/16 (B), по умолчанию (провайдер) | A, самый длинный (24 бита) |
| 203.0.7.1 | 203.0.0.0/16 (B), по умолчанию (провайдер) | B, самый длинный (16 бит) |
| 8.8.8.8 | по умолчанию 0.0.0.0/0 (провайдер) | Провайдер |
Кто заполняет таблицы
Внутри одной компании маршрутизаторы сообщают друг другу, что им доступно, с помощью протоколов маршрутизации и находят новые пути, когда связь обрывается. Между десятками тысяч отдельных сетей, из которых состоит интернет, протокол пограничного шлюза (BGP, RFC 4271) разносит объявления вроде «я могу доставить в 198.51.100.0/24». Когда кабель перерезан, маршруты через него отзываются, и трафик переходит на оставшийся путь. В симуляторе именно это произошло, когда ты разорвал R1 и R3.
Большинство пакетов теряется из переполненной очереди
Маршрутизаторы ещё и заставляют пакеты ждать. В час пик пакеты приходят быстрее, чем исходящая связь успевает их передать, поэтому каждый маршрутизатор держит в памяти очередь. Когда очередь заполнена, следующий пришедший пакет просто отбрасывается. Никому об этом не сообщают; отправитель может догадаться только позже. Так пакеты пропадают в интернете чаще всего, чаще, чем из-за перерезанного кабеля. Слабый сигнал Wi-Fi тоже может испортить кадр, и его придётся выбросить. Сам IP ничего не обещает. RFC 791 говорит, что он не обеспечивает надёжной связи: нет ни подтверждений, ни повторной передачи. Возвращать потерянные данные приходится компьютерам на двух концах, и об этом следующий урок.
Фото в 3 000 000 байт занимает 2055 пакетов
Связи ограничивают размер одного пакета. В Ethernet один кадр несёт не больше 1500 байт полезных данных (RFC 894). Вычти 20 байт заголовка IPv4 и 20 байт заголовка TCP, и в каждый пакет поместится около 1460 байт твоих данных. Поэтому фото в 3 000 000 байт требует 3 000 000 ÷ 1460 ≈ 2054.8, с округлением вверх 2055 пакетов, и каждый маршрутизируется сам по себе.
- Пакет уходит с TTL 64 и проходит 4 маршрутизатора. Каким будет его TTL на месте?
- TTL является 8-битным полем. Какое наибольшее значение в нём помещается?
- Что делает маршрутизатор, когда TTL пакета доходит до 0?
- Отбрасывает его и отправляет отправителю ICMP Time Exceeded
- Отправляет дальше с TTL 64
- Возвращает отправителю
- Держит у себя, пока сеть не освободится
- Зачем нужен TTL?
- Чтобы пакет, попавший в петлю маршрутизации, не кружил вечно
- Чтобы измерять скорость света
- Чтобы указать, сколько веб-страница может храниться в кэше
- Чтобы считать пакеты в файле
- traceroute отправляет пробу с TTL 1. Кто отвечает?
- Первый маршрутизатор на пути
- Сервер-получатель
- DNS-резолвер
- Никто
- В таблице есть 203.0.113.0/24 → A и 203.0.0.0/16 → B. Куда пойдёт пакет для 203.0.113.9?
- A
- B
- Обоим
- Никуда
- Та же таблица. Куда пойдёт пакет для 203.0.7.1?
- B
- A
- Обоим
- Его отбросят
- В один пакет помещается около 1460 байт данных. Сколько пакетов нужно файлу в 3 000 000 байт?
- Какой протокол разносит объявления о маршрутах между отдельными сетями интернета?
- BGP
- DNS
- HTTP
- UDP
- В симуляторе ты разорвал связь R5 с сервером. Что произойдёт?
- Ничего не пройдёт: у сервера только одна связь
- Пакеты пойдут в обход через R4
- Пакеты придут быстрее
- Пройдут только пакеты UDP
- «Каждый маршрутизатор знает весь путь до сервера.» Каждый маршрутизатор лишь выбирает следующий переход по своей таблице пересылки. Маршрут получается из цепочки этих отдельных решений, и пакеты одного сообщения могут пойти разными путями.
- «TTL показывает, сколько секунд осталось пакету.» RFC 791 действительно описывает его в секундах, но каждый маршрутизатор обязан отнимать хотя бы единицу, так что на деле он считает переходы. В IPv6 его переименовали в Hop Limit. TTL у записи DNS является другим значением с тем же названием, и оно действительно в секундах.
- «Чаще всего пакеты теряются из-за оборванных кабелей.» Чаще всего их отбрасывают загруженные маршрутизаторы с переполненными очередями, а ещё кадры портит слабый сигнал Wi-Fi. Перерезанный кабель встречается реже, и маршрутизаторы часто могут пустить трафик в обход.
- «IP следит, чтобы каждый пакет дошёл.» RFC 791 говорит, что IP не обеспечивает надёжной связи: ни подтверждений, ни повторной передачи. Восстановлением занимаются два конечных компьютера, обычно с помощью TCP.
- Маршрутизаторы решают по одному переходу с помощью таблицы пересылки; побеждает самый длинный совпавший префикс.
- BGP распространяет объявления о маршрутах между сетями и отзывает маршруты, когда связи обрываются.
- TTL (в IPv6 Hop Limit) уменьшается на 1 на каждом маршрутизаторе; на 0 пакет отбрасывается, и ICMP сообщает об этом.
- traceroute составляет карту пути, отправляя TTL 1, 2, 3 и так далее.
Источники курса (28)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then operators and papers, history sources last)
- IETF RFCs (rfc-editor.org): RFC 768 UDP (1980, 8-byte header)
- RFC 791 IPv4 (1981, 32-bit addresses, "does not provide a reliable communication facility", TTL field "measured in units of seconds" but every module must decrease it by at least one, so it is only an upper bound)
- RFC 792 ICMP (Time Exceeded)
- RFC 801 NCP/TCP transition plan (1 January 1983)
- RFC 894 Ethernet (1500-byte payload)
- RFC 1034 and RFC 1035 DNS (1987, HOSTS.TXT kept by SRI-NIC, labels up to 63 octets and names up to 255, TTL in seconds)
- RFC 1122 (127.0.0.0/8 loopback)
- RFC 1918 private addresses (10/8, 172.16/12, 192.168/16)
- RFC 2131 DHCP, RFC 3022 NAT, RFC 3596 AAAA records, RFC 3849 and RFC 5737 documentation addresses, RFC 4271 BGP-4, RFC 4291 IPv6 text form, RFC 6298 TCP retransmission timer (initial RTO 1 second)
- RFC 6335 port ranges (0-1023, 1024-49151, 49152-65535)
- RFC 7766 DNS over TCP, RFC 8200 IPv6 (128-bit addresses, Hop Limit)
- RFC 8446 TLS 1.3 (one round-trip handshake)
- RFC 9000 QUIC and RFC 9114 HTTP/3, RFC 9110 HTTP semantics (status code classes)
- RFC 9293 TCP (three-way handshake, sequence numbers)
- IANA: ip-parameters registry (recommended default TTL 64)
- IPv4 free pool depleted 3 February 2011 (NRO and ARIN announcements)
- Official documentation: MDN Web Docs "How does the Internet work?" (45 cables for 10 computers, switches, routers, MAC and IP addresses, internet and web)
- "What is a URL?", "HTTP response status codes" (developer.mozilla.org)
- Cloudflare Learning Center: "What is DNS?" (four kinds of DNS server, 8 steps of an uncached lookup, browser and OS caches, TTL)
- "What is HTTP/3?" (cloudflare.com/learning)
- Google Chrome Help, "Browse in Incognito mode" (support.google.com/chrome/answer/95464, checked 2026-10-19: Incognito limits what is saved to the device; websites and organisations that manage your network, like your school, employer or internet service provider, may be able to observe your activity)
- Operators and papers: root-servers.org (13 root name servers run by 12 organisations, 2047 instances on 2026-10-17)
- Jacobson and Karels 1988, Congestion Avoidance and Control (loss mostly congestion)
- History blocks only: UCLA Samueli School of Engineering, Internet50 (first ARPANET message "LO", UCLA to SRI, 29 October 1969, 22:30)
- historyofinformation.com and Wikipedia ARPANET (Kline)
- Spiceworks/SRI history (HOSTS.TXT kept by SRI-NIC)
- Numbers (2^32, 2^96, 45 and 6 cables, packet counts, round-trip times)
Проверено: 2026-10-17