Quelle est la différence entre 127.0.0.1 et 0.0.0.0?

235

Je comprends que 127.0.0.1 pointe sur localhost, tout comme 0.0.0.0 (corrigez-moi si je me trompe). Alors, quelle est la différence entre 127.0.0.1 et 0.0.0.0?

Sagnik Sarkar
la source
1
Cette discussion sur le suivi des bogues dans Chrome pourrait vous intéresser sur la gestion 0.0.0.0de la saisie d'adresse.
Jeremy Banks
6
Dans la plupart des configurations de serveur, 0.0.0.0 signifie écouter sur TOUTES les adresses! Cela rendra votre serveur disponible sur Internet. Si vous faites cela pour un serveur local sans aucune sécurité (c'est seulement écouter sur localhost, non?), C'est mauvais. Ne fais pas ça!
Josef
56
Répondez à votre question littéralement, la différence est 2130706433.
Shaz
2
@Mast oh, vous faites partie des personnes qui installent un système totalement non sécurisé, car le pare-feu va tout réparer? En général, ce système peut alors être trouvé avec shodan.io : 3 Le niveau de cet état d' esprit est « nous pouvons tout à fait utiliser une installation de WordPress 5 ans, nous avons eu un WAF ». Je ne recommande à personne d'aller dans cette voie, jamais!
Josef
2
@ Shaz je voudrais upvote votre commentaire, mais comme il est actuellement à 42 Je ne peux pas me résoudre à le faire ...
Jenny D

Réponses:

221

Quelle est la différence entre 127.0.0.1 et 0.0.0.0?

  • 127.0.0.1 est l'adresse de bouclage (également appelée localhost).

  • 0.0.0.0 est une méta-adresse non routable utilisée pour désigner une cible non valide, inconnue ou non applicable (un espace réservé sans adresse particulière).

    Dans le contexte d'une entrée de route, cela signifie généralement la route par défaut.

    Dans le contexte des serveurs, 0.0.0.0 signifie "toutes les adresses IPv4 sur la machine locale". Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur s'exécutant sur l'hôte écoute le 0.0.0.0, il sera accessible à ces deux adresses IP.


Quelle est l'adresse IP 127.0.0.1?

127.0.0.1 est l'adresse de protocole Internet (IP) de bouclage, également appelée «localhost». L'adresse est utilisée pour établir une connexion IP avec le même ordinateur ou le même ordinateur utilisé par l'utilisateur final.

La même convention est définie pour les ordinateurs prenant en charge l'adressage IPv6 en utilisant la connotation de :: 1. L'établissement d'une connexion à l'aide de l'adresse 127.0.0.1 est la pratique la plus courante. cependant, en utilisant une adresse IP comprise entre 127 .. . * fonctionnera de la même manière ou de manière similaire. La construction en boucle donne à un ordinateur ou à un périphérique capable de mettre en réseau la capacité de valider ou d'établir la pile IP sur la machine.

Source: 127.0.0.1 - Quelles sont ses utilisations et pourquoi est-ce important?


Adresses spéciales

La fonction de "bouclage" est attribuée au numéro de réseau de classe A 127, c'est-à-dire qu'un datagramme envoyé par un protocole de niveau supérieur à une adresse de réseau 127 doit revenir en boucle à l'intérieur de l'hôte. Aucun datagramme "envoyé" à une adresse de réseau ne devrait jamais apparaître sur aucun réseau, où que ce soit.

Source: Numéros de réseau


S'il s'agit d'une classe entière A, à quoi servent d'autres valeurs arbitraires pour les trois derniers octets?

L'objectif de la plage de bouclage est de tester l'implémentation du protocole TCP / IP sur un hôte. Étant donné que les couches inférieures sont court-circuitées, l'envoi d'une adresse de bouclage permet de tester efficacement les couches supérieures (IP et supérieures) sans risque que des problèmes ne se manifestent au niveau des couches inférieures. 127.0.0.1 est l'adresse la plus couramment utilisée à des fins de test.

Source: adresses IP réservées, de bouclage et privées

Pour plus d'informations, voir la question https://askubuntu.com Qu'est-ce que le périphérique de bouclage et comment l'utiliser? et pourquoi l'adresse IP de bouclage est-elle de 127.0.0.1 à 127.255.255.254? .


Quelle est l'adresse IP 0.0.0.0?

"0.0.0.0" est une syntaxe d'adresse valide. Donc, il devrait être analysé comme valable chaque fois qu'une adresse IP en notation décimale traditionnelle par points est attendue. Une fois analysé et converti en une forme numérique exploitable, sa valeur détermine ce qui se passera ensuite.

La valeur tout à zéro a une signification particulière. Donc, il est "valide", mais a un sens qui peut ne pas être approprié (et donc traité comme non valide) pour des circonstances particulières. Il s’agit essentiellement de l’espace réservé "pas d’adresse particulière". Pour des choses telles que la liaison d'adresse de connexions réseau, le résultat peut être d'attribuer une adresse d'interface appropriée à la connexion. Si vous l'utilisez pour configurer une interface, il peut plutôt supprimer une adresse de l'interface. Cela dépend du contexte d'utilisation pour déterminer ce que fait "pas d'adresse particulière".

Dans le contexte d'une entrée de route, cela signifie généralement la route par défaut . Cela se produit en conséquence plus du masque d'adresse, qui sélectionne les bits à comparer. Un masque de "0.0.0.0" ne sélectionne aucun bit, ainsi la comparaison réussira toujours. Ainsi, lorsqu'un tel itinéraire est configuré, il y a toujours un endroit où les paquets doivent être acheminés (s'ils sont configurés avec une destination valide).

