环回接口(Loopback Interface),允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。
A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。
一个传给环回接口的IP数据报不能在任何网络上出现。
我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是
当IP数据报离开网络层时把它返回给自己。
图是环回接口处理IP数据报的简单过程。
图释:
1当网络层的IP输出函数发现目的地址为环回地址,则交给环回驱动程序,环回驱动程序把该IP数据包放入IP输入队列中。否则则交给以太网驱动程序。
2在太网网驱动程序中,如果发现目的地址为广播或多播地址,如果必要,会复制一份数据给环回驱动程序,然后送到以太网。
3如果发现目的地址与接口地址相同,也会交给环回驱动程序。
需要指出图中的关键点是:
1传给环回地址(一般是127.0.0.1 )的任何数据均作为IP输入。
2传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第12章)包含主机本身。
3任何传给该主机IP地址的数据均送到环回接口。
看上去用传输层和IP层的方法来处理环回数据似乎效率不高,但它简化了设计,因为环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接口,
就像传给其他链路层一样,只不过环回接口把它返回到IP的输入队列中。
另一个隐含的意思是送给主机本身IP地址的IP数据报一般不出现在相应的网络上。例如,在一个以太网上,分组一般不被传出去然后读回来。某些BSD以太网的设备驱动程序的
注释说明,许多以太网接口卡不能读回它们自己发送出去的数据。由于一台主机必须处理发送给自己的IP数据报,因此图2.4所示的过程是最为简单的处理办法。