Quand un utilisateur vous dit à quel ordinateur vous devriez vous connecter, il peut l’exprimer sous deux formes : une adresse IP ou un nom de domaine.
L’adresse IP est généralement constituée d’une suite de quatre nombres, chacun représentant un octet de l’adresse : l’utilisateur sépare les nombres
Rechercher l’adresse IP

par un point. Ce format est appelé adresse Internet, adresse IP ou numéro Internet. Voici un exemple d’une telle adresse IP : 192.168.101.241
Les réseaux n’utilisent pas l’adresse IP dans ce format. Ils veulent que l’adresse soit en format binaire. Celui-ci est constitué de 4 octets, dont chacun contient l’équivalent binaire de l’un des nombres de l’exemple précédent. L’API inet-addr() convertit une adresse IP en son format binaire. Les noms de domaines sont le moyen le plus courant par lequel l’utilisateur fournit une adresse à votre programme. Voici des exemples de noms de domaines :
– ftp.example.com
– iSeriesNetwork.com
– www.google.com
Les noms de domaines sont beaucoup plus faciles à mémoriser que les adresses IP. Mais on a besoin d’une adresse IP pour établir la connexion. Par conséquent, vous devez rechercher l’adresse IP à laquelle un nom de domaine fait référence. Pour cela, vous appelez l’API gethostbyname().
La figure 1 montre un fragment de code qui prend l’entrée d’un utilisateur et la convertit en adresse binaire. Le code commence par utiliser l’API inet_addr() pour essayer de convertir l’entrée provenant d’une adresse IP Internet en adresse binaire (A dans la figure 1). Si cette opération échoue, c’est probablement parce que l’utilisateur a fourni un nom de domaine au lieu d’une adresse IP ; donc, il appelle gethostbyname() pour examiner l’adresse (en B).
Gethostbyname() renvoie *NULL s’il ne peut pas trouver l’hôte, ou il renvoie un pointeur s’il réussit. Le pointeur est dirigé vers une information hôte dans une structure de données nommée hostent. Cette structure de données et le pointeur sur lequel elle est basée sont définis dans le copy book SOCKET_ H. Le champ h_addr fait partie de cette structure de données et contient l’adresse IP, si tout se passe bien (en C).
Gethostbyname() examine l’adresse IP pour un nom de domaine. La façon dont il le fait dépend de la configuration de votre ordinateur. Pour le savoir, émettez la commande Change TCP/IP Domain (CHGTCPDMN) CL, comme dans la figure 2.
Dans cet exemple, la priorité de recherche de Host name a été mise à *LOCAL, comme on le voit dans la figure 2. Cela signifie que gethostbyname() essaie d’abord d’examiner le nom du domaine dans la table d’hôte de votre système. S’il le trouve, il renvoie l’adresse IP qui y est configurée. S’il ne le trouve pas, il adresse une requête au serveur DNS à 192.168.0.1.
Si la priorité de recherche de Host name avait été *REMOTE, gethostbyname() essaierait d’abord DNS et ne se retrouverait sur la table d’hôte que si l’examen de DNS (DNS lookup) échouait.
Téléchargez cette ressource

Percer le brouillard des rançongiciels
Explorez les méandres d’une investigation de ransomware, avec les experts de Palo Alto Networks et Unit 42 pour faire la lumière dans la nébuleuse des rançongiciels. Plongez au cœur de l’enquête pour comprendre les méthodes, les outils et les tactiques utilisés par les acteurs de la menace. Découvrez comment prévenir les attaques, les contrer et minimiser leur impact. Des enseignements indispensables aux équipes cyber.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Le Club EBIOS, une communauté dédiée à la gestion des risques autour de la méthode EBIOS
- La difficile mise en conformité avec les réglementations pour les entreprises françaises
- Les risques liés à l’essor fulgurant de l’IA générative
- Pourquoi est-il temps de repenser la gestion des vulnérabilités ?
- Reporting RSE : un levier d’innovation !
