当前位置:网站首页>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 |
边栏推荐
- Hongke shares | why EtherCAT is the best solution to improve the performance of the control system?
- 六、 网络互联与互联网
- 成长为架构师途中的一些思考
- Hongke will share the EtherCAT demo for you and teach you how to quickly transition from other protocols to EtherCAT industrial bus
- 如何画出优秀的架构图
- vmstat 内存消耗查询
- On defect description style
- centos 部署postgresql 13
- day15_泛型
- Leetcode刷题记录
猜你喜欢

VMware虚拟机在物理机win10系统下如何连接外网

成长为架构师途中的一些思考

day10_异常处理&枚举

Hongke will share the EtherCAT demo for you and teach you how to quickly transition from other protocols to EtherCAT industrial bus

day14_单元测试&日期常用类&字符串常用类

Hongke shares | why EtherCAT is the best solution to improve the performance of the control system?

MQTT服务器搭建以及使用MQTT.fx测试

Software testing career development: where should software testers go

Circular linked list and bidirectional linked list

day10_ Exception handling & enumeration
随机推荐
day12_ Multithreading
成长为架构师途中的一些思考
【面试题】2022年最新软件测试面试题(400道)【附带答案】持续更新...
服务器常见故障及其解决方法
Design and simulation code of 4-bit subtracter based on FPGA
APP受到的那些漏洞攻击
Sequence list and linked list
Floating point multiplication and division of vivado IP core floating point
Raw advanced socket experiment
day06_类与对象
Hongke automation SoftPLC | modk operation environment and construction steps (1) -- Introduction to operation environment
FIR filter design (2) -- vivado calls IP core to design FIR filter
On defect description style
Hongke | uses jesd204 serial interface to bridge analog and digital worlds at high speed
waf防护是什么
Ansible(自动化软件)
Traffic characteristics of webshell management tools
Verilog中for语句的使用
Huawei switch ce12808 import and export configuration file
网络安全学习(一)