IDREZO

Technologies informatiques

TCP IP : Adressage et transmission

Avec plus de 4 milliard d'utilisateurs dans le monde, Internet est le plus grand réseau d'informations. Tant sur le plan médiatique que sur celui du trafic, le réseau Internet connaît depuis 1995 ans une progression foudroyante. Lancé en 1969 sur l'initiative de l'administration américaine et réservé, au départ à la communauté scientifique et universitaire, ce réseau, qui est en fait un "réseau de réseau", compte aujourd'hui plus de 400 millions de serveurs web serveurs répartis dans tous les pays du monde.

ARPANET crée en 1969 par le ministère américain de la défense, Internet devait en effet servir à interconnecter le réseau ARPANET de ce ministère à plusieurs autres réseaux et satellites. La vocation militaire d'ARPANET était de favoriser la recherche et la construction de réseaux de télécommunication capables de résister à des destructions partielles en cas de conflit d'où l'absence de centralisation. Le projet expérimental ARPANET à été un tel succès que la plupart des organisations qui y participaient commencèrent à l'utiliser pour leurs propres transmissions de données.

En 1978 ARPANET passe du stade expérimental au stade opérationnel, la responsabilité de la gestion du réseau est alors confiée à l'agence de communication du ministère de la défense (D.C.A. : Défense Communication Agency) appelée maintenant (DISA : Défense Information Système Agency). Bien qu'étant utilisé comme réseau opérationnel, le développement d'ARPANET n'en continua pas moins, et permis la naissance des protocoles TCP/IP.

En 1983 les protocoles TCP/IP ont été adoptés comme standards militaires (MIL STD : Military standard). Les nouveaux protocoles ont été alors installés sur toutes les machines connectées au réseau et la DARPA demande à Bol, Beranek, et Newman (BBN) de mettre en oeuvre TCP/IP sur UNIX c'est de la que vient la suprématie des protocoles TCP/IP dans le monde UNIX.

En 1990 ARPANET est considéré comme étant obsolète, mais on peut remarquer que depuis sa création Internet n'a cessé de s'agrandir et intègre aujourd'hui des réseaux répartis dans le monde entier.

DIFFUSION DES MODIFICATIONS

Du fait de la nature ouverte des protocoles TCP/IP il est indispensable de diffuser des documents relatant des modifications et changements de ces protocoles.

Il existe 3 modes de diffusions.

  • Les notes techniques Internet (IEN : Internet Engineering Notes) qui sont de moins en moins utilisées.
  • Les RFC (Request For Comments) qui contiennent les dernières versions des spécifications de tous les protocoles TCP/IP standard.
  • Les standard militaires (MIL : Military standard).
  • Les RFC sont beaucoup moins rigoureux que la plupart des documents standard mais contiennent une quantité d'informations intéressantes et utiles qui ne se limite pas à la spécification formelle des protocoles de données.

Etant donné qu'il n'existe pas d'accord général concernant la description de TCP/IP à l'aide de modèle en couche, celui-ci est généralement représenté sous la forme d'un modèle dont le nombre de couche est inférieur à celui du modèle OSI qui en contient 7. Nous étudierons ici un modèle qui comporte 4 couches.

  • Couche Accès: Comporte les routines permettant d'accéder aux réseaux physiques.
  • Couche Internet: Définit le datagramme et prend en charge le routage des données.
  • Couche Transport Hôte à Hôte: Assure les services de transmission de données bout à bout.
  • Couche Application: Comporte les applications et processus utilisant le réseau.

Chaque couche de la pile ajoute des informations de contrôle de manière à garantir une transmission de données correcte.

Couche Accès Réseau

Les protocoles de cette couche fournissent au système les moyens nécessaires lui permettant de transmettre des données vers d'autres machines périphériques directement connectées sur le réseau. Elle définit l'utilisation de réseau afin de transmettre un datagramme IP.

La couche accès réseau TCP/IP peut intégrer les fonctions des trois couches inférieures du modèle de référence OSI (réseau, liaison de données, matériel).