Dans certains cas, simplement "0" fonctionnera également et aura le même effet. Mais ce n'est pas garanti. Le formulaire "0.0.0.0" est le moyen standard de dire "pas d'adresse particulière" (en IPv6, c'est ":: 0" ou juste "::").

Source: quelle est la signification de l'adresse IP 0.0.0.0


Dans la version 4 du protocole Internet, l'adresse 0.0.0.0 est une méta-adresse non routable utilisée pour désigner une cible non valide, inconnue ou non applicable. Donner une signification spéciale à une donnée par ailleurs invalide est une application de la signalisation intrabande.

Dans le contexte des serveurs, 0.0.0.0 signifie "toutes les adresses IPv4 sur la machine locale". Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur s'exécutant sur l'hôte écoute le 0.0.0.0, il sera accessible à ces deux adresses IP.

Dans le contexte du routage, 0.0.0.0 signifie généralement la route par défaut, c’est-à-dire la route qui mène au "reste de" Internet, et non quelque part sur le réseau local.

Les utilisations incluent:

  • L'adresse qu'un hôte revendique comme étant la sienne alors qu'aucune adresse ne lui a encore été attribuée. Comme lors de l'envoi du paquet DHCPDISCOVER initial lors de l'utilisation de DHCP.
  • L'adresse qu'un hôte s'assigne lorsque la demande d'adresse via DHCP a échoué, à condition que la pile IP de l'hôte le supporte. Cet usage a été remplacé par le mécanisme APIPA dans les systèmes d'exploitation modernes.
  • Un moyen de spécifier "n'importe quel hôte IPv4 du tout". Il est utilisé de cette manière lorsque vous spécifiez un itinéraire par défaut.
  • Un moyen de spécifier explicitement que la cible est indisponible. 1
  • Un moyen de spécifier "toute adresse IPv4 du tout". Il est utilisé de cette manière lors de la configuration de serveurs (par exemple lors de la liaison de sockets d’écoute). Ceci est connu par les programmeurs TCP comme INADDR_ANY. (bind (2) se lie aux adresses, pas aux interfaces.)

Dans IPv6, l’adresse contenant tous les zéros est écrite sous la forme "::".

Source: 0.0.0.0


Découverte / demande DHCP

Lorsqu'un client démarre pour la première fois, il est dit à l'état Initializing et transmet un message DHCPDISCOVER sur son sous-réseau physique local via le port 67 (serveur BootP) UDP (User Datagram Protocol). Étant donné que le client n'a aucun moyen de connaître le sous-réseau auquel il appartient, DHCPDISCOVER est une diffusion sur tous les sous-réseaux (adresse IP de destination 255.255.255.255), avec une adresse IP source de 0.0.0.0. L'adresse IP source est 0.0.0.0, car le client n'a pas d'adresse IP configurée.Si un serveur DHCP existe sur ce sous-réseau local et est configuré et fonctionne correctement, le serveur DHCP entend la diffusion et répond avec un message DHCPOFFER. Si un serveur DHCP n'existe pas sur le sous-réseau local, un agent de relais DHCP / BootP doit exister sur ce sous-réseau local pour transférer le message DHCPDISCOVER à un sous-réseau contenant un serveur DHCP.

Cet agent de relais peut être un hôte dédié (par exemple, Microsoft Windows Server) ou un routeur (par exemple, un routeur Cisco configuré avec des instructions d'assistance IP de niveau d'interface).

...

