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

Meh*_*dad 21 sockets ip networking ip-address

我不明白是什么意思bind一个插座比127.0.0.1(或:: 1等)以外的任何地址.
我不是 - 根据定义 - 将套接字绑定到我自己的机器上的端口..这是localhost?
绑定或收听另一台机器或IP地址的端口有什么意义?
从概念上讲,它对我来说没有意义!

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

Ste*_*ich 37

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

通常在特定的机器上有几个接口,即机器可以到达的伪接口环回,以太网,WLAN,VPN ....... 每个接口都可以分配多个IP地址.例如,loopback通常为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地址的数据.

  • @Mehrdad:不知道这有什么可怕的。想象一下,您有一个城市,在该城市的不同部分(即接口)多次使用相同的街道名称(即 IP 地址)。除非您有其他方法来区分地址(即邮政编码)中的街道,否则在尝试投递邮件时会发生混乱。 (2认同)