PING过程之步步为营

简介:

配置好路由器Route和pc0、pc1的IP地址以及网关



这个过程可以具体分为四个阶段:
一、pc0到Router阶段


1、ping进程将调用因特网控制报文协议(ICMP),ICMP创建一个回应请求数据包;
2、ICMP将这个有效负荷交给因特网协议(IP),然后IP协议会创建一个数据包。
   这时,这个数据包将包含源IP地址、目的IP地址和值为0x01的协议字段。
3、一旦数据包被创建,IP协议将判断目的IP地址是处于本地网络中,还是处于一个远程网络中;
4、由于IP协议断定这是一个远程请求,这个数据包需要被发送到默认网关,这样, 这个数据包才能路由到远程网络。本机注册表将被使用,以查找配的默认网关;
 5、主机pc0的默认网关被配置为172.16.0.1 要能够发送这个数据包到默认网关,必须要知道路由器的FastEthernet0/0接口(其IP地址被配置为172.16.0.1)的硬件地址,因为只有这样,数据包才可以被下传给数据链路层并生成数据帧,然后发送到与172.16.1.0网络连接的路由器接口;
    【注:】在本地局域网内,主机只可以通过硬件地址来进行通信,pc0要想和pc1通信,它必须将数据包发送到本地网络中默认网关的mac地址上,这一点很重要。mac地址永远都应用于本地局域网,而绝不会通过路由器。
6、接着,pc0检查arp缓存,查看一个默认网关的IP地址是否已经解析为硬件地址,
     如果已经被解析,数据包就将被释放、传送到数据链路层并生成数据帧(目的方的硬件地址也将通数据包一同下传至数据链路层),要查看pc0主机上的arp缓存,可以使用下列命令:
                  PC>arp -a
                  Internet Address      Physical Address      Type
                  172.16.0.1            0004.9ade.a201      dynamic

      如果这个硬件地址在pc0主机的arp缓存中尚未被解析,一个arp广播将被发送到本地网络,以搜索172.16.0.1的硬件地址,路由器会响应这个请求并提供FastEthernet0/0的硬件地址,接着pc0主机将缓存这个地址; 


7、一旦这个数据包和目的方的硬件地址被交付给数据链路层,局域网驱动器将用来提供媒体访问以通过以太网,此时将会产生一个数据帧,使用控制信息来封转此数据包。在这个帧中包含有目的方和源方的mac地址,以及以太网类型字段。在本例中,这个协议为IP协议。在这个帧的结尾处是被称为帧校验序列(FCS)的字段,它是装载循冗余校验(CRC)计算值的区域。此数据帧还需要查询一些信息,即pc0的mac地址,以及作为目的方的默认网关的mac地址,但这里并不包括pc1主机的mac地址;

8、数据帧完成封装以后,就会被交付到物理层,以一次一位的方式发送往物理媒体(在试验中是双绞线对);
9、在冲突域中的每台设备将接收这些位并重建为帧。它们都运行CRC并核对保存在FCS字段中的内容,如果这 两个值不匹配,此帧将会被丢弃。
     如果这个CRC值相吻合,那么就核查目的方的mac地址,如果匹配,那么路由器将将查看以太网类型字段,以了解在网络层使用的协议;
10、数据包从数据帧中抽出,然后这个数据帧剩下的部分被丢弃,再把数据包传给以太网类型字段中列出的上层协议,在这里是传给IP协议;
11、IP会接受这个数据包,并检查其目的IP地址,由于数据包的目的地址与接收路由器所配置的任一地址不相匹配,路由器将会在路由表中查看目的IP网络的地址;
12、此路由表中必须包含有网络172.16.1.0的表项,否则此数据包会被立即丢弃,然后一个携带有“destination network unavailable”信息的ICMP包将被发送回发送方pc0;
13、如果路由器找到目的方的网络,数据包将被交换到输出接口,由于在被试验中所有网络都是直连的,因此没有必要使用主动路由协议;
二、Router到pc1阶段
 

14、路由器将交换此数据包到FastEthernet0/1的缓冲区内;
 15、FastEthernet0/1的缓冲区需要了解目的方主机的mac地址,它首先检查arp缓存,
    如果pc1的mac地址已经被解析并保存在路由器的arp缓存中,则这个数据包和mac地址将被传递到数据链路层并组成数据帧。下面是路由器的arp缓存:
              
     Router#show arp
     Protocol  Address           Age (min)  Hardware Addr   Type   Interface
     Internet  172.16.0.1              -   0004.9ADE.A201  ARPA   FastEthernet0/0
     Internet  172.16.0.2              35  0001.63BC.C8A7  ARPA   FastEthernet0/0
     Internet  172.16.1.1              -   0004.9ADE.A202  ARPA   FastEthernet0/1
     Internet  172.16.1.2              35  000C.8513.CAAB  ARPA   FastEthernet0/1
          
如果这个硬件地址尚未被解析,路由器将从FastEthernet0/1发送一个arp广播到请求,以查找 172.16.1.2的硬件地址,pc1会响应这个请求并提供硬件地址,接着路由器将缓存这个地址;然后这个包和硬件地址都会被发送到数据链路层并组成数据帧;
 16、数据链路层将使用这个目的方的源方的mac地址,以及以太网的类型字段和FCS来创建一个数据帧,这个帧将被
 17、pc1主机会接收到此帧,并立即运行CRC,如果运算结果与FCS字段的内容相匹配,这个目的mac地址将被检查,如果发现是匹配的,随后将检查以太网类型字段中的值,以判断应该将数据包上传给网络层的什么位置;
