Comment connaître son adresse IP publique ?PréambuleL'adresse IP (Internet Protocol) est une série de 4 numéros de 8 bits chacun séparé par un point sous la forme « A.B.C.D » où chaque numéro est un entier de 0 à 255 (exemple : 24.200.243.189). Lorsque nous parlons d'adresse IP publique nous parlons de l'adresse IP qui vous identifie sur la toile Internet. Nous vous invitons à lire l'article à la page suivante si vous n'êtes pas initiés à toutes ses bases : http://fr.wikipedia.org/wiki/Adresse_ip Brièvement, si vous n'avez qu'un ordinateur avec un simple modem, vous pourrez trouver facilement votre adresse IP publique à l'aide de la commande ipconfig. L'adresse IP publique peut être statique (elle ne changera alors jamais) ou dynamique (alloué par un serveur DHCP à chaque reconnexion la plupart du temps). En revanche, si vous possédez un routeur ou certains autres types d'appareils en amont, vous ne pourrez pas voir facilement votre adresse IP publique car il y a le NAT (http://fr.wikipedia.org/wiki/Network_address_translation). Dans ce cas précis, la commande ipconfig vous affichera une adresse IP dite locale. L'IANA (http://fr.wikipedia.org/wiki/Internet_Assigned_Numbers_Authority) a défini 3 espaces d'adresses privées. Si vous êtes un particulier, votre adresse IP locale sera du type 192.168.0.x mais il se peut que vous rencontriez des adresses de la forme 10.0.0.x ou 172.16.0.x. Il existe également d'autres cas particulier comme les adresses APIPA (http://fr.wikipedia.org/wiki/APIPA). On voit donc qu'un grand nombre de facteurs peuvent intervenir, qui peuvent rendre compliquée la détermination de l'adresse IP publique. Comment faire ?La méthode présentée ici utilise le fait qu'un serveur connait l'adresse d'un client qui s'y connecte, par exemple pour demander une page web. Il peut donc écrire l'adresse du client en question dans la page qu'il fournit en réponse. Il suffit donc de se connecter à une page Web affichant l'adresse IP publique, de récupérer le contenu de la page puis finalement d'extraire l'adresse IP qui a été écrite sur la page. En pratique, c'est très simple, il existe de nombreuses pages Web offrant ce service. L'exemple présenté ici utilise la page suivante : http://www.myip.dk/. Il va de soi que cette méthode, qui implique un parsing de la page retournée, est très dépendante de la page elle-même. On veillera donc à choisir une page dont on est sûr de la validité dans le temps ; c'est notamment le cas de la page proposée ci-avant. Le contenu de la page est récupérée par la classique fonction UrlDownloadToFile. L'inconvénient est de passer par un fichier, l'avantage est d'être une simple API, ne nécessitant pas d'ajouter un composant (type Inet ou MsWinsock). La fonction GetPublicIP retourne l'IP publique. Elle utilise quelques fonctions intermédiaires pour le traitement des buffers et des fichiers. Option Explicit On peut bien sûr utiliser n'importe quelle page Web qui écrit l'adresse IP publique. Dans ce cas, il suffit de modifier le parsing rudimentaire effectuée dans la fonction GetPublicIP pour extraire l'adresse IP affichée. Comme on l'a dit, on essaiera d'utiliser une page dont on est sûr qu'elle aura une longue validité dans le temps. L'implémentation donnée ici ne constitue qu'un exemple. Sur base de cette idée, il est possible de réaliser des implémentations différentes. Par exemple, rien n'interdit d'écrire une fonction qui connaît plusieurs adresses et plusieurs formats : en cas d'échec avec l'une des pages, on cascadera sur la ou les suivantes. Pour aller plus loinVoir aussi : |
Date de publication : 11 septembre 2008 Dernière modification : 11 septembre 2008 Rubriques : Internet & mails, Réseaux Mots-clés : IP, adresse, publique, connaitre, récupérer, récupéré, internet, local, réseau |