Voici un échange TCP entre un navigateur web et un serveur web:
emprunté à http://www.commentcamarche.net/
Chaque station connectée sur Internet possède une (ou
plusieurs) adresse IP propre. Cependant, les utilisateurs ne veulent
pas travailler avec des adresses numériques du genre 193.49.184.6 mais
avec des noms de stations ou des adresses plus explicites (appelées
adresses FQDN - Fully Qualified Domain Name) du style
www.u-picardie.fr .
Le protocole DNS (couche
Application) assure la correspondance entre le nom d'une machine et
son adresse IP.
On appelle résolution de noms de domaines
(ou résolution d'adresses) la corrélation
entre les adresses IP et le nom de domaine associé.
Aux origines de TCP/IP, étant donné que les réseaux étaient très peu étendus, c'est-à-dire que le nombre d'ordinateurs connectés à un même réseau était faible, les administrateurs réseau créaient des fichiers appelés tables de conversion manuelle (fichiers généralement nommés hosts ou hosts.txt), associant sur une ligne, grâce à des caractères ASCII, l'adresse IP de la machine et le nom littéral associé, appelé nom d'hôte.
Vous pouvez voir le contenu de ce fichier sous Knoppix ainsi:cat /etc/hostsLe Domain Name System
Le système précédent a l'inconvénient majeur de nécessiter la mise à jour des tables de tous les ordinateurs en cas d'ajout ou modification d'un nom de machine.
Ainsi, avec l'explosion de la taille des réseaux, et de leur interconnexion, il a fallu mettre en place un système plus centralisé de gestion des noms. Ce système est nommé Domain Name System, traduisez Système de nom de domaine.
Ce système consiste en une hiérarchie de noms permettant de garantir l'unicité d'un nom dans une structure arborescente.
On appelle nom de domaine, le nom à deux composantes, dont la première est un nom correspondant au nom de l'organisation ou de l'entreprise, le second à la classification de domaine (.fr, .com, ...). Chaque machine d'un domaine est appelée hôte. Le nom d'hôte qui lui est attribué doit être unique dans le domaine considéré (le serveur web d'un domaine porte généralement le nom www mais ça n'a rien d'obligatoire, par exemple: iupmiage.sc.u-picardie.fr).
L'ensemble constitué du nom d'hôte, d'un point, puis du nom de domaine est appelé adresse FQDN (Fully Qualified Domain Name, soit Nom de Domaine Totalement Qualifié). Cette adresse permet de repérer de façon unique une machine. Ainsi www.commentcamarche.net représente une adresse FQDN.
Les machines appelées serveurs de nom de domaine permettent d'établir la correspondance entre le nom de domaine et l'adresse IP sur les machines d'un réseau. Chaque domaine possède ainsi, un serveur de noms de domaines, relié à un serveur de nom de domaine de plus haut niveau.
Ainsi, le système de nom est une architecture distribuée, c'est-à-dire qu'il n'existe pas d'organisme ayant à charge l'ensemble des noms de domaines. Par contre, il existe un organisme (l'InterNIC pour les noms de domaine en .com,.net,.org et .edu par exemple).
Le système de noms de domaine est transparent pour l'utilisateur, néanmoins il ne faut pas oublier les points suivants:
La classification du domaine, parfois appelées TLD (Top Level Domain, soit domaines de plus haut niveau), correspond généralement a une répartition géographique. Toutefois, il existe des noms, créés pour les Etats-Unis à la base, permettant de classifier le domaine selon le secteur d'activité, par exemple:
Code | Pays |
---|---|
AC | Ile de l'Ascencion |
AD | Andorre |
AE | Emirats Arabes Unis |
AF | Afghanistan |
AG | Antigua et Barbuda |
AI | Anguilla |
AL | Albanie |
AM | Arménie |
AN | Antilles Néerlandaises |
AO | Angola |
AQ | Antarctique |
AR | Argentine |
AS | Samoa Américaines |
AT | Autriche |
AU | Australie |
AW | Aruba |
AZ | Azerbaïdjan |
... | ... |
domain u-picardie.fr nameserver 193.49.184.6 nameserver 193.49.184.17 nameserver 193.49.184.5domain indique le domaine par défaut qui sera utilisé si le nom de domaine n'est pas précisé (c'est optionnel).
host IP_stationQuelle est l'adresse IP de www.free.fr ?
Voici un exemple de client et serveur Java en mode connecté:
(emprunté à Arnaud Pêcher)
Client: ExempleClient.java:
import java.net.*; import java.io.*; public class ExempleClient { public static void main( String p[]) { try { Socket serveur = new Socket("10.145.134.1",1245); InputStream entree = serveur.getInputStream(); OutputStream sortie = serveur.getOutputStream(); PrintStream psortie = new PrintStream( sortie ); DataInputStream dentree = new DataInputStream( entree ); psortie.println("Hello serveur"); System.out.println("Client: message recu="+dentree.readLine()); } catch ( UnknownHostException e ) { System.out.println("Impossible de trouver le destinataire");} catch ( IOException e ) { System.out.println("Impossible de se connecter à la machine"); } } }Serveur:ExempleServeur.java:
import java.net.*; import java.io.*; public class ExempleServeur { public static void main( String p[]) { try { ServerSocket oreille = new ServerSocket( 1245); System.out.println("Ready to accept connections"); Socket client = oreille.accept(); InputStream entree = client.getInputStream(); OutputStream sortie = client.getOutputStream(); PrintStream psortie = new PrintStream( sortie ); DataInputStream dentree = new DataInputStream( entree ); System.out.println("Serveur: message recu ="+ dentree.readLine()); psortie.println("Hello you!"); oreille.close(); } catch ( IOException e ) { System.out.println("Impossible de se connecter à la machine"); } } }NB: pour compiler du java sous Knoppix:
javac maclasse.java