为什么要将套接字绑定到一个地址?

20
在对套接字进行“监听”之前,我必须先将其绑定到一个地址。为什么?在我看来,我不应该被迫选择一个特定的地址,而应该能够在所有地址上监听该端口。即使我绑定到 127.0.0.1,似乎仍然可以从远程计算机连接到该套接字。那么,将地址绑定到套接字上真正的作用是什么?

我会仔细检查您是否实际上绑定到了127.0.0.1,因为如果真是这样,您不应该能够连接到不同的接口。如果在Linux上,您可以运行“netstat -nlut”来获取每个服务及其侦听的地址/端口的漂亮输出。 - joet3ch
你是对的,底层实际上正在将127.0.0.1重写为0.0.0.0。 - Pace
1个回答

31

绑定地址是确定服务器端口开放的接口的过程。 绑定到0.0.0.0是一种特殊情况,当你想要监听与接口相连的所有IP地址时使用。 而将地址绑定到127.0.0.1则只对能够连接到本地主机(例如本地进程)的代码可见


3
+1,额外信息。绑定可以用于仅接受本地连接。如果您拥有多个IP地址,您还可以在不同的IP上使用相同的端口侦听不同的服务器。 - jgauffin
@jgauffin 除非这些不同的IP地址是同一网络接口的别名...我说得对吗?换句话说,两个服务器不能绑定到同一接口的不同IP地址别名(在同一端口上)。如果您有不同的看法,请告诉我... - flow2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接