Le principe fondamental de l’Internet a été de créer un mode de transmission par paquet remplaçant les modes en continu utilisés jusque-là pour la transmission de données. Chaque fichier transmit sur Internet est segmenté en paquets de données autonomes pouvant être transmis indépendamment les uns des autres. Pour que cela fonctionne, chaque paquet de données doit contenir des informations de pilotage telles que l’adresse de l’ordinateur émetteur et l’adresse de l’ordinateur récepteur.
Le protocole de communication permettant de transmettre des données sur Internet est le protocole TCP/IP. TCP/IP n’est en fait pas un mais deux protocoles, l’un étant superposé sur l’autre.
Le protocole de premier niveau, IP (Internet Protocol) s’occupe du routage des informations entre l’expéditeur et le destinataire : il accomplit sa tâche en divisant les informations en paquets (de 1 500 octets) et leur adjoint une adresse de provenance et de destination (exactement comme une enveloppe envoyée par la poste).
TCP (Transport Control Protocol) s’appuie sur IP pour gérer le transfert des données entre l’expéditeur et le destinataire. TCP fournit également les mécanismes permettant d’établir les connections, de vérifier l’arrivée dans le bon ordre des données, de gérer des données perdues, les erreurs et de récupérer des données concernées.
Lors de la transmission de données sous forme de paquet, IP ne vérifiant en aucune manière que le paquet est bien arrivée, TCP exige que le destinataire envoi un accusé de réception ou ACK (Acknowledged). De ce fait, l’hôte expéditeur peut se trouver devant trois situations différentes :
A noter que outre les données, TCP envoie également des informations lors de l’établissement de la connexion et lors de son interruption.
Précisons également que TCP n’est pas le seul protocole utilisant IP : TCP/IP comprend également UDP (Unigram Data Protocol). Il s’agit d’un protocole sans connexion et sans garantie utilisé pour des transmissions de faible importance (comme la vidéo ou le son sur Internet).
TCP/IP ne constitue que deux couches dans un ensemble de protocoles allant de la base (matériel) vers le sommet (application). Le modèle réseau TCP/IP ressemble au modèle réseau ISO/OSI à 7 couches (couche physique, couche liaison, couche réseau, couche transport, couche session, couche présentation et couche application).
TCP/IP est une hiérarchie réseau à quatre niveaux superposés au matériel :
| 4 | Protocoles d’application | SMTP (Sendmail), HTTP (Apache), telnet, ftp, rlogin, DNS, etc.. |
| 3 | Protocoles de transport | TCP, UDP, ICMP |
| 2 | Protocoles de réseau (Internet) | IP |
| 1 | Protocoles d’accès au réseau (liaison de données) | Ethernet, ISDN, SLIP, PPP, etc.. |
| Matériel | Câbles, lignes téléphoniques, etc.. |
Exemple :
Dans une communication typique entre un serveur web et un client, les différentes couches ressembleraient à cela :
Du coté serveur, relié à un réseau Ethernet :
Du coté du client, connecté à Internet par modem :
Selon la norme IPv4, une adresse est codée sur 32 bits (soient 4 octets), ce qui permettrait théoriquement d’attribuer 232 adresses. Du fait de la répartition en réseaux de classe A,B et C, le nombre d’adresses possibles est largement inférieur au nombre théorique et il existe aujourd’hui un risque de pénurie d’adresse IP.
La norme IPv6 consiste à utiliser 128 bits pour coder les adresses (soient 16 octets). Cette norme a été adoptée en 1995 après quatre années de discussions dans différentes assemblées et groupes de travail.
La compatibilité avec la norme IPv4 a été préservé afin de permettre une phase de transition suffisante pour le passage de IPv4 vers IPv6. A noter que les versions récentes de Linux prennent déjà en compte la norme IPv6.
Pour que l’acheminement des données fonctionne sur un réseau TCP/IP (Intranet ou Internet), chaque ordinateur doit posséder une adresse IP unique. Si en plus, l’ordinateur doit communiquer sur Internet, son adresse IP doit également être unique.
Selon la norme en vigueur actuellement (IPv4), une adresse IP est codé sur 32 bits répartis en quatre octets : par exemple 192.168.20.101 (la valeur d’un octet variant de 0 à 255).
L’ensemble des adresses IP est divisé en régions, à l’intérieur desquelles coexistent plusieurs classes de réseaux. Internet considère que les adresses IP à l’intérieur d’une classe de réseau font partie du même réseau : Internet n’attend qu’un point d’entrée, ce que nous appelons une passerelle, pour pouvoir router des paquets aux hôtes de ce réseau.
L’espace adresse IP est réparti entre des régions de réseaux de classe A, B et C :
Un masque de réseau est un nombre logiquement ajouté (à l’aide de l’opérateur booléen AND) à une adresse IP afin d’obtenir l’adresse réseau.
Exemple :
| 198 | 4 | 211 | 127 | Adresse IP | |
| 255 | 255 | 255 | 0 | Masque de réseau de classe C | |
| donne | 198 | 4 | 211 | 0 | Adresse de réseau |
Le masque de réseau définit les adresses d’une plage adresse IP considérés comme étant directement connectés, c’est à dire appartenant au même segment de réseau. Des adresses différentes - obtenues par addition avec le masque de réseau - sont considérées comme appartenant à un réseau externe, et doivent utiliser les passerelles et les routeurs pour communiquer.
Exemple : considérons les 3 hôtes suivants : hôte 1 d’adresse 192.168.1.1, hôte 2 d’adresse 192.168.1.2 et hôte 3 d’adresse 192.168.2.1
En définissant un masque de réseau de 255.255.255.0 pour tous les hôtes, les hôtes 1 et 2 sont considérés comme appartenant au même réseau : si l’hôte 1 envoie un paquet à l’hôte 2, TCP/IP tentera de l’envoyer directement. En revanche, l’hôte 1 ne peut envoyer de données directement à l’hôte 3 car le masque considère que 192.168.1 et 192.168.2 sont deux réseaux différents : il enverra donc le paquet vers une passerelle. Il en résulte que tout hôte possède l’adresse IP d’au moins une passerelle afin de pouvoir expédier les paquets qu’il ne peut transmettre lui-même.
Quel est l’intérêt de ce système ?
En divisant l’espace adresse en réseaux logiques, trouver un hôte particulier devient une tâche facile. Pas besoin de connaître tous les hôtes de l’Internet car il suffit de disposer d’une liste de passerelles et de sélectionner celle constituant l’étape logique suivant la route. La passerelle suit la même procédure à l’aide de sa propre liste de passerelles et ainsi de suite, jusqu’à ce que le paquet atteigne la passerelle finale et sa destination.
Il existe des adresses IP appelées adresses de diffusion permettant la réception de données sur l’ensemble des hôtes d’un réseau. Nous ne traiterons pas ici ces adresses particulières.
Certaines adresses sont réservées à un usage personnel. Elles ne sont pas routées sur l’Internet et ne peuvent pas générer de problèmes quand vous les réutilisez. Leurs intervalles sont :
| Classe | Masque de réseau | Adresses réseau |
| A | 255.0.0.0 | 10.0.0.0 |
| B | 255.255.0.0 | 172.16.0.0 à 172.31.0.0 |
| C | 255.255.255.0 | 192.168.0.0 à 192.168.255.0 |
Quelle adresse choisir pour configurer un réseau local ? Cela n’a pas vraiment d’importance mais il est recommandé d’utiliser pour un même réseau, des nombres consécutifs.
Par exemple, si vous avez deux ordinateurs connectés via Ethernet et vous avez besoin maintenant de deux adresses à assigner aux deux cartes réseau, vous pouvez utiliser simplement 192.168.0.1 et 192.168.0.2
A noter également que l’adresse 127 de réseau de classe A est universellement réservée à la boucle locale du réseau, ce qui permet de tester les fonctionnalités de l’interface réseau de son propre ordinateur (c’est pour cela que l’on retrouve systématiquement la ligne 127.0.0.1 localhost dans le fichier /etc/hosts).
Lorsqu’un client contacte un serveur, c’est le plus souvent en vue d’utiliser un service précis, courrier électronique ou FTP par exemple. Afin de différencier ces services, TCP dispose du concept de port qui permet à même interface réseau de fournir plusieurs services différents.
Le port standard pour le protocole HTTP correspond au port 80. Tout service ou protocole réseau standard possède un port associé auquel se connectent les clients pour y accéder : qu’il s’agisse d’HTTP, de FTP, de telnet ou de tout autre standard. La liste des ports standards est défini dans le fichier /etc/services. Voici ci-après une liste provenant du fichier /etc/services : Les ports http (80) et https (443) sont les plus répandus. Il est possible de préciser un port particulier dans l’URL d’un navigateur : il suffit de placer " :" ainsi que le numéro de port après l’adresse web. Exemple : http://localhost:10000 pour accéder à WebMin.
inetd (Internet Daemon) est le service chargé d’écouter les différents port. Lorsque inetd reçoit une requête sur un port dont il a la charge d’écouter, il exécute le service associé (contrairement à Apache qui s’exécute indépendamment).
La méthode de mise en correspondance des noms d’ordinateurs et des adresses IP décrite précédemment a été la seule méthode employée sur l’Internet jusqu’en 1984. Jusqu’à cette date, toutes les adresses et noms d’ordinateurs étaient centralisés et gérés aux Etats-Unis par le NIC (Network Information Centre) sous la forme d’un fichier hosts.txt. Face à l’accroissement rapide de l’Internet, cette méthode s’est avérée rapidement impraticable, d’où l’introduction d’un nouveau mode d’adressage des ordinateurs : le DNS (Domain Name Service).
Organisation et structure de DNS :
Le DNS organise les noms d’ordinateurs selon une hiérarchie de domaines semblable à celle du système de fichier Linux. Partant d’une racine commune (domain racine), le service se stratifie en plusieurs couches depuis la couche supérieur contenant les domaines principaux, vers les couches inférieures divisées en sous-domaines.
Par domaine, on entend une collection d’ordinateurs regroupés selon des critères géographiques ou organisationnels. Ce type de structure permet de satisfaire facilement la contrainte d’unicité des noms d’ordinateurs. On obtient le nom complet d’un ordinateur en commençant par le nom de la machine dans le cadre de son sous-domaine particulier et en suivant le chemin qui remonte vers le niveau supérieur de la hiérarchie (TLD ou Top Level Domain) ; le symbole de séparation entre les différents niveaux étant le point.
L’administration des noms de domaine génériques est effectué par le NIC (http://www.internic.net). L’administration des noms de domaines géographiques a été transférée aux différents pays. En principe, le nombre de sous-domaines placés en dessous de la couche des domaines de second niveau n’est pas limité.
Fonctionnement du DNS :
Avec cette structure, on obtient une gestion décentralisée et délocalisée des domaines. Chaque serveur de nom local gère les données pertinentes de tous les ordinateurs relevant de son domaine de compétence et est en mesure de répondre aux demandes en provenance de l’Internet concernant son domaine.
Le DNS constitue une banque de données mondiale constitué d’un grand nombre de serveurs de noms de domaines. Un serveur de nom de domaine stocke les informations nécessaires relatives à tous les ordinateurs présent dans son domaine de compétence. Cette zone peut comprendre un ou plusieurs domaines. Dans chaque zone, deux serveurs de noms au moins doivent exister pour des raisons de fiabilité (informations accessibles par des voies redondantes).
Rappelons que l’adressage de chaque machine de l’Internet s’effectue exclusivement par l’intermédiaire de l’adresse IP. Lorsqu’une application (Netscape par exemple) veut prendre contact avec un ordinateur dont seul le nom DNS est connu, il est nécessaire de convertir au préalable le nom DNS en une adresse IP. Pour cela une requête est envoyé au serveurs de noms figurant dans le fichier de configuration. Concernant le fichier de configuration de résolution de noms de domaine, il existe deux stratégies différentes :
La mise en oeuvre d’un serveur DNS sera traité ultérieurement.