Les utilisateurs ignorent souvent la couche accès réseau, la conception de TCP/IP cache les fonctions des couches inférieures. Les protocoles les mieux connus (IP, TCP, UDP, etc) correspondent à des protocoles de niveau supérieur.

Les fonctions qui sont exécutées à ce niveau comprennent l'encapsulation des datagrammes dans les trames transmises par le réseau et la mise en correspondance des adresses IP avec les adresse physique qu'utilise le réseau. L'une des grandes forces de TCP/IP réside dans son plan d'adressage qui permet d'identifier précisément chaque machine-hôte connectée à Internet. Cette adresse IP doit être convertie en l'adresse appropriée du réseau physique sur lequel le datagramme est transmis.

Couche INTERNET

Le protocole Internet est l'élément du réseau Internet, ses fonctions incluent:

  • La définition du datagramme, qui est l'unité de base des transmissions sur Internet.
  • La définition du plan d'adressage Internet.
  • La circulation de données entre la couche Accès Réseau et la couche Transport machine-hôte à machine-hôte.
  • l'acheminement des datagrammes vers les ordinateurs à distance.
  • La fragmentation et réassemblage des datagrammes.

Les datagrammes

Les protocoles TCP/IP ont été développés pour transmettre des données sur ARPANET, qui était un réseau à commutation de paquets. Le datagramme correspond au format de paquet défini par le protocole Internet.

Les 5 ou 6 premiers mots de 32 bits représentent les informations de contrôle appelées en-tête.

Puisque la longueur de l'en-tête est variable, elle induit un champ appelé longueur de l'en-tête en mots. L'en-tête contient toutes les informations nécessaires à la transmission du paquet.

Le protocole Internet transmet le datagramme en utilisant l'adresse de destination qui est une adresse IP standard de 32 bits permettant d'identifier le réseau de destination et la machine-hôte connectée à ce réseau.

Si l'adresse de destination correspond à l'adresse d'une machine-hôte connectée au réseau local, le paquet est transmis directement vers la destination. Dans le cas contraire, le paquet est transmis vers une passerelle afin d'être transmis à la machine-hôte. Les passerelles sont des périphériques qui transfèrent les paquets entre les différents réseaux physiques. Le routage correspond à la sélection de la passerelle à utiliser pour la transmission de données.

Acheminement des datagrammes

