TCP-дамп сеанса ping показывает следующие две строки:
IP gateway.comp.com > somehost.comp.com: ICMP redirect 10.8.0.10 to host othergateway.comp.com, length 68
IP gateway.comp.com > somehost.comp.com: ICMP 10.8.0.10 protocol 1 port 21475 unreachable, length 68
Я понял первое сообщение. Оно просто говорит somehost
не беспокоить основной gateway
пакеты на 10.8.0.10, а направлять их прямо через othergateway
.
Но что означает второе сообщение. Оно приходит на 17 мс позже и, кажется, связано. Что protocol 1 port XXX
в этом контексте. Что именно недоступно? ICMP (=протокол 1) не имеет портов, насколько я знаю, так что это значит?
решение1
Это, вероятно,Управляющее сообщение ICMP Тип 3 (адресат недоступен) Код 3 (порт недоступен)
Это означает, что в месте назначения нет серверного процесса, связанного с этим портом TCP или UDP.
«Одним из правил UDP является то, что если он получает датаграмму UDP, а порт назначения не соответствует порту, который используется каким-либо процессом, UDP отвечает сообщением ICMP о недоступности порта».- отИллюстрированный TCP/IP, Стивенс.
Почему UDP? ping
Традиционно команда реализуется с помощью ICMP echo-запросов, но на некоторых платформах некоторые инструменты могут использовать другие протоколы. Примером может служитьnmap -sU
решение2
Что
protocol 1 port XXX
в этом контексте?
Протокол номер 1 — ICMP. ICMP не использует порты, но использует 16-битный идентификатор, который здесь для простоты именуется как port
. (Возможно, программист не удосужился провести различие, или пользователи были бы еще больше запутаны меткой identifier
.)
Поле идентификатора также используется маршрутизаторами NAT для сопоставления ответов с исходным сеансом NAT и, конечно, самим локальным стеком IP для маршрутизации эхо-ответа обратно в процесс, который инициировал запрос, — очень похоже на номер порта транспортного уровня.