分享

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

 回家的梦想 2019-12-30

01 计算机网络体系结构中的ping

ping是Windows、Unix、Linux等操作系统提供的一个常用的网络管理命令,用于检查网络的连通性,帮助分析和判定网络故障。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

一个ping的请求和响应,串联起多个网络协议,可能途经了多个主机和路由器

ping在计算机网络体系结构中归属应用层,越过运输层直接使用IP层的ICMP协议,发送“回送请求”报文给目标主机,接收目标主机返回的“回送回答”报文并显示在源主机上。

ping是把网络协议应用到日常网络管理的典型实例。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

计算机网络的体系结构

02 ping的执行流程

ping命令的执行流程见下图。

正常执行流程可以简要描述为:ping命令接收一个IP地址或一个网络域名,如果是域名会将域名转换为IP地址。

判断被ping的目标主机和源主机是否在一个网络上,如果不在一个网络上,则查找路由表,找到通往目标网络的路由器IP地址或默认网关IP地址。

查找本地主机ARP表中是否有该IP对应的MAC地址;如果没有,则通过广播询问该IP的MAC地址;本网络中的主机、路由器都会接收到该询问报文。

拥有该IP地址的本地设备回复应答报文,将该IP对应的MAC地址发给源主机。

为了减少本地广播,本地主机、三层路由器或路由器会适时更新自己的本地ARP表,保存本地IP地址和MAC地址的对应关系。

知道了下一步报文要发往的MAC地址,ping命令使用ICMP协议封装含有对端MAC地址的IP数据报交给交换机,交换机查找自己的MAC与port端口对应表,将数据包传给对应端口的主机。

下面的流程只画了本机流程,交换机和路由器的流程没有画出,源主机信息发送到交换机之后,交换机和路由器根据IP数据报相关信息再一步一步的向前查找目标主机,源主机只需要等待回送回答报文。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

ping命令的执行流程图

03 ping命令涉及的网络协议

ping是ICMP网际控制报文协议的一个重要应用,因此ping涉及的最重要的一个协议是ICMP。

在ping执行过程中会触发一系列动作,会附带调用其他一些协议功能,完成源主机和目标主机的请求和应答。

DNS:域名系统(Domain Name System),TCP/IP协议中应用层协议,用于解析域名和IP地址。

ICMP:网际控制报文协议(Internet Control Message Protocol)。用于在IP主机、路由器之间传递控制信息。

例如检测网络连通性、主机的可达性。不传输用户数据,只传输控制信息。ICMP的数据要封装在IP数据报中进行传输。

IGMP:网际组管理协议(Internet Group Management Protocol),该协议运行在主机和组播路由器之间。

组播和广播的区别很简单,组播是通知部分人知道的传播形式,而广播是通知到所有人。

IP:网际协议或互联网协议(Internet Protocol)。IP协议位于TCP/IP协议的网络层,ICMP、IGMP及以上层级的报文都要经过IP协议转换封包成IP数据包向下传送。