Il existe deux types de machines périphériques de réseau :

  • Les passerelles qui transmettent les paquets entre réseau.
  • Les machines-hôtes.
  • Les machines-hôtes (terminaux) traitent les paquets à travers les 4 couches de protocole alors que les passerelles (intermédiaires) traitent les paquets jusqu’à la couche Internet au sein de laquelle la voie de routage des données est déterminée.

    Fragmentation des datagrammes

    Puisqu'un datagramme est acheminé sur différents réseaux, il est parfois nécessaire que le module IP d'une passerelle divise le datagramme en élément de plus petite taille. Il se peut qu'un datagramme provenant d'un réseau soit trop long pour être transmis en un seul paquet sur un autre réseau.

    Chaque type de réseau se caractérise par une unité de transfert maximale (MTU) Maximum Transmission Unit, qui correspond au plus grand paquet que celui-ci puisse transférer. Si la longueur du datagramme provenant d'un réseau est supérieure à la MTU il est nécessaire de le diviser en fragment de plus petite taille. C'est ce qui se passe sur un Ethernet relié sur X25

    ICMP

    Une partie du protocole IP Correspond au protocole ICMP défini dans le RFC 792. Ce protocole est une partie intégrante de la couche Internet et réalise les fonctions suivantes.

    • Contrôle de flux (ICMP out of sequence)

    Lorsque les datagrammes arrivent trop rapidement pour être traités, l'élément destination renvoie un message de congestion qui indique à la source de suspendre temporairement l'envoi de datagrammes.

    • Détection de destination inaccessible (ICMP Network Unreachable)
    • Lorsqu'une destination s'avère inaccessible, le système qui détecte le problème envoie un message "Destination inaccessible" à la source. Si la destination est un réseau ou une machine-hôte, le message est envoyé via une passerelle intermédiaire. En revanche, si la destination est un port le machine de destination envoie le message.

    Redirection des voies (ICMP Redirect)

    Une passerelle envoie le message de redirection afin d'indiquer à une machine-hôte d'utiliser une autre passerelle, probablement parce que l'autre passerelle constitue un meilleur choix.

    Vérification des machines-hôtes à distances (PING)

    Une machine-hôte peut envoyer le message d'écho ICMP pour vérifier que le protocole Internet du système à distance est opérationnel.

    Couche TRANSPORT

    Les deux protocoles les plus important de la couche transports sont :

    • Le protocole de contrôle de la transmission (TCP)
    • Le protocole de datagramme utilisateur (UDP)
    • TCP assure un service de transmission de données fiable avec une détection et une correction d'erreurs de bout en bout. UDP offre un service de transmission de datagrammes sans connexion. Les deux protocoles transmettent des données entre la couche application et la couche Internet.

    Protocole UDP : User Datagram Protocol

    UDP est un protocole de datagramme sans connexion, peut fiable. Le protocole UDP permet aux applications d'accéder directement à un service de transmission de datagrammes, tel que le service de transmission qu'offre IP.

    Sur un ordinateur classique UDP transmet correctement les données. Il utilise les 16 éléments binaires du "port source" et du "port destination" contenus dans le premier mot de l'en-tête du message, afin de transmettre les données aux processus d'applications appropriées.

    UDP est utilisé pour transmettre de faibles quantités de données, où le coût de la création de connexions et au maintient de transmissions fiables s'avèrent probablement supérieur au travail dû à la retransmission de la totalité des données.

    UDP peut également être utilisé pour les applications satisfaisant à un modèle de type "interrogation réponse". La réponse étant utilisée comme un accusé de réception positif à l'interrogation.

    Protocole de contrôle de la transmission TCP

    TCP vérifie si les données sont correctement transmises sur le réseau et si elles sont dans l'ordre approprié. Les applications qui requièrent dès lors l'utilisation de protocole de transfert pour garantir une transmission des données fiable utilise alors TCP. C'est protocole fiable orienté connexion, à flot d'octets.

    L'utilisation d'un mécanisme appelé "accusé de réception positif avec la retransmission" (PAR : Positif Acknowlegment with Retransmission) permet à TCP de garantir des transmissions fiables. Le système PAR envoie de nouveau les données à moins que le système à distance ne lui renvoie à un message précisant que les données sont arrivées correctement. L'unité d'échange de données est appelée "segment". Chaque segment contient un total de contrôle que le destinataire utilise pour vérifier que les données n'ont pas été endommagées pendant leurs transmissions. Si le segment de données est reçu en parfait état, le récepteur envoie un accusé de réception positif à l'émetteur. Dans le cas contraire, le récepteur élimine ce segment de données. Après un délai d'attente déterminé, l'émetteur retransmet les segments pour lesquels aucun accusé de réception positif n'a été reçu.

    TCP est également responsable de la transmission des données provenant du protocole IP à l'application appropriée. Un numéro de 16 bits, appelé "numéro de port" permet d'identifier 'application destinatrice des données. Les numéros de "ports source" et "port destination" sont contenus dans le premier mot de l'en-tête du segment. La transmission correcte des données à destination et à partir de la couche application constitue une partie importante des activités que les services de la couche transport assurent.

    Couche Application

    La couche application constitue le sommet de l'architecture TCP/IP. Cette couche inclut tous les processus qui utilisent les protocoles de la couche transport pour transmettre des données. Il existe de nombreux protocoles d'application, la plupart assurent les services utilisateur; les nouveaux services sont toujours ajoutés au niveau de cette couche. Les protocoles d'applications les plus répandus sont:

    • TELNET, le protocole de terminal de réseau (Network Terminal Protocol), qui permet l'ouverture d'une session à distance sur un réseau.
    • FTP, le protocole de transfert de fichiers (File Transfert Protocole), qui est utilisé pour le transfert de fichiers. Ce transfert est interactif.
    • SMTP, le protocole de transfert de courrier (Simple Mail Transfert Protocole) qui est utilisé pour le courrier électronique.

    Bien que FTP, SMTP et TELNET soient les applications les liens qui TCP/IP les plus souvent utilisés. Il est possible d'en utiliser d'autres comme :

    • Le service DNS (Domain Name Service) également appelé Name service. Cette application établit la correspondance entre les adresses IP et les noms attribués aux machines-périphériques du réseau.
    • Le protocole RIP (Routing Information Protocol). Le routage est l'un des principaux éléments du fonctionnement de TCP/IP. Les systèmes en réseau utilisent RIP pour échanger des informations concernant le routage des données.
    • Le protocole NFS (Network File System) ce protocole permet de partager des fichiers entre différentes machines-hôtes du réseau.

    Cette figure permet de mieux visualiser les liens qui existent entre les différents protocoles d'une machine-hôtes déterminée. Les protocoles d'applications tels que TFP et TELNET se trouvent dans la partie supérieure de la figure. A chaque protocole est associé le numéro de RFC qui le définit.

    On peut constater que FTP, TELNET et SMTP dépendent de TCP, alors que NFS, DNS et RIP dépendent de UDP, quelques protocoles de type application, tels que le protocole de passerelle externe (EGP), qui est un autre protocole d'acheminement, n'utilisent pas les services de couche transport; ils utilisent directement les services IP.

    Les sockets

    Les "ports réservés" correspondent à des numéros de port standardisés permettant aux ordinateurs à distance de déterminer à quel port il doivent se connecter pour bénéficier d'un service de réseau particulier. De cette manière, le processus de connexion est simplifié, puisque l'émetteur et le récepteur connaissent à l'avance le port spécifique qui sera utilisé pour les données destinées à une opération déterminée. Exemple tous les systèmes offrant le service TELNET, le proposent sur le port 23.

    Il existe un deuxième type de numéro de port appelé "port alloué dynamiquement". Comme l'indique le nom, les ports alloués dynamiquement ne sont pas préattribués. Ils sont attribués aux opérations, si nécessaire. Le système s'assure qu'il n'attribue pas le même numéro de port à deux opérations et que les numéros attribués ne sont pas compris dans la plage des numéros de ports standard.

    Les ports attribués dynamiquement confèrent la flexibilité nécessaire au support de plusieurs utilisateurs. Si on attribue le numéro de port 23 comme ports source et de destination à un utilisateur TELNET, le deuxième utilisateur TELNET n'a plus de port attribué. Pour déterminer de manière unique chaque connexion, un numéro de port est alloué dynamiquement ce sont les sockets (qui seront développées en détail dans un autre chapitre).

    Ports et Protocoles

    Les Datagrammes IP utilisent le champ Protocole définissant le type de Protocole. Le fichier /etc/Protocol et /etc/services met en correspondance les services et les numéros de port.

    Le fichier /etc/services

    Ce fichier indique pour chaque service le numéro de port correspondant et le protocole utilisé sous la forme port/protocole, suivi d’un nom d’alias éventuel et d’un commentaire.

    exemple:

    • echo 7/udp
    • echo 7/tcp
    • ftp 21/tcp #file transfert program
    • telnet 23/tcp #program telnet
    • smtp 25/tcp mail
    • time 37/tcp timeserver

    Les ports sont utilisés par les protocoles TCP et UDP. TCP et UDP peuvent attribuer les mêmes numéros de Port. La combinaison des numéros de protocole et port identifie de manière spécifique l’application appropriée à laquelle les données doivent être transmises. Les numéros de Port sont des valeurs de 16bits. Le groupement d’une adresse IP et d’un numéro de port est appelé socket.