前文我们讲解了ARP协议、IP协议、ICMP协议,有了这些基础,咱们再来讲解ping命令后面的原理,就简单多了。我们以一个例子来讲解,如下图所示,PC-A【10.74.97.116 /28】要去ping PC-B【10.74.97.125 /28】,看是否能ping通。A与B之间是通过网线直连,这也是把问题简单话,现实中直连的场景还是毕竟少,不过本文是讲解ping的原理,所以其他的简化,突出重点。

1 前提

在分析之前,我们先得搞清楚几点:

(1)对A而言,自己的IP地址、子网掩码、MAC地址这些信息都是已知的;

(2)对A而言,B的IP地址是知道的,A要去ping B,肯定会知道B的IP地址,要不然ping谁去;

(3)对A而言,B的子网掩码、MAC地址这些都是不知道的,没人告诉它。

对B而言,也是一样。我们只分析A发送数据给B的过程,至于B回复数据给A的过程,道理是一样的。读者理解A到B的数据发送原理后,可以自己试着分析B回复数据给A的过程。

2 路由表简单介绍

任何需要通过IP地址通信的设备,都会在本地维持这一个路由表。比如Windows可以通过命令【route print -4】查看路由表,Linux可以通过命令【ip route】查看。当一个设备的接口配置了IP地址并且接口状态是up的时候,会在本地路由表中,生成几条路由表项。

例如本例中的PC-A(Windows),给网卡配置了IP地址【10.74.97.114 /24】后,会在路由表中生成以下表项。

C:\Users\wenca>route print -4Network Destination   Netmask              Gateway       Interface      Metric
10.74.97.112          255.255.255.240      On-link       10.74.97.116   291
10.74.97.116          255.255.255.255      On-link       10.74.97.116   291
10.74.97.127          255.255.255.255      On-link       10.74.97.116   291

可以发现A中路由表多了三条表项,第一条是到此IP所在网段(子网)的路由,第二条是到此IP自己的路由,第三条是到此IP对应的网段广播地址的路由。而且三条路由的Gateway都是On-link,表示这这三条都是直连路由。也就是去往这三个目的地,直接二层封包即可,不需要先把数据包给到Gateway,让Gateway去转发。

本例中的PC-B(Linux),网卡配置了IP地址【10.74.97.125 /24】,对应的路由表如下所示。

root@wenca-dell:~$ ip route 10.74.97.112/28 dev eth0  proto kernel  scope link  src 10.74.97.116

3 原理分析

在A【ip地址为10.74.97.116 /28】的命令行下,敲入【ping 10.74.97.125】,如下所示。

C:\Users\wenca>ping 10.74.97.125

(1)A查找路由表:找去往B的路由

A根据目的IP地址【10.74.97.125】,去查找自己的路由表。发现该地址【10.74.97.125】匹配了路由表知道第一条,而是找到对应的Gateway【On-link】,表示A自己与B在同一个网段。

(2)A查找ARP表:找B的MAC地址

A发现B与自己在同一个网段,于是用B的IP地址,去找ARP表,没有找到B的IP地址对应的MAC地址。

然后A发送ARP广播请求,询问【10.74.97.125】对应的MAC地址是多少,如下图所示。

B收到此广播后回复此ARP广播,告诉A自己(B)的MAC地址多少,如下图所示。

A收到B的回复后,把B的IP地址和MAC地址映射关系写到ARP表中,方便将来的查询,如下所示。

C:\Users\wenca>arp -aInterface: 10.74.97.116 --- 0x5Internet Address      Physical Address      Type10.74.97.125          00-50-56-89-0a-1b     dynamic  

(3)A发送ICMP请求给B,B回复

上面完成后,A已经有了B的IP地址和MAC地址,发送ICMP请求包,如下图所示。

B收到此ICMP请求包以后,准备回复此ICMP请求,但是没有A的MAC,而是发送ARP广播,请求A的MAC。

A收到此ARP广播后,回复此请求,如下图所示(我的抓包过滤了A的MAC,因此不会看到B的ARP广播)。

B收到A的ARP响应报文后,知道了A的IP地址和MAC地址,于是发送ICMP响应报文,如下图所示。

至于后面的NO.6--NO.11,是因为Windwos上执行ping命令,默认会发送4此ICMP请求,如下图所示。

可以看到在后面的3此ICMP交互期间,是没有ARP包的,那是因为A和B已经知道了对方的IP和MAC,记录在各自的ARP表中。

(4)在A的命令行界面下可以看到结果如下所示。

C:\Users\wenca>ping 10.74.97.125Pinging 10.74.97.125 with 32 bytes of data:
Reply from 10.74.97.125: bytes=32 time=5ms TTL=128
Reply from 10.74.97.125: bytes=32 time=2ms TTL=128
Reply from 10.74.97.125: bytes=32 time=6ms TTL=128
Reply from 10.74.97.125: bytes=32 time=5ms TTL=128

