web-dev-qa-db-fra.com

Quelle est la différence entre 127.0.0.1 et 0.0.0.0?

Je comprends que 127.0.0.1 pointe sur localhost, et donc 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?

216
Sagnik Sarkar

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. Toutefois, toute adresse IP comprise dans l'intervalle 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?

Le but de la plage de bouclage est de tester l’implémentation du protocole TCP/IP sur un hôte. Comme les couches inférieures sont court-circuitées, l'envoi vers 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, adresses en boucle et adresses privées

Pour plus d'informations, voir https://askubuntu.com question 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 comme 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 au lieu de 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 (c'est-à-dire lors de la liaison de sockets d'écoute). Ceci est connu des programmeurs TCP sous le nom 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 être dans 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). Le client n'ayant 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 qu'il 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 est 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

Enter image description here

Source: Compréhension et dépannage de 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

206
DavidPostill

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 à l'écoute 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 au lieu de quelque part sur le réseau local.

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

110
Cristian Dobre

127.0.0.1 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"), à l'exception de 127.0.0.0 (sous-réseau de bouclage) et 127.255.255.255 (adresse de diffusion pour le bouclage sous-réseau).

127.x.y.z 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, cela 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 éventuellement être fournie , pour signifier Je m'en fous .

Par exemple, lorsque vous ouvrez activement une connexion TCP à un serveur TCP (un serveur TCP est créé par un TCP passif). , vous devez spécifier l’adresse du serveur TCP (IP et numéro de port), et vous pouvez éventuellement choisir une 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'appel système bind permet de choisir l'adresse locale d'un socket TCP. Les données transmises à bind constituent en réalité un ensemble de contraintes: contrainte d'adresse IP, contrainte de TCP port. La notation textuelle habituelle est IP: port. 0.0.0.0:0 signifie que n'importe quel port ou adresse IP 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 pour vous du côté de la connexion TCP si vous n'en choisissez pas, à l'aide de la table de routage, en fonction de l'adresse de destination: le TCP adresse de socket sera l'adresse locale associée à la route correspondant à 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: un seul L'adresse IP est jugée acceptable ou toutes les adresses le sont. La logique ne pas dicte que cela doit être ainsi. Vous pouvez étendre l'interface avec un langage de contrainte plus riche.

Précision:

La phrase 127.x.y.z 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.

13
curiousguy

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, ce qui oblige l'administrateur à le changer en 0.0.0.0 pour activer la connectivité externe.

4
Marek Bejda