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

首先明白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.关闭线程关闭套接字

猜你喜欢

转载自blog.csdn.net/qqqingyi/article/details/123188967