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

posted on 2011-08-22 23:31  pofante  阅读(144)  评论(0)    收藏  举报