当前位置:网站首页>ping 原理
ping 原理
2022-07-29 05:26:00 【Flytiger1220】
最近看了好多面试的题目,其中也被问到了关于ping的问题以及一些原理性的东西,于是拜读了很多人的博客,最后也是豁然开朗,决定总结一下,也是为了防止遗忘吧。
要想理解ping的原理,我们首先来看一下ARP的报文格式
其中op:
1:表示arp请求
2:表示arp应答
3:表示rarp请求
4:表示rarp应答
接下来,我们来看一个同一广播域内的ping报文:
我们的host2想要去ping host1,那么主机1就要封装二层报文,首先host2会查看自己的MAC地址表,看有没有host1的地址,如果没有,host2就会向外部发送ARP广播包
ARP帧报文格式如下:(省略了arp报文的硬件类型,上层协议类型,MAC地址长度,IP地址长度)
目的MAC | 源MAC | 帧类型 | op | 发送者MAC | 发送者IP | 目标MAC | 目标IP |
---|---|---|---|---|---|---|---|
FF-FF-FF-FF-FF-FF | 52-54-00-00-11-22 | 0806 | 1 | 52-54-00-00-11-22 | 192.168.1.2 | 00-00-00-00-00-00 | 192.168.1.1 |
首先,我们的交换机接收到报文以后,会查询交换机的MAC地址表(具有学习功能),如果有host1的MAC地址,直接返回给host2;如果没有,交换机就会向所有端口发送ARP广播,其他端口上的主机发现以后,如果目标不是自己,就会丢弃报文;直到host1主机接收到了报文以后,就会响应host1的MAC地址是多少,同时学习主机host2的MAC地址,并按照同样格式的ARP报文返回给host2.
host1返回的ARP帧报文:
目的MAC | 源MAC | 帧类型 | op | 发送者MAC | 发送者IP | 目标MAC | 目标IP |
---|---|---|---|---|---|---|---|
52-54-00-00-11-22 | 52-54-00-00-11-11 | 0806 | 2 | 52-54-00-00-11-11 | 192.168.1.1 | 52-54-00-00-11-22 | 192.168.1.2 |
这个时候,主机host2已经学习到了host1的MAC地址,于是发送icmp报文
目的地址 | 源地址 | … | 源IP | 目标IP | … | ICMP报文 |
---|---|---|---|---|---|---|
52-54-00-00-11-11 | 52-54-00-00-11-22 | 192.168.1.2 | 192.168.1.1 | Echo Request |
host1收到报文之后,会复
目的地址 | 源地址 | … | 源IP | 目标IP | … | ICMP报文 |
---|---|---|---|---|---|---|
52-54-00-00-11-22 | 52-54-00-00-11-11 | 192.168.1.1 | 192.168.1.2 | Echo Answer |
接下来,我们来看一看不同广播域之间的ping
首先要确保全网可达!!!
如果我们的host2 还想ping主机,host2得先去找网关转发,但是如果说,它也不知道网关的情况下怎么办呢?它就会像ping host1那样,先发送ARP报文,确定网关的mac 然后发送icmp报文交给路由器。
我们省略arp报文
host2发送ICMP报文至网关
目的地址 | 源地址 | … | 源IP | 目标IP | … | ICMP报文 |
---|---|---|---|---|---|---|
52-54-00-00-11-33 | 52-54-00-00-11-22 | 192.168.1.2 | 192.168.2.1 | Echo Request |
当路由器接收到来自host2的icmp报文之后,发现目的地址的IP为192.168.2.1,查询路由发现,得找一个出去的接口,于是去掉原来的mac地址头,加上自己的mac地址头并且向host3转发,(如果网关也没有host3的mac,也得发送ARP报文问询,并且路由器的端口也能学习主机的mac地址,主机host3也能学习路由器的MAC地址),具体报文如下:
目的地址 | 源地址 | … | 源IP | 目标IP | … | ICMP报文 |
---|---|---|---|---|---|---|
52-54-00-00-11-55 | 52-54-00-00-11-44 | 192.168.1.2 | 192.168.2.1 | Echo Request |
主机host3已经学到了路由器的mac,这会就会返回icmp报文
目的地址 | 源地址 | … | 源IP | 目标IP | … | ICMP报文 |
---|---|---|---|---|---|---|
52-54-00-00-11-44 | 52-54-00-00-11-55 | 192.168.2.1 | 192.168.1.2 | Echo Answer |
边栏推荐
- Raw advanced socket experiment
- Ultra low cost DDoS attacks are coming. See how WAF protects Jedi
- day12_ Multithreading
- Design and simulation code of 4-bit subtracter based on FPGA
- What is the lifecycle of automated testing?
- Vivado IP核之复数浮点数乘法 Floating-point
- Floating point addition and subtraction method of vivado IP core floating point
- IPv6表示方法与配置案例
- MQTT服务器搭建以及使用MQTT.fx测试
- LVM逻辑卷组的管理
猜你喜欢
【面试题】2022年最新软件测试面试题(400道)【附带答案】持续更新...
On defect description style
Floating point multiplication and division of vivado IP core floating point
3、 Wide area communication network
Circular linked list and bidirectional linked list
Sequence list and linked list
如何在开发板上使用sftp命令访问sftp-server
VMware虚拟机在物理机win10系统下如何连接外网
2022年的软件测试的岗位要求为何越来越高?这其中有什么不可告人的秘密吗?
通过os-shell引发的mysql拿shell的思考
随机推荐
Rowkey design
Merkle tree existential function modified for the first time
Scanbasepackages scanning range configuration
day03_ 1_ Process control
Ultra low cost DDoS attacks are coming. See how WAF protects Jedi
软件包设置成——>YUM源
用神经网络实现手写数字识别
FIR滤波器设计(2)——Vivado调用IP核设计FIR滤波器
一文看懂网络安全五年之巨变
FPGA - odd even frequency division and decimal frequency division code routine
VMware虚拟机在物理机win10系统下如何连接外网
比较单片机3种时钟电路方案
Ram block memory generator of vivado IP core
What is WAF protection
基于FPGA的IIR型滤波器设计
非常实用的 Shell 和 shellcheck
通过os-shell引发的mysql拿shell的思考
网站被挂马的解决方案
day06_类与对象
Conversion of fixed-point number to floating-point number of vivado IP core