Une fois que le client a reçu un DHCPOFFER, il répond par un message DHCPREQUEST, indiquant son intention d'accepter les paramètres du DHCPOFFER, puis passe à l'état Demandeur. Le client peut recevoir plusieurs messages DHCPOFFER, un de chaque serveur DHCP ayant reçu le message DHCPDISCOVER d'origine. Le client choisit un DHCPOFFER et répond à ce serveur DHCP uniquement, en refusant implicitement tous les autres messages DHCPOFFER. Le client identifie le serveur sélectionné en renseignant le champ d'option Identificateur de serveur avec l'adresse IP du serveur DHCP. DHCPREQUEST est également une diffusion. Par conséquent, tous les serveurs DHCP ayant envoyé un DHCPOFFER verront le message DHCPREQUEST et sauront si son DHCPOFFER a été accepté ou refusé. Toute option de configuration supplémentaire requise par le client sera incluse dans le champ options du message DHCPREQUEST.Même si une adresse IP a été proposée au client, il envoie le message DHCPREQUEST avec une adresse IP source de 0.0.0.0. Pour le moment, le client n'a pas encore reçu la confirmation qu'il est clair d'utiliser l'adresse IP.

...

Conversation client-serveur pour le client obtenant une adresse DHCP là où le client et le serveur DHCP résident sur le même sous-réseau

Entrez la description de l'image ici

Source: Comprendre et dépanner le protocole DHCP dans les commutateurs Catalyst ou les réseaux d'entreprise


Route par défaut

Ce document explique comment configurer un itinéraire par défaut ou une passerelle de dernier recours. Ces commandes IP sont utilisées:

  • ip default-gateway

  • ip default-network

  • et la route ip 0.0.0.0 0.0.0.0

ip route 0.0.0.0 0.0.0.0

Création d'une route statique vers le réseau 0.0.0.0 0.0.0.0 est un autre moyen de définir la passerelle de dernier recours sur un routeur. Comme avec la commande ip default-network, l'utilisation de la route statique vers 0.0.0.0 ne dépend d'aucun protocole de routage. Cependant, le routage IP doit être activé sur le routeur.

Remarque: IGRP ne comprend pas une route vers 0.0.0.0. Par conséquent, il ne peut pas propager les itinéraires par défaut créés à l'aide de la commande ip route 0.0.0.0 0.0.0.0. Utilisez la commande ip default-network pour que IGRP propage un itinéraire par défaut.

Source: Configuration d'une passerelle de dernier recours à l'aide de commandes IP

DavidPostill
la source
3
Dans le contexte des serveurs, 0.0.0.0 signifie "toutes les adresses IPv4 sur la machine locale". Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur s'exécutant sur l'hôte écoute le 0.0.0.0, il sera accessible à ces deux adresses IP. - qui l'a fait pour moi
Rafael Eyng Le
112

Ils ne sont pas les mêmes.

127.0.0.1 fait partie du réseau 127/8 qui est réservé et pointe vers le même ordinateur.

0.0.0.0 est une adresse IP spéciale qui signifie différentes choses selon le contexte.

Dans Internet Protocol Version 4, l'adresse 0.0.0.0 est une méta-adresse non routable utilisée pour désigner une cible non valide, inconnue ou non applicable. Donner une signification spéciale à une donnée par ailleurs invalide est une application de la signalisation intrabande.

Vous avez peut-être pris 0.0.0.0 pour 127.0.0.1 lorsque vous regardez netstat et que l'adresse locale est à 0.0.0.0, mais 0.0.0.0 est utilisé différemment.

Dans le contexte des serveurs, 0.0.0.0 signifie "toutes les adresses IPv4 sur la machine locale". Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur s'exécutant sur l'hôte écoute le 0.0.0.0, il sera accessible à ces deux adresses IP.

Dans le contexte du routage, 0.0.0.0 signifie généralement la route par défaut, c’est-à-dire la route qui mène au "reste de" Internet, et non quelque part sur le réseau local.

https://en.wikipedia.org/wiki/0.0.0.0

Cristian Dobre
la source
0.0.0.0peut aussi parfois indiquer une diffusion, ce qui signifie à tous les ordinateurs du réseau.
James Mertz
8
@KronoS Je pensais que les émissions ressemblaient à 255.255.255.255quelque chose du genre (ou plus concrètement 192.168.1.255à un réseau local)
Nick T
1
@ NickT Ah vous avez raison :A special definition exists for the IP broadcast address 255.255.255.255. It is the broadcast address of the zero network or 0.0.0.0, which in Internet Protocol standards stands for this network, i.e. the local network. Transmission to this address is limited by definition, in that it is never forwarded by the routers connecting the local network to other networks.
James Mertz
@KronoS Vous confondez l'adrd de diffusion avec le bouclage. Le bouclage est 0.0.0.0 qui, comme décrit ci-dessus, écoute toutes les adresses locales. La diffusion (de manière simple) correspond aux 255 réseaux à "diffuser" vers toutes les adresses de ce réseau.
Desorder
Ceci est incomplet - de nombreux systèmes d'exploitation vous permettent en réalité de vous connecter à 0.0.0.0, qui se comporte alors comme une adresse de bouclage.
Grawity
16

