ICMP是消息控制协议,也处于网络层.在网络上传递IP数据包时,如果发生了错误,那么就会用ICMP协议来报告错误.
ICMP包的结构如下:
| 0.......8........16..............32 ------------------------------------ |类型....|代码....|校验和..........| ------------------------------------ |数据.............|数据............| ------------------------------------ |
ICMP在中的定义是
struct icmphdr
{
u_int8_t type; /* message type */
u_int8_t code; /* type sub-code */
u_int16_t checksum;
union
{
struct
{
u_int16_t id;
u_int16_t sequence;
} echo; /* echo datagram */
u_int32_t gateway; /* gateway address */
struct
{
u_int16_t __unused;
u_int16_t mtu;
} frag; /* path mtu discovery */
} un;
};
关于ICMP 的“类型”和“代码”字段,这里有一个表,如图1-16:
关于ICMP协议的详细情况可以查看 RFC792
浙公网安备 33010602011771号