大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。
我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己。 图2 - 4是环回接口处理IP数据报的简单过程。 图中需要指出的关键点是: 1) 传给环回地址(一般是127.0.0.1)的任何数据均作为I P输入。 2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第12章)包含主机本身。 3 ) 任何传给该主机IP地址的数据均送到环回接口。 看上去用传输层和IP层的方法来处理环回数据似乎效率不高,但它简化了设计,因为环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接口,就像传给其他链路层一样,只不过环回接口把它返回到IP的输入队列中。 在 图2 - 4中,另一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的网络上。例如,在一个以太网上,分组一般不被传出去然后读回来。某些BSD 以太网的设备驱动程序的注释说明,许多以太网接口卡不能读回它们自己发送出去的数据。由于一台主机必须处理发送给自己的IP数据报,因此图2 - 4所示的过程是最为简单的处理办法。 4.4BSD系统定义了变量useloopback,并初始化为1。但是,如果这个变量置为0,以太网驱动程序就会把本地分组送到网络,而不是送到环回接口上。它也许不能工作,这取决于所使用的以太网接口卡和设备驱动程序。 见于如下用途。
1 作为一台路由器的管理地址 系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址,管理员会使用该地址对路由器远程登录(telnet ),该地址实际上起到了类似设备名称一类的功能。 但是通常每台路由器上存在众多接口和地址,为何不从当中随便挑选一个呢? 原 因如下:由于telnet 命令使用TCP 报文,会存在如下情况:路由器的某一个接口由于故障down 掉了,但是其他的接口却仍旧可以telnet ,也就是说,到达这台路由器的TCP 连接依旧存在。所以选择的telnet 地址必须是永远也不会down 掉的,而虚接口恰好满足此类要求。由于此类接口没有与对端互联互通的需求,所以为了节约地址资源,loopback 接口的地址通常指定为32 位掩码。 2 使用该接口地址作为动态路由协议OSPF 、BGP 的router id 动态路由协议OSPF 、BGP 在运行过程中需要为该协议指定一个Router id ,作为此路由器的{wy}标识,并要求在整个自治系统内{wy}。由于router id 是一个32 位的无符号整数,这一点与IP 地址十分相像。而且IP 地址是不会出现重复现象的,所以通常将路由器的router id 指定为与该设备上的某个接口的地址相同。由于loopback 接口的IP 地址通常被视为路由器的标识,所以也就成了router id 的{zj0}选择。 3、使用该接口地址作为BGP 建立TCP 连接的源地址 在BGP 协议中,两个运行BGP 的路由器之间建立邻居关系是通过TCP 建立连接完成的。 在配置邻居时通常指定loopback 接口为建立TCP 连接的源地址(通常只用于IBGP ,原因同2.1 ,都是为了增强TCP 连接的健壮性) 配置命令如下: router id 61.235.66.1 interface loopback 0 ip address 61.235.66.1 255.255.255.255 router bgp 100 neighbor 61.235.66.7 remote-as 200 neighbor 61.235.66.7 update-source LoopBack0 4、在Windows系统中,采用127.0.0.1作为本地环回地址。 |