18、在网络层,IP会接收这个数据包,并检查其目的方的IP地址,由于他们是匹配的,数据包的协议字段将会被检查,以了解有效负荷应该交给谁;
  
   三、pc1到Router阶段
 

  
 19、此有效负荷会交给ICMP,它将知道这是一个回应请求,ICMP会应答这个请求,通过即可丢掉这个数据包并随之产生一个新的有效负荷来作为回应应答;
 20、随后创建的数据包中将包含源方和目的方的地址、协议字段和有效负荷。现在,目的方设备为pc0;
 21、IP协议将判断目的IP地址是处于本地网络中,还是处于一个远程网络中,由于IP协议断定这是一个远程请求,这个数据包需要被发送到默认网关,这样,这个数据包才能路由到远程网络。本机注册表将被使用,以查找配的默认网关;
 22、在pc1的注册表中可以找到默认网关的IP地址,之后将查看arp缓存,以了解是否已经完成了从IP地址到mac地址的解析;
  23、一旦默认网关的mac地址找到,此数据包和目的方的mac地址都将被送往数据链路层,以完成数据帧的封转;
 24、数据链路层会封装数据包的内容,并在帧报头中包含以下内容:
    目的方和源方的mac地址         在以太网类型字段中填充0x0800(IP)    将CRC结果填入FCS字段
 25、这时,帧将会被传给物理层,并以一次一位的方式发送到网络媒体上;
26、路由器的FastEthernet0/1接口会接收到这些位并重建为一个帧,CRC校验被运行,帧的FCS字段被检验,以确认 两个结果是相符的;
 27、CRC检验通过之后,目的mac地址将被检查。由于路由器的接口同这个地址是想匹配的,数据包将被从这个帧中取出, 然后以太网类型字段将被检查,以了解数据包应该投递给网络层上的哪一个协议;
28、由于协议被判断为IP。于是IP将得到这个数据包,首先IP将对IP报头运行CRC校验,然后检查目的方的IP地址;
 29、在这种情况下,路由器确实知道到达172.16.0.0的方式,这一输出的接口是FastEthernet0/0,于是数据包将交换到接口FastEthernet0/0上;
 
  四、Rouetr到pc0阶段


 
30、路由器检查arp缓存,确定172.16.0.2的mac地址是否已经被解析;
31、由于在将数据包传送到pc1的过程中,172.16.0.2的mac地址已经被缓存起来,因此,这一mac地址和数据包将被传递到数据链路层;
32、数据链路层会使用这个目的方的mac地址和源mac地址,然后将IP放入以太网类
33、这个帧然后被传送到物理层,以一次一位的方式发送到本地网络;
34、pc0将接收这个帧,运行CRC算法,检查目的方的mac地址,并查看以太网类型字段中的内容,以判断谁来处理这个帧;
35、由于IP是被指定的接收者,随后这个数据包被传递给网络层的IP协议,它将检查包的协议字段,以确定进一步的操作,IP发现要将此有此有限负荷交给ICMP的指示,接着ICMP将确定此数据包是一个ICMP的应答回复包;
36、ICMP通过发送一个感叹号(!)到用户接口来表明它已经接收到一个回复,在命令提示行下表现为收到报文,这之后,ICMP会尝试继续发送4个应答请求到pc1。

 










本文转自 linuxtro 51CTO博客,原文链接:http://blog.51cto.com/linuxtro/321393,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
网络协议 Linux 应用服务中间件
数据包的奇妙旅程:揭秘网络传输的7个关键步骤
在发送数据包的过程中,不同层次的网络协议扮演着不同的角色。数据包在经过多层封装后,通过网络设备和路由器进行转发,并最终到达目标设备。在每个层次中,都会进行相应的处理和解封装,以确保数据包能够正确传输和被接收端处理。整个过程涉及到了物理层、数据链路层、网络层、传输层和应用层等多个层次的协议和设备。尽管在简化的示例中,发送数据包的过程相对简单,但实际情况中会更加复杂,需要通过路由表选择最佳路径来保证数据包的快速、高效传输。整个过程展示了网络分层结构的重要性和协同工作的复杂性。
127 0
数据包的奇妙旅程:揭秘网络传输的7个关键步骤
|
6月前
|
域名解析 网络协议 网络安全
网络 | 排错五大步骤,没有解决不了的网络故障准达信息准达信息
网络 | 排错五大步骤,没有解决不了的网络故障准达信息准达信息
39 0
|
6月前
|
网络协议 网络虚拟化
【每日一记】OSPF邻居无法建立的排错思路
【每日一记】OSPF邻居无法建立的排错思路
54 1
|
8月前
|
网络协议 应用服务中间件 Linux
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
115 0
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
|
缓存 网络协议 Unix
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
|
域名解析 缓存 网络协议
探究!一个数据包在网络中的心路历程
想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题。 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个问题。 这次,小林我带大家一起探究下,一个数据包在网络中的心路历程。
探究!一个数据包在网络中的心路历程
|
运维 小程序 网络协议
技术干货 | mPaaS 客户端问题排查:漫长的 3s 等待之谜
对于开发者来说,排查手段已经不再局限于构建代码过程中的调试,往往需要扩充排查方法,从多种途径对问题进行分析和定位。这篇文章会和大家分享 mPaaS 开发者的一例小程序网络性能问题排查之旅。
911 0
技术干货 | mPaaS 客户端问题排查:漫长的 3s 等待之谜