Conversions des Nom et adresse
Domain Name System (DNS) :
Le DNS (traduisez Système de nom de domaine est un service permettant d'établir une correspondance entre un nom de domaine et une adresse IP.
Un serveur DNS est donc une machine permettant de faire cette correspondance.
Le DNS , a été mis au point en novembre 1983 par Paul Mockapetris (RFC 882 et RFC 883), puis révisé en 1987 dans les RFCs 1034 et 1035. Le DNS a fait l'objet depuis de nombreuses RFCs.
Un DNS est une base de données répartie contenant des enregistrements, appelés RR (Resource Records), concernant les noms de domaines.
D’une manière générale, un enregistrement DNS comporte les informations suivantes :
· FQDN :Fully Qualified Domain Name, soit Nom de Domaine Totalement Qualifié. Le nom de domaine est composé de plusieurs label séparer par un point. Dans un nom de domaine, le label à l'extrême droite doit être choisi dans la liste des noms de domaines de premier niveau.
Il existe deux types de domaines de premier niveau :
1. les domaines nationaux de premier niveau composés de deux lettres identifiant un pays ou un territoire indépendant. Exemple : dz pour algerie ,fr pour France, pl pour Pologne
2. les domaines de premier niveau génériques composés de trois lettres ou plus identifiant généralement le secteur d'activité dans lequel opèrent les individus ou les organisations qui les utilisent. Exemple : com pour les sites commerciaux, info pour les services d'informations, ou bien org pour les organisations.
· TTL (durée de vie/Time To Live) – La TTL est la période durant laquelle les serveurs mettent en cache les données pour les enregistrements DNS= détermine le nombre de secondes qui s'écoulent avant la prise en compte de nouvelles modifications apportées à l'enregistrement.
Les noms de machine :
· gethostname :
Récupère le (premier) nom de la machine locale, placé dans nom lg est la taille de l'espace mémoire référencé par nom. Retourne 0 si appel réussi, -1 sinon.
Syntaxe
:
· Gethostbyname :
Recherche l'adresse de la machine ayant le nom de domaine name. Elle renvoie un pointeur vers la structure hostent , ou bien un pointeur NULL si une erreur se produit, auquel cas h_errno contient le code d'erreur.
Syntaxe :
La structure hostent:
struct hostent {
char *h_name ; /*nom officiel de la machine*/
char *h_aliases ; /*liste des surnoms de cette machine*/
int h_addrtype ; /*type d’adresse (exple adresse IP) */
int h_length ; /*longueur de l’adresse */
char **h_addr_list ; /*table terminée par un pointeur nullàliste des adresses de la machine cas (plusieurs adresses (les routeurs) */
}
#define h_addr h_addr_list [ 0 ] /*première adresse dans h_addr_list
· gethostbyaddr
La fonction gethostbyaddr() renvoie une structure du type hostent pour l'hôte d'adresse addr. Cette adresse est de longueur len et du type donné.
Dans le cas d’erreur la fonction renvoie pointeur NULL si une erreur se produit, auquel cas h_errno contient le code d'erreur.
Exemple :
struct hostent *he;
struct in_addr ipv4addr;
inet_pton(AF_INET, "192.0.2.34", &ipv4addr);
he = gethostbyaddr(&ipv4addr, sizeof ipv4addr, AF_INET);
printf("Host name: %s\n", he->h_name);
Les opérations sur les octets
Pour initialiser une structure ou pour mettre à jour on dispose de plusieurs fonctions :
Syntaxe :
#include <string.h>
void bcopy (const void *src, void *dest, int n);
void bzero(void *s, int n);
void *memset(void *s, int c, size_t n);
Rôle :
1. La fonction bcopy() : qui a pour paramètre 2 structures et un entier n qui indique le nombre d’octets à copier. Cette fonction copie les n premiers octets de la structure 1 dans la structure 2.
2. La fonction bzero()qui initialise à 0 tous les champs de la structure passée en paramètre. Cette fonction doit être appelée avant l’utilisation de la structure.
3. La fonction memset() remplit les n premiers octets de la zone mémoire pointée par s avec le caractère c.