ICMP
ICMP 报文分查询报文和差错报文。
ICMP 差错报文必须包括生成该差错报文的数据报的 IP 首部(包含选项),还必须包括紧跟在该 IP 首部后面的 8 个字节。这 8 个字节中包含 TCP 或 UDP 首部中的源端口号,接收该 ICMP 差错报文的系统可以根据源端口号将差错报文与某个特定的用户进程相关联。
ICMP 时间戳请求和应答查询报文
用处:向另一个系统查询当前的时间。
ICMP 地址掩码请求和应答查询报文
用处:用于无盘系统引导时获取自己的子网掩码。
ICMP 时间戳请求和应答查询报文
用处:向另一个系统查询当前的时间。
ICMP 端口不可达差错报文
用处:traceroute 程序。
产生:如果收到一份 UDP 数据报而目的端口与所有使用 UDP 的进程的端口都不相符,那么 UDP 返回一个端口不可达差错报文。
ICMP 请求回显和回显应答查询报文
用处:ping 程序。
ICMP 超时差错报文
用处:traceroute 程序。
产生:当路由器收到一份 TTL 字段为 0 或 1 的 IP 数据报,则路由器丢弃该数据报,并给信源机发一份超时差错报文。
ICMP 重定向差错报文
用处:让具有很少路由信息的主机逐渐建立比较完善的路由表。
产生:当路由器发现数据报的发送接口与到达接口相同时(这意味着转发的目的路由器和源主机在同一个局域网内),它给源主机发送一个重定向差错报文。
注意点:重定向差错报文只能由路由器产生,不能由主机产生;只能发给主机,不能发给路由器。
ICMP 路由器请求和通告查询报文(路由器发现查询报文)
用处:用于主机初始化路由表时。
产生:主机引导后广播或多播路由器请求报文,路由器响应路由器通告报文;另外,路由器定期地广播或多播路由器通告报文,以便主机更新路由表。
ICMP 主机和网络不可达差错报文
用处:向客户程序,例如,ping 程序,反馈网络状态。
产生:当路由器收到一份 IP 数据报而又无法转发时,它将给信源机发送一份主机不可达或网络不可达差错报文。至于究竟发送主机不可达还是网络不可达差错报文,要看目的端是否与路由器处在一个局域网上。
ICMP 不可达差错报文(需分片但设置了不分片标志)
用处:用于判断路径 MTU 的大小。
产生:当路由器收到一份需要分片的数据报,而在 IP 首部又设置了不分片标志比特 (DF) 时,路由器发送一个该 ICMP 报文。