127.0.0.1 est l’une des adresses de l’ordinateur local, mais toute adresse 127.xyz est également une autre adresse de l’ordinateur (appelée "adresse de bouclage"), sauf 127.0.0.0 (sous-réseau de bouclage) et 127.255.255.255 (adresse de diffusion sous-réseau de bouclage).

127.xyz signifie "ici".

0.0.0.0 est totalement différent: 0.0.0.0 n'est l'adresse de rien , c'est le joker, comme *dans shell.

Vous ne pouvez pas envoyer de données à 0.0.0.0 ou ouvrir activement une connexion TCP à 0.0.0.0 car il n'y a rien; 0.0.0.0 n'est même pas une adresse inaccessible ou non routable, elle n'a pas de sens dans un contexte où une adresse est attendue .

Vous pouvez utiliser le joker 0.0.0.0 dans des contextes où une adresse peut être fournie en option , ce qui signifie que je m'en fiche .

Par exemple, lorsque vous ouvrez activement une connexion TCP à un serveur TCP (un serveur TCP est créé par une ouverture TCP passive), vous devez spécifier l'adresse du serveur TCP (IP et numéro de port) et vous pouvez éventuellement choisir une adresse. adresse locale. (Comme votre socket n’est pas une socket de serveur, personne ne peut ouvrir une connexion avec elle et l’adresse de votre côté de la connexion n’est généralement pas très importante.)

L' bindappel système permet de choisir l'adresse locale d'un socket TCP. Les données transmises bindsont en réalité un ensemble de contraintes: contrainte d'adresse IP, contrainte de port TCP. La notation textuelle habituelle est IP: port. 0.0.0.0:0 signifie que n'importe quelle adresse IP et que n'importe quel port est acceptable, c'est la contrainte nulle. 0.0.0.0:20 signifie que le port local doit être 20, toute adresse IP est acceptable (0.0.0.0:20 est utilisé par les serveurs FTP conformes pour la connexion de données en mode actif).

Le sous-système TCP / IP choisira l'adresse de votre côté de la connexion TCP si vous n'en choisissez pas une, à l'aide de la table de routage, en fonction de l'adresse de destination: l'adresse de socket TCP locale sera l'adresse locale associée à la route correspondante. à l'adresse de destination.

J'ai déjà mentionné le "méta-caractère" du shell *, mais le pouvoir de combiner des méta-caractères avec des caractères tels que *foo*(tout nom de fichier contenant "foo") n'existe pas avec des contraintes d'adresse IP, c'est tout ou rien: soit une seule adresse IP est considéré comme acceptable ou toutes les adresses le sont. La logique ne dicte pas que cela doit être ainsi. Vous pouvez étendre l'interface avec un langage de contrainte plus riche.

Précision:

La phrase 127.xyz signifie "ici" n'implique pas que toutes ces adresses sont les mêmes. Ils représentent différents "emplacements" (adresses de socket), à l'intérieur de "l'ordinateur" local, à l'intérieur de la pile IP locale.

Remarque: un ordinateur avec virtualisation (émulation, virtualisation matérielle, paravirtualisation, tout ce que vous pouvez imaginer ...) possède plusieurs piles IP indépendantes.

curieuxguy
la source
Lorsque j'ai tapé une adresse aléatoire commençant par 127 (par exemple, 127.16.23.42) dans mon navigateur, il ne s'est pas connecté à localhost.
whoKnows
@whoKnows Bien sûr. localhost est 127.0.0.1, pas 127.16.23.42.
strangeguy
Je vois. Donc 127.0.0.1 signifie localhost, mais 127.xyz pourrait signifier l'ordinateur local, s'il était configuré de cette façon?
whoKnows
2
@whoKnows No: 127.xyz appartient à cet ordinateur pour tout xy z. "localhost" est juste un nom pour 127.0.0.1, alors oubliez "localhost". Utilisez le drapeau -nou -dde netstatet les programmes associés pour afficher les adresses numériques et non les noms. 127.0.0.1 n'est pas la même adresse IP que 127.16.23.42. Ainsi, 127.0.0.1:80 et 127.16.23.42:80 représentent des adresses de points de terminaison TCP distinctes, un serveur Web situé à l'une des adresses ne peut pas être trouvé à l'autre adresse.
strangeguy
6

En règle générale, vous utilisez bind-address 0.0.0.0 pour autoriser les connexions provenant de sources et de réseaux extérieurs. De nombreux serveurs comme MySQL se lient généralement à 127.0.0.1 en n'autorisant que les connexions en boucle, obligeant l'administrateur à le modifier en 0.0.0.0 pour activer la connectivité externe.

Marek Bejda
la source