使用 127.0.0.1 或 LAN IPv4 IP 的 Http 流量

使用 127.0.0.1 或 LAN IPv4 IP 的 Http 流量

在同一台机器上公开两个服务,如果我使用内部 LAN IPv4 地址,我的连接是否会转到路由器并返回到我的机器?

如果是,是否可以通过使用 127.0.0.1 来防止这种情况?

服务始终在同一台机器上,并且 IPv4 地址不会随时间变化。服务在 UNIX 或 Windows 机器上公开,而无需用户知情

答案1

不,连接不会往返于路由器。

如果您的机器的 IP 地址是10.1.2.3,并且您正在打开与该机器的连接,则10.1.2.3该连接将在内部处理,并且永远不会离开您的机器。

10.1.2.3Esa Jokinen 是正确的,环回接口正是用于此目的,不使用它会有一些影响(主要是关于安全性),但对于实际目的而言,使用或并没有什么区别127.0.0.1

如果您不需要其他主机访问您的服务,最好将您的服务限制到环回设备。

答案2

是的。这个功能称为本地环回专门用于您描述的目的:它使同一台机器上的应用程序能够相互通信。

不仅是127.0.0.1,而且所有地址127.0.0.0/8都是特殊用途 IP 地址为保留本地环回。目前规定于RFC 8190, 2.2.2但它至少可以追溯到RFC 1122,3.2.1.3自 1989 年 10 月起:

(G) { 127<any>}

内部主机环回地址。此形式的地址不得出现在主机外部。

本地环回通常实现为虚拟网络接口在您的操作系统的网络软件上(例如lolo0在 UNIX 或Loopback Pseudo-Interface 1Windows 上);因此,它甚至不会将数据包传递给任何网络接口控制器在机器上。

为了完整起见,还有:

节点可以使用它来向自身发送 IPv6 数据包。它不得分配给任何物理接口。

  • Unix 套接字工作原理类似,但完全在内核中,使用文件系统作为其命名空间:两个进程可以通过打开同一个套接字(“文件”)进行通信。

    AF_UNIX(也称为)套接字AF_LOCAL系列用于

在同一台机器上的进程之间高效通信。传统上,UNIX 域套接字可以是未命名的,也可以绑定到文件系统路径名(标记为套接字类型)。Linux 还支持独立于文件系统的抽象命名空间。

相关内容