ICMP协议

ICMP协议详解
本文介绍了ICMP协议的功能及其在IP协议中的作用,并详细解析了ICMP查询消息的格式与C语言实现方式,最后通过ping命令展示了ICMP的实际应用。

1ICMP协议:ICMP协议提供了错误报告消息查询两种功能,对IP协议进行补充

2、查询消息:每个查询消息类型均包括对请求和应答消息。

                           类型值                       消息

                           8或0                   回应(echo)请求和应答

                          ... ....

3、ICMP 查询请求和应答消息格式:

     8bit                   |            8bit              |           16bit

---------------------------------------------------------------------------------

 type : 8/0             |        code :0          |         checksum

----------------------------------------------------------------------------------

                                id                            |          sequece

-----------------------------------------------------------------------------------

  任何数据(data)发送方发送的数据,应答消息将复制此数据

-----------------------------------------------------------------------------------


4C语言结构体定义的ICMP消息的头部:

     struct icmphdr{
            u8     type;     //消息类型<<<8
请求/0应答
            u8     code;    //消息代码,不使用 0
            u16  checksum;//校验和
            union{
                       struct {
                               u16 id;
                               u16 sequence;
                       } echo;
                       u32 gateway;
                       struct{
                               u16 unused;
                               u16 mtu;
                       } frag;
              }un;
              u8 data[0];
     } ;//用union定义的后32 bit 根据不同ICMP消息类型有所不同
       //ICMP查询消息的头4 个字节都是标准的

5、ping:创建ICMP查询请求消息>>>发送ICMP查询请求消息>>>接收ICMP查询请求应答>>>解析ICMP消息


6、sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP)

//SOCK_RAW(IP协议的数据报接口):套接字提供了一个直接访问网络层(IP)的数据报接口。使用这个接口时,应用程序负责自己构造自己的协议首部,这是因为传输协议(TCP/UDP协议)被绕过去了。需要root权限。

//IPPROTO_ICMP:指定特定的协议,即ICMP



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值