2. Contexte de développement

Le parti pris de ce document est l'utilisation conjointe des deux protocoles de la couche réseau : IPv4 et IPv6. Dans ce but, on commence par mettre en place une petite infrastructure de test comprenant trois hôtes ayant chacun un rôle défini. Les rôles dépendent de l'application reprise du premier document Initiation au développement C sur les sockets. Un hôte serveur ou listener reçoit les chaînes de caractères émises par les hôtes client ou talker. Le serveur convertit les chaînes de caractères en majuscules et les retransmet vers les client.

Infrastructure de test

Voici le tableau des paramètres d'affection des rôles, de noms de domaine, d'adressage IPv4 et IPv6.

Tableau 1. Paramètres des hôtes

Nom Rôle Adresse IPv4 Adresse IPv6
cooper.fake.domain routeur, serveur DNS 192.0.2.1/27 2001:db8:feb2:10::1/64
vm1.fake.domain serveur, listener 192.0.2.11/27 2001:db8:feb2:10::11/64
vm2.fake.domain client, talker 192.0.2.12/27 2001:db8:feb2:10::12/64
vm3.fake.domain client, talker 192.0.2.13/27 -

Du point de vue système, on reprend le modèle en trois couches : kernel, shell et application. Nos applications sont exécutées à partir du shell et font appel au sous-système réseau du noyau (kernel) via des appels systèmes utilisant les bibliothèques standard.

Du point de vue modélisation réseau, les niveaux allant de la couche physique jusqu'à la couche transport sont intégrés dans le sous-système réseau du noyau et nos applications sont placées dans la couche éponyme. Le canal de communication entre la couche application et les niveaux inférieurs est appelé «prise» ou socket.

Modélisation système & réseau

Relativement au premier document Initiation au développement C sur les sockets, les instructions de compilation et d'exécution des applications ne changent pas. Un exemple de Makefile est donné en annexe.

L'utilisation du service de noms de domaine (DNS) est une nouveauté. L'utilisation conjointe des deux versions de protocole réseau suppose qu'à un même nom d'hôte on associe plusieurs adresses IP. Ainsi, les tests pourront se faire de façon transparente. La même application doit pouvoir s'exécuter sur un système qui ne supporte qu'une version de protocole ou sur un système qui supporte les deux versions. On parle alors de système single stack ou dual stack. Le service DNS est donc une solution pratique d'évaluation des différentes combinaisons. La configuration du service sort du cadre de ce document. Les fichiers de déclaration de la zone fake.domain sont donnés en annexe.

Côté bibliothèques standard, le remplacement de la fonction gethostbyname() par getaddrinfo() constitue le premier gros changement. Cette évolution dans l'utilisation des appels système justifie une section à part entière dans la description du code. Là encore, l'utilisation des protocoles IPv4 et IPv6 entraîne une modification des enregistrements utilisés pour décrire les attributs des adresses associées à un hôte ou une interface réseau.