ICMP协议详解

ICMP报文格式

  • ICMP报头从IP报头的第160位开始(IP首部20字节)(除非使用了IP报头的可选部分)。

ICMP报头

type 8位
  • 询问报文:
    • 8 和 0 ping 请求 响应
    • 13和 14 ping时间戳,请求和回答
  • 差错报告:终点不可达,超时,路由改变等
code 8位

进一步划分错误类型

校验和 16位

ICMP头部和数据

ID 16位
  • 这个字段包含了ID值,在Echo Reply类型的消息中要返回这个字段。
Sequence 16位
  • 这个字段包含一个序号,同样要在Echo Reply类型的消息中要返回这个字段。

ID和Sequence 位不定。

ICMP数据

假设IP数据报A发送错误,需要进行差错报告。
ICMP的数据包括以下内容:
- A的IP数据报首部(20字节+可选)
- A携带的数据的前8字节,即TCP或UDP首部的前8字节;TCP的话,前8字节包括:源端口、目的端口、seq(序列号)。UDP的前8字节包含了:源端口、目的端口、UDP长度和校验和。

封装进IP数据报,准备发送给报告目标

应用

ping

Ping利用的就是ICMP ECHO和ICMP ECHO REPLY包来探测主机是否存在,这两个分别使用:ICMP ECHO(Type 8) 和ECHO Reply (Type 0)。发送的是udp。

traceroute

封装的是无法交付的udp,TTL设置为1 2 3 4 ...,然后接受超时的ICMP。最后达到目标主机,收到终点不可达的差错报文结束。

你可能感兴趣的:(网络基础)