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.
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.
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.