ping包原理的解析(可能不准确)

本文详细阐述了ping命令的工作原理,涉及ICMP协议的使用、ARP广播获取MAC地址、ICMP报头设置、双线程编程实现及数据包接收和解析的过程。适合理解网络通信机制的读者。

首先明白ping是通过网络层的 ICMP协议发送数据包至对方主机并且对方回包才能ping通的 首先发送ICMP前 我们并不知道对方主机的网卡地址(MAC)我们需要用ARP广播通过路由得到对方的MAC然后再传递ICMP
传递的ICMP报头包括IP报头

代码步骤如下
1.创建原始套接字用来发送ICMP
2.创建双线程分别为发送ICMP以及接受ICMP
3.发送ICMP前要设置报头内容以及校验码
在这里插入图片描述
ICMP_ECHO = 8是发送请求的类型
在这里插入图片描述
计算校验码
4.接受对方的ICMP包利用select或者epoll来获取描述符数量
5.若描述符数量大于0则用recv函数接收数据包
6.解包判断是否为ICMP包
在这里插入图片描述
7.关闭线程关闭套接字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值