ping 交换中 ICMP 协议 1 端口 xxx 不可达的确切含义

ping 交换中 ICMP 协议 1 端口 xxx 不可达的确切含义

ping 会话的 tcpdump 显示以下两行:

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 图解,Stevens

为什么是 UDP?该ping命令传统上是使用 ICMP 回显请求实现的,但在某些平台上,某些工具可以使用其他协议。例如nmap -sU

答案2

在这个背景下是什么protocol 1 port XXX

协议编号 1 是 ICMP。ICMP 不使用端口,但它使用 16 位标识符,port此处为了简单起见将其称为标识符。(也许程序员懒得区分,或者标签会让用户更加困惑identifier。)

NAT 路由器也使用标识符字段将答复映射到原始 NAT 会话,当然本地 IP 堆栈本身也使用标识符字段将回显答复路由回发起请求的进程 - 非常类似于传输层端口号。

相关内容