解析网络协议中环回接口等问题


网络协议的数据链路层的一些重点我们来讲解一下。这此我们主要讲解的是环回接口的问题。环回接口loopback):路由器上的一个逻辑、虚拟接口.路由器默认没有任何环回接口.此接口允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信.一般系统把127.0.0.1分配给这个接口,并命名为localhost.一个传回给环回接口的IP数据报不能在任何网络上出现.

下面是环回接口处理IP数据报的简单过程:

环回接口处理IP数据报的简单过程

图中需要指出的关键点是:

1)传给环回地址127.0.0.1)的任何数据均作为IP输入.

2)传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上.这是因为广播传送和多播传送的定义包含主机本身.

3)任何传给该主机IP地址的数据均送到环回接口.

虽然书中对此进行了一些简单介绍,但我觉得介绍的还比较少,因此我又查阅了一些其它资料,我觉得下面的说明对于理解这个概念可能更有帮助注:原文).

一、环回接口

为了标识和管理网络设备如路由器、pc),我们通常会利用到这些设备的接口包括物理接口和逻辑接口:如vlan)上设置的IP地址.但很多情况下,尽管该设备未脱离网络,由于其管理地址所处的接口状态处于down,该设备便无法管理因为物理连接断开,接口网络协议起不来).为了解决这一问题,于是便出现了loopback接口,该接口为设备上一个逻辑接口,接口状态不受物理端口up/down的影响,只要设备的系统网络协议不出问题,该接口就不会down掉.顺便补充一下,尽管3层vlan亦是逻辑接口,但通常我们使用的vlan都是居于端口的,而且核心层交换机vlan一般只关联一个端口,当端口状态处于down时vlan接口是无法up起来的.

由此可见loopback接口的地址无疑是标示物理设备本身的最佳选择,因为只要设备运行正常,它将永处于up状态.

二、环回地址及环回路由

loopback地址即是loopback接口上设置的地址,该地址用于标示设备本身.A类地址段127.0.0.0被用作本地环回地址,一般设备都默认采用127.0.0.1,当然也可在loopback接口上设置公网IP,作为全网的设备标识.

当设备给其自身发数据包时,是把该数据包送往其loopback接口其实是直接送给cpu处理).但如果目的IP不是其loopback地址,它如何得知数据包的目的地址就是它自己的IP地址呢呢?此时就需要环回路由来识别了.一般pc网卡上的IP及一些低端网络设备的管理IP都默认指向其环回接口,但很多高端设备都需要手动设置环回路由.例如一台路由器的其中一个接口地址为61.175.201.54,则环回路由应该设置为61.175.201.54/32 127.0.0.1,以表示该地址就在自身接口上.

三、应用举例

就拿pc来说,pc的网卡就相当于路由器的一个接口.如一台pc网卡上设置的地址为220.172.115.50,网卡连接正常时,网络协议状态up,在dos命令行状态下输入ipconfig便可看到该网卡上的IP地址.此时在主机上ping其网卡地址的过程如下:主机发送一个icmp包,目的地址为220.172.115.50,请求对方回答;主机根据默认环回主机路由发现数据包目的地址的下一跳指向其loopback接口主机事先并不知道该地址就在其网卡上),于是将数据包发往其loopback接口即直接发往cpu);之后主机收到源IP为220.172.114.50的ping包,于是对该数据包进行回答,回应包亦根据环回路由原路返回.从该过程可看出,该数据包的始发点和被接收点都在同一个接口即主机本身的loopback接口),寻址过程为一个环回过程,因此该接口称之为"环回接口".当网卡连接断开时,网络协议down下,用ipconfig便发现"media disconnected"等提示,无IP地址显示.ping 220.172.115.50便出现"destination unreachable"等提示由于网卡协议没起来,主机没能发现相应路由,无法做出转发决定,从而提示路由不可达).但此时ping 127.0.0.0/8网段的IP均能ping通,因为一般pc默认把127.0.0.0/8网段IP作为loopback地址,当主机发现该数据包的目的地址为其自身的环回地址时,便将该数据包直接送往其cpu.由此可看出ping通环回地址并不表示就能ping通网卡地址,因此不要拿ping 127.0.0.1来检测网卡的好坏,这样做是行不通的.

下面我们来看看关于路由器的例子.如routerA的接口s0/1与routerB的接口s0/2直接相连,routerA s0/1的地址为202.56.112.11而routerB s0/2的地址为202.56.112.12,两台路由器都没有做接口环回路由.此时在routerA上ping其接口s0/1的IP地址能ping通,但tracert 202.56.112.11便发现该数据包并未直接送给routerA本身,而是通过routerB后再回到routerA的.第一次遇到这种情况时我也很诧异,但理解环回的概念以后,这个疑惑也就自然解开.下面我们也来看看该数据包的寻址过程:首先路由器cisco2600以上)没有默认接口地址的loopback路由,并且这两台router也没有做相关手工设置.因此当routerA发送目的地址为其s0/1的icmp ping包时,routerA查找路由表没发现指向环回接口的主机路由主机路由优先级高于网络路由),于是根据直连路由将该数据包转发到routerB;routerB接收到该数据包后也根据直连路由将其转发给routerA;routerA收到该ping包后,作出回应,回应包原路返回.因而便出现一个有趣的现象,routerA ping自己的延迟比其ping routerB的延迟还要大.为此很多设备都手工设置了本地环回路由,从而减少不必要的麻烦.

相关内容