在同一台机器上公开两个服务,如果我使用我的内部 LAN IPv4 地址,我的连接是否会转到路由器并返回到我的机器?
如果是,是否可以通过使用 127.0.0.1 来防止这种情况?
服务总是在同一台机器上,IPv4 地址不会及时改变。服务在没有知识的情况下暴露在 UNIX 或 Windows 机器上
在同一台机器上公开两个服务,如果我使用我的内部 LAN IPv4 地址,我的连接是否会转到路由器并返回到我的机器?
如果是,是否可以通过使用 127.0.0.1 来防止这种情况?
服务总是在同一台机器上,IPv4 地址不会及时改变。服务在没有知识的情况下暴露在 UNIX 或 Windows 机器上
不,连接不会去到路由器并返回。
如果您的机器的 IP 地址是
10.1.2.3
,并且您正在打开10.1.2.3
与该机器的连接,则该连接将在内部处理并且永远不会离开您的机器。Esa Jokinen 是正确的,环回接口正是为此目的而使用的,不使用它会产生一些影响(主要是关于安全性),但出于实际目的,如果您使用
10.1.2.3
or并没有任何区别127.0.0.1
。如果您不需要从其他主机访问您的服务,最好将您的服务限制在环回设备上。
是的。这个称为本地环回的功能专门用于您描述的目的:它使同一台机器上的应用程序能够相互通信。
不仅其中的
127.0.0.1
所有地址127.0.0.0/8
都是为本地环回保留的专用 IP 地址。这目前在RFC 8190, 2.2.2中指定,但它至少可以追溯到1989 年 10 月的RFC 1122, 3.2.1.3:本地环回通常作为操作系统网络软件上的虚拟网络接口
lo
实现(例如,lo0
在 UNIX 或Loopback Pseudo-Interface 1
Windows 上);因此,它甚至不会将数据包传递给机器上的任何网络接口控制器。为了完整起见,还有:
IPv6 的本地环回:(
::1/128
RFC 6890, 2.2.3 ; RFC 4291, 2.5.3 )。Unix 套接字的工作方式类似,但完全在内核中,例如使用文件系统作为它们的命名空间:两个进程可以通过打开同一个套接字(“文件”)进行通信。