Я изучал книгу Куроса и Росса о компьютерных сетях и в подразделе Traceroute прочитал следующее:
Более конкретно, предположим, что между источником и местом назначения находится N - 1 маршрутизатор. Затем источник отправит в сеть N специальных пакетов, каждый из которых будет адресован конечному получателю. Эти N специальных пакетов помечены от 1 до N, причем первый пакет помечен как 1, а последний пакет - как N. Когда n-й маршрутизатор получает n-й пакет с пометкой n, маршрутизатор не пересылает пакет к месту назначения, а вместо этого отправляет сообщение вернуться к источнику.
Я думал, что маршрут пакета определяется в зависимости от трафика и других факторов, пока он движется от источника к месту назначения. Итак, я подумал, что количество маршрутизаторов, через которые проходит пакет, может время от времени меняться.
Но из цитаты я понимаю, что количество маршрутизаторов между источником и местом назначения известно до того, как пакет перейдет от источника к месту назначения. Если это так, то откуда это число известно источнику? Если нет, может ли кто-нибудь объяснить мне этот феномен маршрутизации?
Вы правы в своем изначальном образе мышления. Количество прыжков заранее не известно и действительно может измениться. Вы воспринимаете цитату слишком буквально, то есть неправильно понимаете, что существует буквально пакет с пометкой N, который получает n-й маршрутизатор и также каким-то образом знает себя как n-й маршрутизатор. Не ваша вина, поскольку цитата сбивает с толку.
В трассировке Пакеты ICMP рассылаются с TTL (время жить) поле, которое истекает в сначала, затем, затем ... n-й прыжок. На каждом переходе, когда наступает тайм-аут, Время ICMP превышено сообщение отправляется обратно источнику (вам). Собирая сообщения о прогрессивном тайм-ауте, вы можете создать путь к целевой сети. N-й маршрутизатор, который является вашей целью, не отключает тайм-аут и отправляет обратно Эхо-ответ ICMP (когда эхо-сигналы используются в качестве среды сообщений трассировки).
Возвращаясь к вашей цитате и воспринимаемой не совсем буквально, n-й пакет будет последним отправленным вами сообщением, которое в конечном итоге достигнет цели после того, как вы сгенерировали путь до этой точки - для маршрутизаторов n-1 - отправляя сообщения с постепенно увеличивающимся TTL.
Надеюсь, это поможет.