写给非网工的CCNA教程(4)聊聊ping命令后的原理(续)相关推荐

  1. linux怎么知道ping命令,教程方法;通过ping命令查看服务器类型(linux还是windows系列)电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;通过ping命令查看服务器类型(linux还是windows系列)电脑技巧,以下是给大家带来的教程方法;通过ping命令查看服务器类型(linux还是windows系列),大家 ...

  2. 第三组 通信一班 030 网工知识点总结

    2019年软考网络工程师考点一:局域网技术   VTP协议 在VTP域中有个很重要的概念就是交换机的模式,分别是服务器模式.客户端模式.透明模式. 服务器模式的交换机可以添加.修改.删除VLAN以及V ...

  3. 对路径的访问被拒绝怎么办_学习了解ACL—扩展访问控制列表,就在网工知识角...

    学网络,就在IE-LAB 国内高端网络工程师培养基地 基于ACL过滤telnet和特定的网段信息 什么是访问控制列表(ACL)? 应用于路由器接口的指令列表,用于指定哪些数据包可以接收转发,哪些数据包 ...

  4. ipsec协议_网工知识角轻松学网络|三分钟了解PPPOE协议

    学网络,就在IE-LAB 国内高端网络工程师培养基地 PPPOE( Point-to-PointProtocol Over Ethernet)以太网上的点对点协议,是将点对点协议(PPP)封装在以太网 ...

  5. esxi管理端口_网工知识角|一分钟轻松了解华为端口安全机制

    学网络,就在IE-LAB 国内高端网络工程师培养基地 为防止MAC地址洪泛攻击,防止未经允许的设备访问网络,并增强安全性.通过端口安全机制,录连接到交换机端口的以太网MAC地址,只允许某个或者某些合法 ...

  6. 只会用ping测试网络通不通?高级网工还会这么用

    今天咱们来聊聊PING命令.作为网工应该都是耳熟能详,PING作为ICMP协议工具之一,算是一个使用率很高的命令. 它的作用: 用来检测网络的连通情况和分析网络速度 根据域名得到服务器IP 根据pin ...

  7. 交换机虚拟化和堆叠的区别_网工知识角|一分钟记熟NFV网络功能虚拟化技术介绍...

    点上方蓝字关注,每天都有新收获! 学网络,就在IE-LAB 国内高端网络工程师培养基地 NFV网络功能虚拟化(Network Functions Virtualization),是一种网络架构的概念, ...

  8. vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定

    学网络,就在IE-LAB 国内高端网络工程师培养基地 MUX VLAN(Multiplex VLAN )提供了一种通过VLAN进行网络资源控制的机制.通过MUX VLAN提供的二层流量隔离的机制可以实 ...

  9. 思科新版ccna认证网工一定要知道的PIM技术概述

    思科新版ccna认证网工一定要知道的PIM技术概述PIM(Protocol Independent Multicast)称为协议无关组播.这里的协议无关指的是与单播路由协议无关,即PIM不需要维护专门 ...

  10. 思科ccna认证工程师NETCONF协议详解网工必看

    思科ccna认证工程师NETCONF协议详解网工必看,这些年随着SDN的热潮,一个诞生了十年之久的协议再一次引起了人们的重视,它就是NETCONF协议. 网络配置协议NETCONF(Network C ...

最新文章

  1. Curve-GCN图像标注
  2. 网站设计怎样让搜索引擎对其另眼相待?
  3. (X)HTML嵌套规则
  4. Python操作MSSQL
  5. 可能拥有海洋的天然卫星 科学家近日发现有食盐成分
  6. Linux编写带缓存的程序,Video4linux2应用程序编写
  7. edius隐藏快捷键_Eduis快捷键,大家参考一下!【EDIUS】史上最全的EDIUS快捷键资料分享!...
  8. 金融时间序列及Matlab实现
  9. 计算机网络管理员基础知识,计算机网络管理员(基础知识)
  10. 全球及中国汽车空气悬架再制造行业发展动向预测与投资战略规划建议报告2022年版
  11. 增量式编码器有哪些分类?增量式编码器是如何工作的?
  12. Android Studio官方文档之添加URL和App索引支持
  13. [ML](回归和分类)
  14. uniapp——操作成功返回首页
  15. Weex Android 动画揭秘
  16. Selenium模拟浏览器访问
  17. 第28届奥运会奖牌榜
  18. pyHook pyHook3 区别_成熟男人和幼稚男区别,男人不成熟的5个特征
  19. Python的PyAutoGUI库整理中文文档,可以让所有GUI都实现自动化。
  20. 55个用于搜索引擎优化的小技巧

热门文章

  1. html静态页面如何复用,一种前端页面模板复用的方法与流程
  2. 利用C#编写一个附和闭合导线平差程序
  3. nexus本地maven仓库部署及下载
  4. Linux学习笔记(详细)
  5. LaTeX 2022 安装教程
  6. python批量获取百度贴吧_python网络爬虫案例:批量爬取百度贴吧页面数据
  7. 电脑打印机print spooler服务总是自动停止的解决方法...
  8. linux查看内存条pn,内存条,详细教您怎么查看内存条的型号。
  9. jquery-weui的学习与使用
  10. 软件测试之测试的分类