环回接口(loopback interface)
当我们使用环回接口(IPv4的127.0.0.1或者IPv6的: : 1),数据不会离开本机或传到外部网络.
应用可以使用环回接口来跟本机的其他进程进行通信,而避免了把传输数据暴露到外网的风险。
当应用使用的ip地址不是127.0.0.1或者: : 1时,应用可能会被绑定带以太网接口(Ethenet interface),它可以跟外部网络通信。(修正:其实IPv4的只要是127开头的地址都是环回地址,只是默认会用127.0.0.1,但传给其他127开头的地址的数据最终都会回到环回借口,不会进入网络)
在linux系统上输入指令“ipconfig”可以看到网络接口的相关信息,eth0就是以太网接口,lo就是环回接口
下面展示了环回接口跟以太网接口的区别,端口任意,65432只用来举例,eth0是跟外界通信的一道门。
## 环回接口处理IP数据报的过程
在《TCP/IP详解》第一卷中找到环回接口处理IP数据报的一张图
IP输出函数和IP输入函数都是网络层的实现
关键点:
- 传给环回地址的数据均为IP数据报,即网络层的输出
- 传给广播地址或多播地址的数据报复制一份给环回接口,然后送到以太网上,因为广播与多播包含主机本身
- 任何传给本机IP地址的数据送回环回接口
环回接口可以看成网络层下的一个链路层,传给环回借口的数据不用特殊处理
参考https://realpython.com/python-sockets/