edubun
Русский

Как пакеты находят дорогу

Каждый маршрутизатор уменьшает TTL пакета на единицу. Когда он доходит до 0, пакет выбрасывают, поэтому пакет, попавший в петлю, не может кружить вечно.

Попробуй симулятор, прежде чем читать дальше. Поставь TTL 2 и нажми «Отправить», потом поставь 64 и отправь снова. Следи, где пакеты остановятся в первый раз.

Загрузка

Перетащи, чтобы повернуть. Колёсико или щипок для масштаба.

Поставь TTL 2 и нажми «Отправить»: каждый пакет погибает на втором встреченном маршрутизаторе, R1 или R2, и обратно приходит красное сообщение ICMP. Поставь 64, и пакеты доходят с TTL 60, пройдя четыре маршрутизатора. Кнопка traceroute отправляет пробы с TTL от 1 до 5 и показывает, кто ответил. Разорви R1 и R3 и отправь снова, чтобы увидеть, как пакеты идут в обход.

Что ты только что увидел: обратный отсчёт в каждом пакете

При 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.9203.0.113.0/24 (A), 203.0.0.0/16 (B), по умолчанию (провайдер)A, самый длинный (24 бита)
203.0.7.1203.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 пакетов, и каждый маршрутизируется сам по себе.

  1. Пакет уходит с TTL 64 и проходит 4 маршрутизатора. Каким будет его TTL на месте?
  2. TTL является 8-битным полем. Какое наибольшее значение в нём помещается?
  3. Что делает маршрутизатор, когда TTL пакета доходит до 0?
    • Отбрасывает его и отправляет отправителю ICMP Time Exceeded
    • Отправляет дальше с TTL 64
    • Возвращает отправителю
    • Держит у себя, пока сеть не освободится
  4. Зачем нужен TTL?
    • Чтобы пакет, попавший в петлю маршрутизации, не кружил вечно
    • Чтобы измерять скорость света
    • Чтобы указать, сколько веб-страница может храниться в кэше
    • Чтобы считать пакеты в файле
  5. traceroute отправляет пробу с TTL 1. Кто отвечает?
    • Первый маршрутизатор на пути
    • Сервер-получатель
    • DNS-резолвер
    • Никто
  6. В таблице есть 203.0.113.0/24 → A и 203.0.0.0/16 → B. Куда пойдёт пакет для 203.0.113.9?
    • A
    • B
    • Обоим
    • Никуда
  7. Та же таблица. Куда пойдёт пакет для 203.0.7.1?
    • B
    • A
    • Обоим
    • Его отбросят
  8. В один пакет помещается около 1460 байт данных. Сколько пакетов нужно файлу в 3 000 000 байт?
  9. Какой протокол разносит объявления о маршрутах между отдельными сетями интернета?
    • BGP
    • DNS
    • HTTP
    • UDP
  10. В симуляторе ты разорвал связь R5 с сервером. Что произойдёт?
    • Ничего не пройдёт: у сервера только одна связь
    • Пакеты пойдут в обход через R4
    • Пакеты придут быстрее
    • Пройдут только пакеты UDP
Частые ошибки
  • «Каждый маршрутизатор знает весь путь до сервера.» Каждый маршрутизатор лишь выбирает следующий переход по своей таблице пересылки. Маршрут получается из цепочки этих отдельных решений, и пакеты одного сообщения могут пойти разными путями.
  • «TTL показывает, сколько секунд осталось пакету.» RFC 791 действительно описывает его в секундах, но каждый маршрутизатор обязан отнимать хотя бы единицу, так что на деле он считает переходы. В IPv6 его переименовали в Hop Limit. TTL у записи DNS является другим значением с тем же названием, и оно действительно в секундах.
  • «Чаще всего пакеты теряются из-за оборванных кабелей.» Чаще всего их отбрасывают загруженные маршрутизаторы с переполненными очередями, а ещё кадры портит слабый сигнал Wi-Fi. Перерезанный кабель встречается реже, и маршрутизаторы часто могут пустить трафик в обход.
  • «IP следит, чтобы каждый пакет дошёл.» RFC 791 говорит, что IP не обеспечивает надёжной связи: ни подтверждений, ни повторной передачи. Восстановлением занимаются два конечных компьютера, обычно с помощью TCP.
Заметка для учителяДайте ученикам что-нибудь сломать до того, как вы что-то объясните: TTL 2, потом 64, потом разорванная связь. Когда они увидят, как пакет погибает, большинство вопросов отпадёт само. Буксуют они на совпадении по самому длинному префиксу. Разберите таблицу из двух записей вручную, записав адреса один под другим, чтобы было видно общее начало, и только потом добавьте запись по умолчанию. С самого начала разделяйте два вида TTL, потому что урок про DNS использует те же три буквы для числа секунд.
Главное
  • Маршрутизаторы решают по одному переходу с помощью таблицы пересылки; побеждает самый длинный совпавший префикс.
  • 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