Je sais que 127.0.0.1 ~ 127.255.255.254 sont les adresses IP de bouclage pour la plupart des systèmes d'exploitation modernes, et ces adresses IP peuvent être utilisées pour faire référence à notre propre ordinateur.
Mais qu'est-ce que 0.0.0.0? Il semble qu'il se réfère également à l'ordinateur local, alors quelle est la différence ?
Et, pourriez-vous m'expliquer les connexions IP suivantes:
La seule chose est que vous ne dites pas "toutes les adresses devraient avoir accès" - cela se fait dans vos pare-feu et/ou le logiciel serveur et/ou d'autres couches de sécurité comme tcpwrappers.
0.0.0.0, dans ce contexte, signifie "toutes les adresses IP sur la machine locale" (en fait probablement, "toutes les adresses IPv4 sur la machine locale"). Ainsi, si votre machine de serveur Web a deux adresses IP, 192.168.1.1 et 10.1.2.1, et que vous autorisez un démon de serveur Web comme Apache à écouter sur 0.0.0.0, il sera accessible à ces deux adresses IP. Mais seulement à ce qui peut contacter ces adresses IP et les ports Web.
Notez que, dans un contexte différent (routage), 0.0.0.0 signifie généralement la route par défaut (la route vers "le reste de" Internet, à part les routes de votre réseau local, etc.).
Lorsqu'un service écoute sur 0.0.0.0, cela signifie que le service écoute sur toutes les interfaces réseau configurées, lors de l'écoute sur 127.0.0.1, le service est uniquement lié à l'interface de bouclage (uniquement disponible sur la machine locale)
L'adresse IP 0.0.0.0
peut avoir des significations très différentes, selon l'endroit où il est utilisé.
0.
).netstat
(ce que vous avez demandé), cela signifie qu'un socket donné écoute toutes les adresses IP disponibles de l'ordinateur; lorsqu'un ordinateur possède plusieurs adresses IP, un socket ne peut être lié qu'à une adresse et une paire de ports spécifiques, ou à un port et toutes adresses; si vous y voyez une adresse IP, cela signifie que le socket écoute uniquement sur ce port et cette adresse spécifique; si tu vois 0.0.0.0
, cela signifie qu'il écoute sur ce port sur toutes les adresses de la machine, y compris celle de bouclage (127.0.0.1
).La réponse de Lee B est juste, mais voici quelques RFC pertinents au cas où vous seriez intéressé.
0.0.0.0:
De RFC1122 , section 3.1.2.3:
Nous résumons maintenant les cas spéciaux importants pour les adresses IP de classe A, B et C, en utilisant la notation suivante pour une adresse IP:
{ <Network-number>, <Host-number> } or { <Network-number>, <Subnet-number>, <Host-number> }
...
(a) { 0, 0 } This Host on this network. MUST NOT be sent, except as a source address as part of an initialization procedure by which the Host learns its own IP address.
Juste cela, "cet hôte sur ce réseau" ... comme l'indique la réponse de Lee B, cela se traduit par toutes les adresses IP disponibles sur votre hôte. L'hébergement d'un service sur 0.0.0.0 hébergera automatiquement ce service sur chaque interface adressable.
127.0.0.1:
De RFC5735 :
127.0.0.0/8 - Ce bloc est attribué pour être utilisé comme adresse de bouclage de l'hôte Internet. Un datagramme envoyé par un protocole de niveau supérieur à une adresse située n'importe où dans ce bloc revient en boucle à l'intérieur de l'hôte. Ceci est généralement implémenté en utilisant uniquement 127.0.0.1/32 pour le bouclage. Comme décrit dans [RFC1122], Section 3.2.1.3, les adresses dans l'ensemble du bloc 127.0.0.0/8 n'apparaissent légitimement sur aucun réseau.
La différence entre 0.0.0.0 et l'adresse de bouclage 127.0.0.1 est que l'adresse de bouclage est conçue pour permettre une interface IP pleinement fonctionnelle au sein de l'hôte lui-même, quelle que soit l'apparence du reste de la configuration réseau, le cas échéant. Tout trafic envoyé au périphérique de bouclage est immédiatement reçu sur celui-ci. Ce n'est pas tellement que le réseau de bouclage "se réfère" à votre propre hôte ... c'est plus comme si vous avez un mini segment de réseau dans votre hôte que les périphériques, les processus et les sockets et peuvent ouvrir et se connecter.
En termes simples: écouter sur 0.0.0.0 signifie écouter de n'importe où qui a un accès réseau à cet ordinateur, par exemple, à partir de cet ordinateur, du réseau local ou d'Internet, alors que l'écoute sur 127.0.0.1 signifie uniquement écouter à partir de cet ordinateur