ARP :地址解析协议(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

04 ping 抓包准备

家用无线路由器两台,R1和R2。用于组建简单的网络供测试使用。

电脑主机两台A和B,通过抓取主机网络接口卡上进进出出的数据,了解网络协议和网络行为。

下载网络抓包软件,安装在两台电脑主机上。例如Wireshark,是一个免费的开源工具,本次测试使用该工具。

05 局域网ping主机时抓包及分析

将无线路由器降级为交换机使用,通过无线路由器的LAN接口连接两台电脑主机,系统连接和IP设置如下图所示。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

简单的局域网环境

主机A和主机B正常开启,允许ICMP协议分组通过。B ping A 的截图如下。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

ping目标主机时抓取的网络数据包

分析上图的执行时序发现,ping动作完成之后,两台主机又互相确认了一下各自的IP地址和MAC地址,再次确认各自ARP表中数据的正确性。

这种询问和广播的频率需要确定一个合适的值,确保数据不过时又不会特别频繁。

删掉主机B的ARP缓存数据,再进行正常的ping操作。从下图执行时序可以看出,主机B的ARP缓存中没有主机A的IP地址对应的MAC地址记录,主机B需要先ARP广播,查询到主机A的MAC地址。

得到主机A的MAC地址后,B主机再发ICMP报文给A主机并等待回复报文。

C>arp –d 该命令用于删除ARP缓存数据

C>ping 192.168.1.122

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

删除ARP缓存数据后,再抓包,出现了ARP协议,广播查询MAC地址

执行过一次后ARP表建立起来了,再ping时直接就ICMP了。最后互相再确认一下彼此的地址,保证自己的ARP表正确。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

ARP缓存数据建立后,再抓包发现不需要首先请求MAC地址了

主机A和主机B正常开启,允许ICMP协议包。A ping B 的截图如下。可见,正常ping通后,A和B又互相确认了一下对方的MAC地址。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

为了保证本地ARP缓存准确,ARP还是经常要询问和应答IP和MAC的对应关系的啊

主机A开启,主机B关闭。A ping B:即192.168.1.120 ping 192.168.1.122

此时必然ping不通,返回请求超时,无法访问目标主机的错误报文。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

ping已经关闭的本地主机,当然ping不通,请求超时

ping的同时,在主机A的网络接口处开始抓包,由于网络数据太多,下图筛选出ARP和ICMP协议,对照查看时可以通过Time字段或No字段的值确定网络数包出现先后顺序。

可猜测:主机A直接给B发ICMP数据包,没有收到回复信息;之后A给B发ARP地址解析请求,询问B的MAC地址;多次询问没有返回应答报文后,B发广播信息查询对应MAC地址。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

给对应主机发ARP地址解析请求,一直得不到响应,改为广播发送信息

主机A和主机B正常开启,A通过防火墙设置禁止ICMP分组通过。B ping A 的截图如下。请求超时,ping不通。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

设置ICMP过滤后,ping对应的主机,返回请求超时的错误

ping的同时,抓包主机B的网卡数据,发现:ping不通之后询问A的MAC地址,A能回答自己的MAC地址,回答后继续ping,因为A过滤了ICMP分组,还是PING不通。

猜测,主机B禁止ICMP分组通过,但可能ARP协议还是可以执行的。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

设置了ICMP过滤的主机,好像还能响应ARP请求

06 跨网段抓包及分析

两台无线路由器及电脑的连接、IP设置如下图。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

搭建跨网段的环境

跨网段ping目标主机。主机A 192.168.2.100 ping 主机B 192.168.1.110, 两台主机正常开机,允许ICMP分组通过。

通过查看,可以了解ping的过程中执行了哪些网络协议。可以对应去学习和了解这些协议的原理和用法。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

跨网段ping目标主机时,抓取的网络数据包

07 ping公网域名,抓包网络数据

主机A 192.168.2.100 ping 新浪主页sina.com.cn ,见下图。首先DNS进行域名解析,得到其IP地址,再选择合适的路由或者网关将ping的数据包发出去。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

ping公网域名时,报文中出现了域名解析DNS的请求报文

08几个重要概念

主机中的ARP表

缓存IP地址和MAC地址的对应关系。通过网络协议自动维护。

也可以使用arp命令显示ARP表的内容,可以删除ARP的表项,可以增加对应关系到表中。arp –help可以查看arp命令的详细用法。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

arp命令的帮助信息

主机中的路由表

路由表在系统运行中由网络选择协议自动维护,也可以通过route命令查看、添加、修改、删除路由信息。

路由分静态路由和动态路由两种。路由表项由6个字段组成。

destination:目的地址,用来标识IP包的目的地址或者目的网络。

mask:子网掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。

pre:优先级。到达一个目的地可能有多条路径,优先使用优先级高的路径。

cost:路由开销,有多个路径可以到达目的地,标识每条路径的开销,开销最小的是最优路径。

interface:输出接口,说明IP包走该该路径时,从该路由器这个网络接口转发。

nexthop:下一跳的IP地址,说明IP包所经过的下一个路由器。

route –help 可以查看route命令的详细用法。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

route命令的帮助信息

交换机中的ARP表

二层交换机中只有MAC-PORT对应关系表;三层交换机具有路由功能,使用ARP表记录IP、MAC和port的对应关系。网络协议可以自动维护该对应关系表。

交换机中的 MAC表

二层交换机使用MAC-PORT对应关系表,记录MAC地址、端口号、VLAN 号。网络协议可以自动维护该对应表。

路由器中的路由表

每个路由器中都有一个路由表和FIB(Forward Information Base)表,路由表用来决策路由,FIB用来转发分组。

路由器中的路由表和主机中的路由表相似。

FIB表指定分组到哪个路由器的哪个物理接口发送;或者不再经过其他路由器,直接传送到直接相连的网络中的目的主机。

09抓包软件的简单介绍

Wireshark是一个免费的网络封包分析软件。计算机网络协议学习起来很抽象,看不见摸不着。

Wireshark可以抓包网络数据,按照时间顺序直观、具体的呈现出网络行为,对于学习计算机网络和网络协议很有帮助。

抓包可以看到一系列的网络协议,直观感受网络协议的存在,可以根据网络协议的出现频率,有选择性的优先理解和学习相关协议。

wireshark功能很丰富,可以选择捕获接口,可以使用捕获过滤器,可以使用显示过滤器。具体内容可以查阅相关文档。

下图是wireshark开始界面,主要用来选择捕获哪个接口的网络数据。一台计算机可能有有线网卡、无线网卡;实体网卡、虚拟网卡等等。

在此处指定网络接口,wireshark将得到该网络接口卡的所有进进出出的数据。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

wireshark的主界面,选择要抓包哪个网络接口的进进出出的数据

下图中有开始按钮、停止按钮。通过网络接口卡的数据很多,在该界面中最重要的是要使用“应用显示过滤器”,选择自己感兴趣的内容。

ping,触发一连串动作,抓包数据,直观了解网络协议和流程

执行抓包的界面,可以启动、停止抓包;可以使用抓包过滤器和显示过滤器

10遗憾

主要关注了流程,数据包里面具体信息没有展开描述,具体数据包中的各种标志位、控制信息、数据信息等等才能完整准备的描述对应协议。

没有条件抓取交换机和路由器上的数据包,条件具备后再做完整的测试进行补充。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多