web-dev-qa-db-fra.com

Que signifie lier () un socket à une adresse autre que localhost?

Je ne comprends pas ce que cela signifie pour bind un socket vers une adresse autre que 127.0.0.1 (ou :: 1, etc. .).
Suis-je pas - par définition - la liaison du socket à un port sur la mienne machine. .qui est localhost?
Quel sens cela fait-il de lier ou d'écouter une autre machine ou le port d'adresse IP?
Conceptuellement, cela n'a tout simplement pas de sens pour moi!

(Cela s'est révélé étonnamment difficile pour Google ... peut-être parce que je ne recherche pas les bons termes sur Google.)

24
user541686

La liaison d'un socket est effectuée pour adresser et porter afin de recevoir des données sur ce socket (la plupart des cas) ou pour utiliser cette adresse/port comme source de données lors de l'envoi de données (par exemple utilisé avec des connexions de données dans un serveur FTP).

Habituellement, il existe plusieurs interfaces sur une machine spécifique, c'est-à-dire la boucle de pseudo-interface où la machine peut atteindre elle-même, Ethernet, WLAN, VPN .... Chacune de ces interfaces peut avoir plusieurs adresses IP attribuées. Par exemple, le bouclage a généralement 127.0.0.1 et avec IPv6 aussi :: 1, mais vous pouvez également en affecter d'autres. Ethernet ou WLAN ont les adresses IP sur le réseau local, c'est-à-dire 172.16.0.34 ou autre.

Si vous liez un socket pour recevoir des données à une adresse spécifique, vous ne pouvez recevoir que les données envoyées à cette adresse IP spécifique. Par exemple, si vous vous connectez à 127.0.0.1, vous pourrez recevoir des données de votre propre système mais pas d'un autre système sur le réseau local, car ils ne peuvent pas envoyer de données à votre 127.0.0.1: pour l'une, toutes les données vers 127.0.0.1 seront envoyées à la leur 127.0.0.1 et deuxièmement, votre 127.0.0.1 est une adresse sur votre interface de bouclage interne qui n'est pas accessible de l'extérieur.

Vous pouvez également lier un socket à une adresse fourre-tout comme 0.0.0.0 (Ipv4) et :: (Ipv6). Dans ce cas, il n'est pas lié à une adresse IP spécifique mais pourra recevoir des données envoyées à n'importe quelle adresse IP de la machine.

37
Steffen Ullrich