Protocoles TCP IP support de formation complet
...
I - TCP/IP et les réseaux
I-A- Pourquoi un protocole ?
Un protocole de communication est un ensemble de règles permettant à plusieurs ordinateurs, éventuellement sur des réseaux physiques différents et utilisant des OS différents, de dialoguer entre eux.
Ainsi grâce à TCP/IP, des ordinateurs sous UNIX et sur un réseau Ethernet peuvent dialoguer avec des ordinateurs sous NT sur un réseau Token-Ring.
TCP/IP peut fonctionner :
- sur des réseaux locaux physiques de type Ethernet, Fast Ethernet, Token-Ring, FDDI
- sur des réseaux de type WAN comme ATM, LAPB ou des liaisons par RTC ou LS.
I-B- Rappel du modèle OSI de l’ISO
I- B- 1- Les couches
Le modèle OSI de l’ISO permet de définir un modèle pour des ordinateurs communicants. Tout ordinateur conforme à ce modèle peut dialoguer avec ces homologues en utilisant le même "langage" et les mêmes méthodes de communication.
Le modèle est composé de 7 couches.
Chaque couche assure une fonction bien déterminée.
Chaque couche utilise les services de la couche inférieure. Par exemple la couche Réseau utilise les services de la couche Liaison qui utilise elle-même les services de la couche Physique.
Chaque couche possède un point d'entrée pour les services offerts, nommé SAP =Service Access Point. Ainsi la couche Session possède un point d'accès SSAP et la couche Transport un point d'accès TSAP.
Chaque couche d'un ordinateur dialogue avec la couche homologue d'un autre ordinateur en utilisant un protocole spécifique à la couche (Données de protocole = PDU =Protocol Data Unit).
...
I- B- 3- Les sous couches de l’IEEE
Le monde des réseaux locaux possède un organisme de standardisation qui lui est propre. Il s’agit de l’IEEE . Cet organisme gère les couches qui sont exclusives aux réseaux locaux. L’IEEE divise en deux la couche liaison de données du modèle OSI de l’ISO. Ces deux sous-couches sont :
Cette couche concerne les méthodes d'accès au support du réseau local. Ainsi Ethernet correspond à la norme IEEE 802.3, alors que Token-Ring est concernée par la norme IEEE 802.5
Tous les types de réseaux définis au niveau de la sous-couche MAC possèdent une interface commune avec la couche Réseau, c’est-à-dire avec les protocoles utilisés sur le réseau. Ceci permet d’utiliser n’importe quel protocole avec n’importe quel type de réseau physique. Cette couche est responsable de la transmission des données entre les nœuds du réseau. Elle fournit des services de datagramme en mode connecté ou non connecté ou des services de circuits virtuels.
o Dans le mode datagramme, les paquets générés par la couche contiennent une adresse source et une adresse destination. Aucun chemin n'est établi par avance et les paquets peuvent passer par des chemins différents. Aucune vérification n’est assurée tant qu’au séquencement des paquets à leur arrivée.
o Dans le mode circuit virtuel, une connexion est établie entre les nœuds communicants ainsi qu’un contrôle du séquencement et de la validité des trames transmises. Un contrôle de flux est aussi assuré.
La couche LLC peut assurer trois types de services aux couches supérieures:
Type 1 : Service de datagramme sans accusé de réception en mode point à point, multipoint ou diffusion.
Type 2 : Services de circuits virtuels. Assure les services de séquencement, de contrôle de flux et de correction d’erreur.
Type 3 : Service de datagramme avec accusé de réception.
...
II - Historique de TCP/IP
La nécessité de relier entre eux des réseaux de types différents, a conduit un organisme de la Défense américaine DARPA1, à la fin des années 60, à créer un protocole ou plus exactement une suite de protocoles dénommée TCP/IP . Les protocoles TCP et IP définissent un ensemble de formats et de règles pour l’émission et la réception de données indépendamment des types de réseau physique et d’ordinateurs utilisés. Les protocoles TCP/IP fortement implantés dans l’environnement UNIX, bien que non conformes au modèle de l’OSI, sont devenus des standards de fait.
Le réseau qui utilise TCP/IP est un réseau à commutation de paquets. Ce type de réseau transmet des informations sous forme de petits groupes d’octets appelés Paquets. Si un fichier doit être transmis, il est d’abord fragmenté en paquets à l’émission puis, le fichier est réassemblé en regroupant les paquets à la réception.
...
III - Inter-réseaux et Routage IP
Figure III 1 : Un inter-réseau ou internet IP.
Dans la figure ci-dessus, imaginons que le nœud 25 du réseau Token-Ring désire envoyer des données au nœud 36 du réseau Ethernet 2. Le type de trame, la méthode d’accès, le système d’adressage et le débit du réseau Token-Ring sont incompatibles avec ceux du réseau Ethernet. Les données ne peuvent être transmises en l’état. Elles doivent, grâce aux routeurs du réseau, changer de type de trame à chaque nouveau type de réseau.
Un système d’adressage, indépendant du type de réseau physique, doit être utilisé pour désigner de façon unique chaque nœud sur l’inter-réseau. Le protocole IP possède ce type d’adressage composé d’une adresse réseau (NetID= Network ID ) et d’une adresse nœud (HostID = Host ID) sur chaque réseau.
Par exemple, 125, 120, 115 et 119 désignent respectivement les adresses réseaux des réseaux Token-Ring, Ethernet 2, la liaison asynchrone en PPP et Ethernet 1.
L’adresse 125.0.0.25 désigne l’adresse du nœud 25 sur le réseau 125. L’adresse 119.0.0.36 désigne le nœud 36 sur le réseau 119 Ethernet 2.
Chaque routeur est équipé d’au moins 2 interfaces réseaux. Des tables de routage internes à chaque routeur permettent de connaître le chemin à emprunter pour transporter des données d’un nœud à un autre. Lorsque le paquet IP arrive dans une trame Token-Ring dans le routeur 1 à destination du nœud 36 du réseau Ethernet 2, celui-ci lit l’adresse IP de destination, et repositionne le paquet IP dans une trame Ethernet. Lorsque la trame parvient au routeur 2, le paquet est positionné dans des trames PPP. Puis lorsqu'il arrive au routeur 3, il est repositionné dans une trame Ethernet. L’adresse IP de destination n’a pas changé pendant tout le parcours, par contre, les adresses physiques (MAC) ont été modifiées sur chaque réseau.
IV - Couches
IV-A- TCP/IP et les modèles ISO et DoD
La suite des protocoles appelée aussi pile de protocoles IP ne correspond pas au modèle OSI de l’ISO, celui-ci a été normalisé en 1979, il est donc postérieur à la création de TCP/IP.
La pile de protocoles IP correspond au modèle DoD (Department of Defence). Le dessin suivant montre l’équivalence entre ces couches et les différents protocoles de la pile. Les protocoles correspondant aux couches 6 et 7 ISO sont des applications de transmissions qui s'appuient sur TCP/IP. Les couches 1 et 2 dépendent du type de réseau utilisé.
Tous les standards (normes) de la communauté Internet sont publiés sous forme de RFC . Chacune est identifiée par un numéro et décrit le fonctionnement d'un protocole de la pile TCP/IP ou d'un matériel comme par exemple les routeurs IP.
...
V - Fonctionnement de la pile de protocoles IP
Figure V 1 : Fonctionnement de TCP/IP.
Les applications développées pour TCP/IP utilisent généralement plusieurs des protocoles de la suite. Elles communiquent avec la couche transport, elle-même communiquant avec les couches inférieures, pour aboutir au support physique qu’est le réseau. A destination, les couches inférieures repassent les informations aux couches supérieures pour aboutir à l’application de l’hôte destination.
Chaque couche de la pile remplit une fonction bien spécifique. Une couche quelconque rend des Services à la couche qui lui est immédiatement supérieure. Chaque couche de même niveau dans les ordinateurs Source et Destination dialogue avec son homologue. Ce dialogue est décrit dans le protocole correspondant à la couche. Par exemple IP pour la couche internet (ou réseau) et TCP pour la couche transport.
V-A- Encapsulation
Dans l'ordinateur qui émet des données, les couches communiquent avec les couches homologues de l’autre ordinateur. Chaque couche ajoute des informations nommées en-têtes, destinées à communiquer avec la couche homologue située dans l'ordinateur de l'autre extrémité. Chaque nouveau paquet ainsi formé est inséré dans un paquet de la couche inférieure. Cette opération s'appelle encapsulation.
Figure V 2 : Encapsulation.
L'ensemble des données inclus dans IP aurait pu être un datagramme UDP, si l'application utilisait ce type de protocole plutôt que TCP.
TCP et UDP utilisent des numéros de ports sur 16 bits pour connaître l'application qui leur a passé des données.
Les protocoles ARP, RARP, ICMP et IGMP attaquent directement le datagramme IP. Le champ type de cette trame permet de savoir quel est le protocole utilisé dans le champ de données.
V- A- 1- Encapsulation IP dans les diverses trames Ethernet
Le standard réseau Ethernet d'origine a été repris et modifié par le Comité 802 de l'IEEE. Il existe donc plusieurs définitions de types de trames Ethernet. Quel que soit le type de trame, il faut cependant que les paquets IP puissent y être encapsulés. Dans la norme de l'IEEE la couche liaison est divisée en 2 sous-couches :
la couche MAC (802.3) qui correspond à la gestion de CSMA/CD et à l'interfaçage avec la couche physique.
la couche LLC (802.2) qui définit le contrôle de la liaison. Cette fonction est commune a tous les types de réseaux physiques.
La trame Ethernet_802.2 définie par l'IEEE contient des champs supplémentaires par rapport à la trame Ethernet. Ce sont les champs DSAP et SSAP (Destination et Source Service Access Point). Le champ contrôle contient la valeur 03 en hexadécimal.
Dans la trame Ethernet_SNAP, les 3 octets du champ Org sont à 0. Le champ type contient la valeur qui est contenue dans le champ Type de la trame Ethernet. Cette valeur représente le code du protocole utilisé dans le champ de données de la trame Ethernet.
...
V-B- Multiplexage et Démultiplexage
V- B- 1- Multiplexage
Le champ "Type" dans une trame Ethernet permet d'indiquer le code des différents types de protocoles (IP, ARP et RARP). De même au niveau IP, le champ "Type" de l’en-tête IP, permet de transporter TCP ou UDP. Enfin au niveau transport, les numéros de ports indiquent les applications concernées. Cette propriété de mélanger les protocoles est appelée multiplexage
Figure V 5 : Multiplexage.
V- B- 2- Démultiplexage
A l'inverse lorsqu'une machine reçoit une trame Ethernet, les données applicatives doivent remonter jusqu'aux couches supérieures en traversant les couches basses. A chaque niveau, l'en-tête correspondant à la couche est interprété pour savoir à quel protocole ou applications les données doivent être remises. L'en-tête n'est pas transmis à la couche supérieure.
Figure V 6. Démultiplexage IP.
Chaque application côté serveur utilise un numéro de port "bien connu" (well-know). Ainsi, l'application Telnet serveur utilise en principe le port TCP 23 et FTP le port TCP 21, alors que TFTP serveur utilise le port UDP 69. Les numéros de port côté serveur sont compris entre 1 et 1023.
Les applications côté client utilisent des "ports éphémères" dont les numéros sont compris entre 1024 et 5000. La gestion de ces numéros de ports est complètement transparente pour les utilisateurs.
La liste des Ports TCP et UDP est contenue dans le fichier Services des ordinateurs travaillant sous IP.
VI - Adresses IP
Au niveau de la couche Liaison, les nœuds du réseau communiquent avec les autres stations en utilisant des adresses qui dépendent du type de réseau utilisé. Un nœud peut être un micro-ordinateur, un serveur de fichier, une imprimante réseau ou n’importe quel périphérique utilisant TCP/IP. Chaque nœud possède une adresse physique ou adresse MAC .
Dans les réseaux Ethernet et Token-Ring, l’adresse physique est contenue dans une ROM sur chaque interface réseau. Toutes les adresses sont différentes et comportent 6 octets. Cette adresse est déterminée par le constructeur de l’interface selon un plan de numérotation à l'échelle mondiale.
Dans le réseau X25, l’adresse déterminée par le concessionnaire du réseau comporte au maximum 15 chiffres décimaux.
Dans le réseau LocalTalk d'Apple, l’adresse comporte un octet pour déterminer le numéro du réseau et 2 pour déterminer le numéro de la station.
VI-A- Généralités
Les adresses IP au contraire sont des adresses logiques. Elles sont indépendantes du type de réseau utilisé. Dans la version 4 de IP, elles comportent toujours 32 bits, dont une partie identifie le réseau (NetID), l’autre le nœud sur ce réseau (HostID).
VI- A- 1- Types d'adresses
Unicast : Adresse permettant l'adressage d'une seule machine.
Multicast : Adresse correspondant à un groupe de machines.
Broadcast : Adresse correspondant à toutes les machines d'un réseau.
VI-B- Représentation des adresses IP
La représentation de cette adresse se fait dans une notation “décimale pointée” (dotted-decimal notation), c’est-à-dire que chaque octet de l’adresse est représenté par un nombre décimal, séparé du suivant par un point. Par exemple :
Figure VI 1 : Adresses IP. Notation décimale pointée.
Parfois, la représentation se fait en Hexadécimal de la façon suivante : Øx7E.Øx2F.Øx00.Øx0A
...
VII - Réseaux et sous-réseaux
Un réseau peut être divisé en sous-réseaux afin de pouvoir :
- éviter le gaspillage des adresses nœuds d’un réseau
- utiliser des supports physiques différents.
- réduire le trafic sur le réseau.
- isoler une partie du réseau en cas de défaillance d'un composant du réseau.
- augmenter la sécurité.
Chaque sous-réseau est relié à un autre par un routeur.
Exemple :
Figure VII 1 : Sous-réseaux.
Dans la figure ci-dessus, le routeur est connecté à Internet par un réseau de classe C 195.123.125.0. Il est donc possible d’utiliser 256 (- 2) adresses pour les nœuds. Cependant si tous les nœuds sont sur le même réseau, celui-ci risque d’être chargé. On répartit les nœuds sur 3 réseaux que l’on connecte à un routeur. Chacun de ces réseaux devant avoir une adresse distincte, on crée des adresses de sous-réseaux pour chacun d’eux.
VII-A- Masques de sous-réseaux
La notion de sous-réseaux était inexistante au début de IP. Elle est apparue avec la RFC 950 vers 1985. L’adressage de sous-réseaux va se faire avec des bits normalement réservés à l’adressage des nœuds.
Figure VII 2 : Numérotation des sous-réseaux.
Pour indiquer le nombre de bits pris sur la partie HostID comme numéro de sous-réseau, on va utiliser un masque de sous-réseaux. Ce masque indique par des bits à 1 le nombre de bits de l’adresse IP qui correspondent à l’adresse réseau et à l’adresse sous-réseaux. Les bits à 0 du masque indiquent les bits de l’adresse IP qui correspondent à l’HostID.
Figure VII 3 : Masque de sous-réseau.
Dans l’exemple ci-dessus, l’adresse IP est une adresse de classe C. On désire créer 16 sous-réseaux. Il est donc nécessaire d’utiliser 4 bits de la partie HostID pour indiquer le numéro de sous-réseau.
Le masque comporte 28 bits à 1, c’est à dire :
24 bits correspondant à la partie NetID de l’adresse et 4 bits pour indiquer les bits de l’adresse IP qui doivent être interprétés comme étant l’adresse de sous-réseaux.
4 bits à 0, indiquent les bits de l’adresse IP qui doivent être interprétés comme des adresses de nœuds.
Les masques de sous réseaux sont à entrer dans chaque ordinateur travaillant en IP. Les valeurs des masques se rentrent la plupart du temps en notation décimale pointée. Pour illustrer l’exemple ci-dessus, voici comment il conviendrait d’indiquer à une station NT, son adresse IP et son masque de sous-réseau.
Figure VII 4 : Entrées de l'adresse IP et du masque de sous-réseau.
Figure VII 5 : Calcul de l'adresse de sous-réseau et de l'adresse nœud.
Dans cet exemple, le masque de sous-réseau comporte 28 bits. L’adresse IP 195.123.125.124 est une adresse de classe C.
Les 24 premiers bits du masque correspondent au NetID.
Les 4 bits suivants à 1 dans le masque indiquent qu’il faut interpréter les 4 premiers bits du dernier octet comme une adresse de sous-réseau et non comme une adresse HostID. Les 4 bits à 0 du masque indiquent qu’il faut interpréter les 4 derniers bits du dernier octet de l’adresse IP comme une adresse nœud.
On calcule l’adresse du sous-réseau en tenant compte du poids binaire de chaque bit. Ici, (128 x 0) + (1 x 64) + (1 x 32) + (1 x 16)= 112. L’adresse nœud correspond aux 4 derniers bits de l’adresse IP (12).
...
VIII - Les services d’application utilisant TCP
Des applications réseau sont directement liées à la pile de protocole TCP/IP et la version "client" de ces applications est souvent livrée avec la pile de protocoles. Ces applications permettent par exemple le transfert de fichier (FTP), l'émulation de terminal en réseau (Telnet), l'affichage de page HTML (serveur et navigateur WEB), fonctions de nommage (DNS), …
Suivant les cas et le besoin de fiabilité des applications, elles utilisent soit le protocole TCP, soit le protocole UDP comme protocole de transport.
VIII-A- Ping
Ping (Packet Internet Grouper) est une application qui permet de vérifier le bon fonctionnement des composants d'un réseau utilisant TCP/IP. Elle permet par essais successifs de tester la pile IP et l'interface réseau de l'ordinateur sur lequel on se trouve, puis de tester les liaisons avec les autres machines du réseau. Cette application utilise le protocole ICMP véhiculé par IP.
...
VIII-B- FTP
FTP (port 21) est une application qui permet d'assurer le transfert de fichiers, sans erreur, entre un micro-ordinateur et un hôte ou entre 2 hôtes. Un certain nombre de commandes propres à cette application permettent des transferts uniques ou multiples de fichiers dans les 2 sens (à l'alternat).
Figure VIII 2 : FTP.
Il existe une application FTP en mode client côté utilisateur. Dans l'autre ordinateur, une application FTP serveur tourne en tâche de fond.
VIII-E- WWW
Le Wide World Web est l'ensemble des serveurs qui stockent des documents au format HTML (et autres) sur Internet. Pour assurer le dialogue entre les clients Web (les navigateurs Web) et les serveurs, on utilise le protocole HTTP qui s'appuie sur TCP et IP.
Figure VIII 7 : Liaison WWW.
VIII-F- Les protocoles de messagerie SMTP, POP et IMAP4
La messagerie est un des services d'Internet les plus utilisés et les plus pratiques. Plusieurs protocoles sont utilisés pour la transmission des messages.
VIII- F- 1- SMTP
Le protocole SMTP permet d'envoyer les messages en ASCII vers le serveur du provider auquel on est raccordé
Lorsque l'utilisateur A veut envoyer un message, il le compose tout d'abord en utilisant un utilitaire de messager, (Outlook, Outlook Express, Message Composer, Eudora ou autre). Le message composé est d'abord envoyé vers une boîte d'envoi locale. Puis, le message est acheminé vers le serveur du provider à l'aide du protocole SMTP. Pour envoyer des messages non textuels (images, documents Word, programmes), on est obligé d'utiliser des utilitaires pour rendre la transmission compatible avec SMTP qui ne supporte que l'ASCII. Ces utilitaires sont UUENCODE / UUDECODE ou plus récemment MIME .
VIII- F- 2- POP et IMAP4
Le message est ensuite acheminé vers le serveur sur lequel est connecté le destinataire. Celui-ci n'étant pas forcément relié en permanence à ce serveur, il existe une boîte aux lettres personnelle dans laquelle seront stockés tous les messages non lus.
Le destinataire consulte sa boîte aux lettres et récupère ses messages grâce au protocole POP3 . Un protocole plus récent IMAP4 est parfois utilisé. Il possède l'avantage de permettre la consultation des messages sur le serveur sans forcement les rapatrier dans la station.
Figure VIII 8 : Messagerie Internet.
IX - Services d'applications utilisant UDP
IX-A- DNS
DNS est un service qui permet sur un réseau IP et plus particulièrement sur Internet de résoudre le problème de nommage des ordinateurs. En effet, il est plus facile pour l'utilisateur d'utiliser pour se connecter à un serveur Web par exemple, une adresse du type www.amora.fr, que de taper une adresse IP difficile de mémoriser. Le rôle de DNS est donc de faire une équivalence entre un nom de machine et son adresse IP.
Pour ce faire, on utilise :
o un système de nommage des ordinateurs qui est normalisé et hiérarchisé de manière à ce que chaque ordinateur de l'Internet porte un nom unique.
o des serveurs de noms DNS qui comportent dans des bases de données le nom des ordinateurs et l'adresse IP correspondante.
IX- A- 1- Système de nommage hiérarchisé
L'espace de noms du DNS est organisé d'une façon hiérarchique à la manière d'un système de fichiers DOS ou UNIX.
Figure IX 1 : DNS.
L'arbre démarre par une racine puis, à chaque niveau, on trouve des nœuds qui permettent l'apparition de nouvelles branches de l'organisation hiérarchique. Chaque nœud de la figure représente un domaine qui possède un label qui peut comporter jusqu'à 63 caractères.
Le nom de domaine d'un nœud quelconque de l'arbre est la liste des labels permettant d'atteindre la racine. On commence par écrire le label de plus bas niveau et on termine par celui du plus haut niveau. Chaque label est séparé du suivant par un point.
Si le nom de domaine se termine par un point, c'est un nom de domaine absolu ou nom de domaine pleinement qualifié. (FQDN= Fully Qualified Domain Name).
Un nom de domaine doit être unique, mais il peut exister des labels identiques à des niveaux différents. Les domaines de niveau supérieur com (commercial), edu (éducation), gov (gouvernemental), int (international), mil, (militaire), net (réseau) et org (autres organisations) sont appelés domaines génériques. Ceux qui au même niveau représentent un nom de pays ( fr, us, ...) sont appelés domaines géographiques.
IX- A- 2- Serveurs de noms de domaine
Une zone est une partie de l'arbre DNS administrée séparément. Chaque zone doit posséder des serveurs de noms. Pour chaque machine de la zone, l'administrateur doit entrer dans le serveur de noms, l'adresse IP de cette machine et le nom de domaine. Si un serveur de noms ne contient pas le nom demandé par un ordinateur, il doit être capable d'interroger les autres serveurs de noms des niveaux supérieurs. Tout nom demandé et trouvé par un serveur de noms est mis en mémoire cache. Ceci évite des demandes répétées.
Pour le réseau mondial INTERNET, le NISC attribue des noms de domaines en respectant des conventions propres à cet organisme. Chaque société ou chaque université peut recevoir un nom de domaine de haut niveau (com pour une société commerciale et edu pour un établissement d'éducation par exemple) et un nom de sous domaine propre à la société ou à l'université (par exemple novell ou ucla).
A partir de ce point l'administrateur du domaine peut continuer la structure hiérarchique et prolonger le nom de sous-domaine qui peut devenir par exemple : messagerie.service_technique.novell.com pour une société commerciale ou sectionA.lettres.ucla.edu pour un département d'une université. Le niveau le plus bas de la hiérarchie apparaît au début du nom de domaine.
L'implémentation de DNS utilisée sur les ordinateurs Unix est appelée BIND et le deamon serveur named.
Les serveurs DNS peuvent aussi être implémentés sur système d'exploitation NetWare ou Windows NT 4 Server.
IX- A- 3- Exemple d'utilisation de DNS
Figure IX 2 : Fonctionnement DNS.
-1- L'utilisateur tape l'URL dans le navigateur Web de sa station Un programme nommé résolveur de nom va interroger le serveur DNS de la zone de l'utilisateur pour connaître l'adresse IP correspondant à www.dubois.fr.
-2- Une requête est envoyée par le résolveur au serveur DNS. Ce serveur de noms de domaine ne connaît pas l'adresse IP. Il va donc interroger le serveur de nom du niveau racine.
-3- Le serveur DNS de la zone de l'utilisateur envoie une requête au serveur DNS du niveau racine.
-4- Ce serveur ne connaît pas non plus l'adresse IP. Il interroge le serveur DNS du domaine dubois.fr
-5- Ce serveur DNS renvoie une réponse qui contient l'adresse IP. Elle est mise en cache dans le serveur DNS du niveau racine.
-6- Ce serveur renvoie la réponse vers le serveur DNS demandeur. Celui-ci met l'adresse dans un cache pour éviter d'autres requêtes ultérieures
-7- L'adresse IP demandée est fournie au résolveur de la station utilisateur qui la met aussi en cache.
-8- La connexion est établie à travers le réseau Internet vers le serveur Web .