当前位置:网站首页>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 |
边栏推荐
猜你喜欢

FIR滤波器设计(1)——利用matlab的fdatool工具箱设计FIR滤波器参数

Design of IIR filter based on FPGA

day12_ Multithreading

Conversion of fixed-point number to floating-point number of vivado IP core

Why are the job requirements for software testing in 2022 getting higher and higher? Is there any secret in it?

apisix健康检查测试

2022年的软件测试的岗位要求为何越来越高?这其中有什么不可告人的秘密吗?

Hongke solution | a unique solution to realize seamless integration at low cost in Digital Substations

TCP based online dictionary

day14_ Unit test & Date common class & String common class
随机推荐
FIR滤波器设计(1)——利用matlab的fdatool工具箱设计FIR滤波器参数
greenplum企业部署
Understand the great changes of network security in five years
Hongke automation SoftPLC | Hongke kPa modk operation environment and construction steps (2) -- modk operation environment construction
VMware虚拟机在物理机win10系统下如何连接外网
On defect description style
Hongke education you want to enter the field of TSN? Hongke teaches you how to build TSN test system
注解(Annotation)
浅谈缺陷描写样式
Idea practical shortcut key novice must see
Plugin location in mavan
三、广域通信网
What is WAF protection
How to pre circumvent the vulnerabilities of unsafe third-party components?
Advanced socket programming (options and control information)
NoClassDefFoundError processing
Joint use skills of joiner.on and stream().Map
day03_1_流程控制
IGMP protocol software development experiment
day17_ Under collection