将套接字绑定到除localhost之外的任何地址是什么意思?

时间:2016-09-04 06:18:05

标签: sockets networking ip ip-address

我不明白对<{em>}的含义bind套接字到127.0.0.1(或:: 1等)以外的任何地址。
我不是 - 按照定义 - 将套接字绑定到我自己的机器上的端口..这是localhost?
绑定或收听另一台机器或IP地址的端口有什么意义? 从概念上讲,它对我来说没有意义!

(事实证明这对谷歌来说太难了......可能是因为我没有用Google搜索合适的条款。)

1 个答案:

答案 0 :(得分:30)

套接字的绑定用于寻址和端口,以便在此套接字上接收数据(大多数情况下)或在发送数据时使用此地址/端口作为数据源(例如,与FTP中的数据连接一起使用)服务器)。

通常在特定机器上有几个接口,即机器可以到达的伪接口环回,以太网,WLAN,VPN .......这些接口中的每一个都可以分配多个IP地址。例如,环回通常具有127.0.0.1并且IPv6也是:: 1,但您也可以分配其他环境。以太网或WLAN在本地网络上具有IP地址,即172.16.0.34或其他。

如果将用于接收数据的套接字绑定到特定地址,则只能接收发送到此特定IP地址的数据。例如,如果绑定到127.0.0.1,您将能够从您自己的系统接收数据,但不能从本地网络上的其他系统接收数据,因为它们无法将数据发送到您的 127.0.0.1:对于一个数据,127.0.0.1将被发送到他们自己的 127.0.0.1,第二个你的127.0.0.1是你内部环回接口上的一个地址,无法从外部访问。

您还可以将套接字绑定到全部地址,如0.0.0.0(Ipv4)和::(Ipv6)。在这种情况下,它不受特定IP地址的约束,但能够接收发送到机器任何IP地址的数据。