当前位置: 首页 > Linux

Linuxloopback网络接口

时间:2023-04-06 22:21:40 Linux

在开发或调试过程中,我们经常需要与本地服务器通信。例如启动nginx后,在浏览器中输入lcoalhost或127.0.0.1,即可访问本机的http服务。Linux如何访问本机IP?大多数操作系统在网络层实现环回功能,通常使用虚拟环回网络接口。这个虚拟环回网络接口看起来像一个真正的网卡。其实就是操作系统用软件模拟出来的。它可以通过TCP/IP与同一主机上的其他服务通信。127开头的IPv4地址是为它预留的,主流的Linux操作系统给loopback网卡分配的地址是127.0.0.1,hostname是localhost。loopback网口之所以叫loopback网口,是因为从本机发往本机任意IP的数据包,在网络层都会交给loopback网口,而不会发往数据链路。层进行处理,环回网络接口直接回传给网络层,最后交由应用层软件程序进行处理。这种方法对于性能测试非常有用,因为节省了硬件的开销,可以直接测试协议栈软件所需的时间。环回网络接口如何判断目的IP是否为本机地址?答案是网络层在路由转发时会先查本地路由表,发现是本地IP再交给loopback网络接口。查看本地路由表的命令如下:iprouteshowtablelocal输出如下:broadcast10.141.128.0deveth0protokernelscopelinksrc10.141.155.131local10.141.155.131deveth0protokernelscopehostsrc10.141。141.155.135dev135broadeth0protokernelscopelinksrc10.141.155.131broadcast127.0.0.0devloprotokernelscopelinksrc127.0.0.1local127.0.0.0/8devloprotokernelscopehostsrc127.0.0.1local127.0.0.0sclopeproto.1127.0.0.1其中local开头是本机IP,后面的dev是网卡名称。查看本地路由表后,我们再查看主路由表,也就是我们经常操作的路由表。iprouteshowtablemain的输出如下defaultvia10.141.128.1deveth0protostaticmetric10010.141.128.0/18deveth0protokernelscopelinksrc10.141.155.131metric100loopbacknetworkinterface现在让我们看看loopback网络接口ifconfiglooutputlo:flags=73mtu65536inet127.0.0.1netmask255.0.0.0inet6::1prefixlen128scopeid0x10looptxqueuelen1000(LocalLoopback)RX数据包1554227字节123(Mi11227bytes123)RXerrors0dropped0overruns0frame0TXpackets1554227bytes123327716(117.6MiB)TXerrors0dropped0overruns0carrier0collisions0可以看到本地环回接口的IPv4地址是127.0.0.1,并且子网掩码为255.0.0.0,对应A类网号127,有意思的是我们访问127.0.0.1-127.255.255.254之间的任意一个地址,都会访问本机。IPv6address::1,前缀为128位,表示只有一个地址。目前loopback网络接口的MTU是64KB,但是可以设置到2GB,太恐怖了。下面的RX和TX线表示接收和接收的数据包的数量和大小,以及错误包、丢包、溢出次数和无效帧。FAQ虚拟网卡的IP是否属于本地IP?属于,因为它与宿主机共享相同的网络协议栈。在宿主机上创建netns,netns里面的IP是否属于本机IP?不会,因为netns有独立的网络协议栈,在netns内部也能看到它自己的loopback网络接口。