Docstoc

TCP

Document Sample
TCP Powered By Docstoc
					Annexe I :                                                                             TCP/IP



                        Les principaux protocoles de la pile TCP/IP


  Le transport de données d’une extrémité à une autre d’un réseau nécessite un support
physique ou Hertzien de communication. Cependant, pour que ces données arrivent
correctement au destinataire, avec la qualité de service exigée, il faut une architecture
logicielle.
Actuellement trois grandes architectures se disputent le marché mondial, la première est OSI
(Open System Interconnections), qui n’est que la normalisation de l’architecture ISO
(International   Standardisation    Organisation)   ,   l’UIT   (Union    Internationale   des
Télécommunication) pour environnement ATM (Asynchronous Transfer Mode), et le dernier
c’est celle qui nous intéresse la pile TCP/IP.
Le réseau IP le plus connu est bien sûr l’internent mondial (appelé communément Internet),
constitué de plusieurs centaines de millions d’ordinateurs et de dizaines de milliers de
réseaux. On appelle hôtes tous les ordinateurs connectés à Internet des serveurs les plus
puissants aux simples ordinateurs de bureau et assistants personnels.
Entre la fin des années 1960 et le début des années 1970, l’Agence fédérale américaine
DARPA (Defense Advanced Research Projects Agency) a financé la création du premier
réseau étendu à commutation de paquets : ARPANET. Ce réseau, réparti sur tout le pays,
reliait les principaux centres de recherche collaborant avec le ministère de la Défense
américain.
Le développement d’ARPANET ne s’arrête pas pour autant, les bases des protocoles TCP/IP
sont développées à ce moment, donc après que ARPANET soit opérationnel. En Juin 1978
Jon Postel définit IPv4 et en 1981 IP est standardisé dans la RFC 791. [LAI04]
L’Internet et les intranets (qui sont des réseaux IP privés d’entreprise) ont tous recours aux
protocoles TCP/IP. Étant donné le nombre d’attaques perpétrées depuis Internet, la
compréhension de ces protocoles s’avère cruciale.
Avant de détailler la pile ARPA, on introduit le model de référence c'est-à-dire le model OSI.


1. L’architecture OSI (Open Systems Interconnect Reference Model )
  L’OSI est une architecture à sept couches, chaque couche rend des services à la couche qui
est directement au dessus d’elle, et compte sur les fonctions de la couche qui est en dessous
d’elle. L’échange message dans ce model est vertical, d’une couche à une autre.



                                                                                           118
Annexe I :                                                                             TCP/IP


Une couche ne définit pas un protocole, elle délimite un service qui peut être réalisé par
plusieurs protocoles de différentes origines. Ainsi chaque couche peut contenir tous les
protocoles que l’on veut, pourvu que ceux-ci fournissent le service demandé à ce niveau du
modèle. [LUI04]


                            7
Couche Application                                             Couche Application



                            6
Couche présentation                                            Couche présentation



                            5
Couche Session                                                 Couche Session



                            4
Couche Transport                                               Couche Transport



                                3       Internet
Couche Réseau                                                  Couche Réseau
                                4       (réseau)



Couche Liaison                                                 Couche Liaison
                            2



Couche Physique                                                Couche Physique
                            1


       Machine A                                                    Machine B
                                    Figure 1 : Le Model OSI.
       La couche application (Application layer) est constituée de plusieurs programmes
        d’application ou services, qui se servent du réseau. Ils ne sont pas forcément
        accessibles par l’utilisateur car ils peuvent être réservés à un usage d’administration
        (telnet, ftp...).
       La couche de présentation (Présentation layer) met en forme les données suivant les
        standards locaux ou particuliers à l’application.


                                                                                           119
Annexe I :                                                                              TCP/IP


       La couche de session (Session layer) définit l'ouverture et la destruction des sessions
        de communication entre les machines du réseau.
       La couche de transport (Transport layer) est chargée du transport des données, de leur
        découpage en paquets, garantie aussi que le destinataire obtient exactement
        l’information qui lui a été envoyée. Cette couche met par exemple en oeuvre des
        règles de renvoi de l’information en cas d’erreur de réception.
       La couche réseau (Network layer) isole les couches hautes du modèle qui ne
        s’occupent que de l’utilisation du réseau, des couches basses qui ne s’occupent que de
        la transmission de l’information. permet de gérer l'adressage et le routage des données,
        c'est-à-dire leur acheminement via le réseau.
       La couche liaison donnée (Data link layer) définit l'interface avec la carte réseau et le
        partage du média de transmission.
       La couche Physique (Physical layer) définit la façon dont les données sont
        physiquement converties en signaux numériques sur le média de communication
        (impulsions électriques, modulation de la lumière, etc.).
    Du niveau 7 de l’application, au niveau 4 du transport, l’information circule dans ce que
l’on appelle un “ message ”, au niveau 3 elle se nomme “ paquet ”, puis “ trame ” au niveau 2
et “ signal ” au niveau 1. Chaque couche ne voit et ne sait communiquer qu’avec la couche
qui la précède et celle qui la suit.
Quand deux applications A et B discutent entre-elles via le réseau, les informations circulent
de la couche 7 vers la couche 2 quand A envoie de l’information, et de la couche 2 vers la
couche 7 pour que l’application B reçoive l’information de A. Le principe de base de cette
discussion repose sur le fait que chaque couche du modèle de la machine A est en relation
uniquement avec son homologue du même niveau de la machine B.
Quand l’information descend de la couche 7 vers la couche 1, chaque couche “encapsule”
(voir l’encapsulation) les données reçues avant de les transmettre (vers l’autre couche). Arrivé
à la couche 1, le volume d’information augmente de quelques centaines d’octets. Et de
manière symétrique, quand l’information remonte de la couche physique vers la couche
Application, chaque couche prélève les octets qui lui sont propres (données encapsulées),
ainsi l’application B ne voit que les octets envoyés par l’application A, sans le détail de
l’acheminement.
C’est sur ce principe qu’est bâtie la suite de protocoles désignée par TCP/IP.




                                                                                             120
Annexe I :                                                                              TCP/IP


2. La pile TCP/IP :
  La suite de protocoles désignée par TCP/IP, ou encore “ pile ARPA ”, est construite sur un
modèle en couches moins complet que la proposition de l’OSI.
Cette architecture est à la source du réseau mondial Internet, elle est aussi adoptée par de
nombreux réseaux privés « intranet », les deux principaux protocoles de cette architecture
sont TCP et IP.




                                   Figure 2 : La pile TCP/IP.
4 : Couche Application (Application layer).
3 : Couche Transport (Transport layer).
2 : Couche Internet (Internet layer).
1 : Couche interface réseau (Network access layer).
0 : Matériel (n’est pas une couche comprise dans le protocole).
Chaque couche contient plusieurs protocoles, et joue son rôle dans la communication :
      la couche interface n’est que l’interface avec le réseau.
      la couche Réseau ou couche IP gère la circulation et le routage des paquets à travers
       le réseau, elle comprend également les protocole : ICMP, IGMP, ARP, RARP.
      la couche transport gère la communication de bout en bout entre l’émetteur et le
       récepteur, régule le flux de donnés et assure un transport fiable (grâce à TCP) ou non
       fiable (grâce à UDP).
      la couche Application prend en charge les détails de communication d’une
       application tel que Telnet, FTP, SNMP. [STE98]


       Couche                                         Protocoles
       Couche Application         tel net, ftp, http....
       (Application layer).



                                                                                           121
Annexe I :                                                                                    TCP/IP


        Couche Transport               TCP, UDP
        (Transport layer).
        Couche Internet                IP, ICMP, IGMP, ARP, RARP.
        (Internet layer).


        interface réseau               Ethernet, ATM....
        (Network Access layer).




                                     Figure 3 : Les protocoles TCP/IP.
2.1 L’encapsulation
  Comme nous l’avons décrit avec le modèle des couches OSI, les couches IP fonctionnent
par encapsulations progressives. Lors d'une transmission, les données traversent chacune des
couches au niveau de la machine émettrice. A chaque couche, une information est ajoutée au
paquet de données, il s'agit d'un en-tête“ header ”, ensemble d'informations de contrôle qui
garantit la transmission. Au niveau de la machine réceptrice, lors du passage dans chaque
couche, l'en-tête est lu, puis supprimé. Ainsi, à la réception, le message est dans son état
original...

                                                    Données utilisateur
                                                                                Application
                                        Entête      Données utilisateur
                                       Applicatif

                                                                                 TCP
                            Entête         Données applicatives
                             TCP
                                        Segment TCP                               IP
               Entête       Entête         Données applicatives
                 IP          TCP

                               Datagramme IP                               Driver Ethernet
    Entête     Entête       Entête          Données applicatives          Remorque
    Ethernet     IP          TCP                                           Ethernet
                                        Trame Ethernet

                                     Figure 4 : l’encapsulation.
                                                                                                 122
Annexe I :                                                                                     TCP/IP


2.2 Les principaux protocoles de la pile TCP/IP
 2.2.1 Le protocole IP
 IP ou Internet protocole est un protocole de délivrance de datagrammes IP (paquets), mais
de manière non fiable, car on n’a pas l’assurance de la bonne réception des paquets transmis,
les paquet peuvent être altérés ou erronés.
L’entête IP : l’entête IP qui est rajoutée au moment de l’encapsulation a le format suivant :


                       Langueur        TOS
   Version (ipv4)        entête       (8 bits)                      Langueur du paquet
       (4 bits)         (4 bits)                                         (16 bits)
      Identification : identification des
         paquets du même fragment                    R      DF        MF        Offset du fragment
                    (16 bits)                      (1bit) (1bit) (1bit)
             TTL                 Protocole                 Somme de contrôle (check sum)
                                        Adresse IP destination.
                                            Adresse IP source.
                                Option IP                               bourrage


                                            Figure 5 : entête IP.
Version : représente la version du protocole IP utilisé, actuellement en utilise la version 4.
Langueur de l’entête IP : 4bits qui donnent la longueur de l’en-tête en mots de 32 bits.
La taille standard de cet en-tête est de 5 mots, C'est-à-dire la taille de l’entête (multiple de 4).
Type de service (TOS- type of service) : il indique la façon selon laquelle le datagramme doit
être traité. Ce champs est composé de :
    1. 3 bit de précédence (inutilisé aujourd’hui).
    2. 4 bit du type de service ces 4 bit peuvent prendre les valeurs 1, 2, 4,8 pour indiquer un
        service spécifique ou positionner à zéro pour indiquer un service normale ; les services
        sont : minimiser le débit, maximiser le débit, maximiser la qualité, minimiser le coût.
    3. un bit qui doit être mis a 0.
Langueur du paquet : indique la taille totale du paquet, comme il est sur 2 octets un paquet
ne peut dépasser 65536 octets. Ce champ permet de connaître la position des données, et il
est recalculé dans le cas de la fragmentation pour chaque fragment. Une des premières
attaques par saturation, baptisée Ping de la mort, avait recours à des paquets Ping d’une taille
supérieure à cette limite (voir figure 3.15). Elle affectait la plupart des premières versions de


                                                                                                     123
Annexe I :                                                                                TCP/IP


TCP/IP. Aujourd’hui, la grande majorité des systèmes d’exploitation sont conçus pour rejeter
automatiquement les paquets surdimensionnés.
Identification : contient une valeur unique pour chaque datagramme IP, ce champs est
important lors de l’assemblage des fragment du même paquet.
R : non utilisé pour l’instant.
DF (don’t fragment) : si ce bit est à 1 le paquet ne doit pas être fragmenter par le routeur, si le
MTU du routeur est plus petit que ce paquet, ce dernier est détruit et un message ICMP est
envoyé vers l’émetteur.
MF (more fragment) : indique si le datagramme est un fragment (mise à 1) ou non ; si MF= 0,
le datagramme est soit le dernier fragment ou n’a pas subi une fragmentation.
Offset du fragment : indique la position du fragment dans le paquet initiale.
Duré de vie (TTL- time to live): contient le nombre maximum de routeur que le paquet peut
traverser. Le TTL est décrémenté à chaque passage de routeur, si il est égale à 0 le paquet est
détruit, et un message d’erreur ICMP est envoyé à l’émetteur; ce champ permet d’éviter la
congestion du réseau. Le champ de durée de vie peut malheureusement s’avérer très utile aux
attaquants, en particulier en révélant d’importantes informations sur la nature des réseaux
qu’ils cherchent à infiltrer. L’usage hostile le plus courant de ce champ consiste à envoyer
plusieurs paquets d’une durée de vie d’une seule unité. Réduisant cette valeur à zéro, les
premiers routeurs rencontrés suppriment ces paquets et renvoient à l’attaquant un message
d’erreur contenant leur adresse IP. De nouvelles salves de paquets sont ensuite lancées, cette
fois avec des paquets d’une durée de vie de deux unités, puis trois, puis quatre, etc. La série
de messages d’erreurs renvoyés permet ainsi progressivement de cartographier le réseau
sondé par exemple Traceroot sous Unix utilise ce concept.
Protocole : ce champ détermine de quelle protocole est issue le paquet, TCP=6, UDP=17,
ICMP=1, IGMP=2. Les pare-feux ont recours à ce champ pour savoir de quelle manière filtrer
l’en-tête du paquet à traiter.
Somme de contrôle (header checksum) :16 bits pour s’assurer de l’intégrité de l’en-tête. Lors
du calcul de ce “ checksum ” ce champ est `a 0.
A la réception de chaque paquet, la couche calcule cette valeur, si elle ne correspond pas au
complément à un de tous les mots de 16 bits de l'en-tête celle le datagramme est oublié sans
envoi de message d’erreur. La valeur de la somme de contrôle introduite par l’expéditeur d’un
message se calcule à partir des valeurs des champs de l’entête IP. Le destinataire effectue le
même calcul et compare son résultat à la valeur affichée par le paquet. Si les deux sont
identiques, la transmission s’est probablement effectuée sans erreur.


                                                                                               124
Annexe I :                                                                            TCP/IP


Certaines personnes se méfient de cette méthode de contrôle en raison du manque de fiabilité
du protocole IP, l’absence de correction d’erreurs empêchant la retransmission des paquets
perdus ou défectueux. Ces derniers sont simplement supprimés en raison des dommages
pouvant être causés par des en-têtes corrompus. Le nouveau standard IP (IPv6) est censé
abandonner cette forme de protection, jugée superflue. [PAN04]
Adresse IP Destination : représente l’adresse IP du destinataire, il permet au destinataire de
répondre.
Adresse IP source : Adresse de l’émetteur.
Option IP : 24 bits pour préciser des options de comportement des couches IP traversées et
destinatrices. Les options les plus courantes concernent :
– Des problèmes de sécurité
– Des enregistrements de routes
– Des enregistrements d’heure
– Des spécifications de route à suivre
Historiquement ces options ont été prévues dés le début mais leur implémentation n’a pas été
terminée.
Pour des raisons de sécurité, la tendance est d’ignorer ce champ. Certains sites considèrent
même comme suspects les datagrammes contenants des “ IP OPTIONS ” ! [LAI04]
Bourrage : Remplissage pour aligner sur 32 bits.
 a- La Fragmentation des datagrammes IP
    Comme nous l'avons vu précédemment, la taille d'un datagramme maximale est de 65536
octets. Toutefois cette valeur n'est jamais atteinte car les réseaux n'ont pas une capacité
suffisante pour envoyer de ci gros paquets. De plus, les réseaux sur Internet utilisent
différentes technologies, si bien que la taille maximale d'un datagramme varie suivant le type
de réseau. L’une des premières attaques par saturation à exploiter la fragmentation des
paquets IP a été l’attaque Teardrop (vue dans le chapitre I).
La taille maximale d'une trame est appelée MTU (Maximum Transfer Unit), elle entraînera la
fragmentation du datagramme si celui-ci a une taille plus importante que le MTU du réseau.
 Type de réseau     MTU (en octets)
 Arpanet            1000
 Ethernet           1500
 FDDI               4470
La fragmentation d'un datagramme se fait au niveau des routeurs, c'est-à-dire lors de la
transition d'un réseau dont le MTU est important à un réseau dont le MTU est plus faible. Si


                                                                                          125
Annexe I :                                                                                      TCP/IP


le datagramme est trop grand pour passer sur le réseau, le routeur va le fragmenter, c'est-à-
dire le découper en fragments de tailles inférieures au MTU du réseau et de telle façon que la
taille du fragment soit un multiple de 8 octets
  b- L’Adressage IP
       Les adresses postales sont dites hiérarchiques dans le sens où leur contenu vient dans un
certain ordre, de l’information la plus précise à la plus générale : numéro et nom de la rue,
commune, code postal et pays. La plupart des centres de tri se contentent de vérifier le pays et
la ville du destinataire. Seuls les bureaux de poste et les facteurs s’intéressent au nom et au
numéro de rue. Partant de ce concept les adresses IP de 32 bits sont hiérarchiques, et sont
constituées de : [PAN04]
        L’adresse réseau informe sur le réseau auquel appartient l’expéditeur.
        L’adresse de sous réseau informe sur le sous réseau auquel appartient l’expéditeur à
         l’intérieur du réseau.
        L’adresse hôte spécifie l’hôte expéditeur au sein du sous réseau.
Les routeurs situés sur le chemin d’un paquet se contentent de consulter son adresse réseau et
de sous réseau, à l’exception du routeur chargé de remettre le paquet à son destinataire, qui en
plus vérifie le numéro d’hôte.
Toutes les adresses IP mesurent 32 bits; Une adresse IP est toujours représentée dans une
notation décimale pointée constituée de 4 nombres (1 par octet) compris chacun entre 0 et 255
et séparés par un point; par exemple 170.80.30.100 est une adresse valide.
Pour lire une adresse c'est-à-dire : déterminer l’adresse réseau et l’adresse hôte on observe la
configuration des premiers bits de l’adresse IP :
   1. Si le premier bit est égale à 0, la partie réseau est sur les 8 premiers bits (adresse de
         classe A).
   2. Si les deux premier bit sont égaux à 10, la partie réseau est sur les 16 premiers bits (
         classe B).
   3. si les 3 premiers bits de l’adresse sont égaux à 110, la partie réseau est sur les
         24premiers bits (classe C).
                                  0              8              16          24             31
                      Classe A    0                                    Host-id

                      Classe B    1 0         Net-id

                      Classe C    1 1 0                Net-id                    Host-id

                      Classe D    1 1 1 0                  Multicast

                      Classe E    1 1 1 1 0                 Réservé

                                      Figure 6 : les classes d’adresses.
                                                                                                   126
Annexe I :                                                                               TCP/IP


  c- Masque de réseau
     Un masque est un nombre de 32 bits. Les masques de réseau sont composés de 1 dans
l’adresse réseau et de 0 dans l’adresse de sous réseau et l’adresse hôte. En générale le routeur
l’utilise pour extraire la partie réseau de l’adresse IP, en appliquant un AND (le « et »
logique) entre le masque et l’adresse IP.
Les Adresse privées : On distingue deux types d’adresses IP. Les adresses privées que tout
administrateur de réseau peut s’attribuer librement pourvu qu’elle ne soient pas routées sur
l’Internet, et les adresses publiques, délivrées par une structure mondiale qui en assure
l’unicité.
Les adresses à utiliser sur les réseaux privés prennent les valeurs suivantes [LAI04]:
De 10.0.0.0 à 10.255.255.255 (ancien Arpanet !)
De 172.16.0.0 à 172.31.255.255
De 192.168.0.0 à 192.168.255.255
Les adresses publiques (souvent une seule), sont le plus généralement fournies par le
Fournisseur d’Accès Internet. Qu’elles soient délivrées de manière temporaire ou attribuées
pour le long terme, elles doivent être uniques sur le réseau.         C’est L’ICANN (Internet
Corporation for Assigned Names and Numbers) qui est chargé au niveau mondial de la
gestion de l’espace d’adressage IP.
2.2.2 Protocole ICMP
        ICMP est l’acronyme de “ Internet Control Message Protocol ”, ce protocole indique à
l’émetteur les problèmes rencontrés par les paquets. Nous avons vu que le protocole IP ne
vérifie pas si les paquets émis sont arrivés à leur destinataire dans de bonnes conditions.
Les paquets circulent d’un routeur vers un autre jusqu'à trouver un routeur qui peut les livrer
directement à l’hôte. Si un routeur ne peut pas router ou livrer le paquet ou un événement
anormal arrive sur le réseau comme un trafic trop important ou une machine indisponible, on
doit pouvoir informer l’émetteur ; pour cela ICMP est utilisé. Les messages d'erreur ICMP
sont transportés sur le réseau sous forme de datagrammes, comme n'importe quelle donnée.
Ainsi, les messages d'erreur peuvent eux-mêmes être sujet d'erreurs.
Toutefois en cas d'erreur sur un datagramme transportant un message ICMP, aucun message
d'erreur n'est délivré pour éviter un effet "boule de neige".
Rappelant que ICMP peut servir à des œuvres de malveillance (l’attaque smurf, ping of
death...).
                          Type        code     Somme de contrôle         Message
L’entête ICMP :
                         (8 bits)   (8 bits)        (16 bits)        (Taille variable)


                                      Figure 7 : Entête ICMP.
                                                                                              127
Annexe I :                                                                            TCP/IP


Type : indique le type de message ICMP, il y’a 15 messages différents.
Code : complète l’information du champ précèdent.
Somme de contrôle : s’assurer de l’intégrité de l’en-tête.


 2.2.3 Protocole UDP
 UDP (user Datagram Protocole) est un protocole de la couche transport, et est utilisé par des
applications qui n’exigent pas la fiabilité. Il fonctionne en mode non connecté, d’où sa
vulnérabilité. Chaque datagramme UDP est encapsulé dans le datagramme IP, avec le champ
protocole=17.
L’entête UDP a le format suivant :


                      N° du port source               N° port destination
                           (16 bits)                         (16 bits)
                          Langueur                   Somme de contrôle
                           (16 bits)                         (16 bits)

                                       Figure 8 : entête UDP
Port source : c’est le port de l’application qui a émis le datagramme.
Port destination : le numéro de port de l’application de la machine réceptrice.
Langueur : la taille du datagramme plus l’entête.
Usurpation de port UDP :
En raison de sa simplicité, UDP offre moins de possibilités d’attaques aux pirates que TCP.
En revanche, à l’instar de TCP, UDP est vulnérable à l’usurpation de port.
Insertion de datagramme UDP
L’utilisation de numéros de séquence rend difficile l’insertion de faux segments au sein des
échanges de paquets TCP. Pour que le segment intrus soit reconnu et accepté par le
destinataire, le hacker doit lui attribuer le bon numéro de séquence; or il s’agit là d’une
opération très délicate. Avec UDP, par contre, l’insertion de datagrammes indésirables dans
un flux de paquets ne pose pas de problème car le destinataire n’a aucun moyen de détecter la
supercherie.
 2.2.4 Protocole TCP
 TCP qui signifie Transmission Control Protocol, soit en français: Protocole de Contrôle de
Transmission est un des principaux protocoles de la couche transport du modèle TCP/IP. Il
permet, au niveau des applications, de gérer les données en provenance (ou à destination) de
la couche inférieure du modèle (c'est-à-dire le protocole IP). Lorsque les données sont


                                                                                          128
Annexe I :                                                                                  TCP/IP


fournies au protocole IP, celui-ci les encapsule dans des datagrammes IP, en fixant le champ
protocole à 6 (Pour savoir que le protocole en amont est TCP...). TCP est un protocole orienté
connexion, c'est-à-dire qu'il permet à deux machines qui communiquent de contrôler l'état de
la transmission.


Les principales caractéristiques du protocole TCP sont les suivantes:
        TCP permet de remettre en ordre les datagrammes en provenance du protocole IP
        TCP permet de vérifier le flot de données afin d'éviter une saturation du réseau
        TCP permet de formater les données en segments de longueur variable afin de les
         "remettre" au protocole IP
        TCP permet de multiplexer les données, c'est-à-dire de faire circuler simultanément
         des informations provenant de sources (applications par exemple) distinctes sur une
         même ligne
        TCP permet enfin l'initialisation et la fin d'une communication de manière courtoise
  a- Le but de TCP
       Grâce au protocole TCP, les applications peuvent communiquer de façon sûre (grâce au
système d'accusés de réception du protocole TCP), indépendamment des couches inférieures.
Cela signifie que les routeurs (qui travaillent dans la couche Internet) ont pour rôle
l'acheminement des données sous forme de datagrammes, sans se préoccuper du contrôle des
données, car celui-ci est réalisé par la couche transport. Les machines dans un tel
environnement communiquent en full duplex.
Pour permettre le bon déroulement de la communication et de tous les contrôles qui
l'accompagnent, les données sont encapsulées.
Une autre particularité de TCP est de pouvoir réguler le débit des données grâce à sa capacité
à émettre des messages de taille variable, ces messages sont appelés segments.
  b- La fonction de multiplexage/démultiplexage
       TCP permet d'effectuer une tâche importante: le multiplexage/démultiplexage, c'est-à-
dire faire transiter sur une même ligne des données provenant d'applications diverses ou en
d'autres mots mettre en série des informations arrivant en parallèle.
Ces opérations sont réalisées grâce au concept de ports (ou sockets), c'est-à-dire un numéro
associé à un type d'application, qui combiné à une adresse IP ; permet de déterminer de façon
unique une application qui tourne sur une machine donnée.




                                                                                               129
Annexe I :                                                                                 TCP/IP


L’entête TCP qui est encapsuler a la couche IP avec le champ protocole égale à 6, a le format
suivant :
                  Port source (16 bits)                   Port destination (16 bits)
                                    N° de séquence (32 bits)
                                  N° d’acquittement (32 bits)
      Taille     Bits       U A P R S F
      En-tête réservés R C S S Y I                        Taille de la fenêtre (16 bits)
      (4bits)    (6 bits)   G K H T N N
               Somme de contrôle (16 bits)                Pointeur Urgent (16 bits)
                                     Option (taille variable)
                                    Figure 10 : en-tête TCP.
Port source : c’est le port de l’application qui a émis le datagramme.
Port destination : le numéro de port de l’application de la machine réceptrice.
Numéro de séquence : C’est un nombre qui identifie la position des données à transmettre
par rapport au segment original. Au démarrage de chaque connexion, ce champ contient une
valeur non nulle et non facilement prévisible, c’est la séquence initiale ou ISN. Si quelqu’un
peut deviner le numéro de séquence il peut facilement usurper l’identité d’un autre.
Numéro d’acquittement : C’est un numéro qui identifie la position du dernier octet reçu
dans le flux entrant. Il doit s’accompagner du drapeau ACK (voir plus loin).
Longueur d’entête : essentielle pour déterminer le début des donnés TCP dans le paquet.
Bits réservés : inutilisé actuellement, réservé pour un future besoin.
Les drapeaux (flags) : Six bits pour influer sur le comportement de TCP en caractérisant
l’usage du segment :
URG : si ce drapeau est égale à 1, le paquet doit être traité de manière urgente.
ACK : si ce drapeau est égale à 1, accusé de réception.
PSH : si ce drapeau est égale à 1, le paquet fonctionne selon le mode push.
RST : si ce drapeau est égale à 1, réinitialisation de la connexion.
SYN : si ce drapeau est égale à 1, synchronisation des numéros de séquences.
FIN : si ce drapeau est égale à 1, interruption de la connexion.
Ces flags peuvent être utilisés pour des attaques telle que l’Attaques par sonde SYN/ACK :
Soit un processus de couche Transport qui envoie un segment SYN/ACK au processus
homologue d’un autre hôte n’ayant émis aucun segment SYN au préalable. Ce dernier,
victime de cette attaque, répond par un segment RST pour indiquer son refus. Le problème est



                                                                                              130
Annexe I :                                                                              TCP/IP


que le paquet IP porteur du segment RST contient l’adresse IP de son expéditeur, information
précieuse pour tout attaquant cherchant à identifier les adresses IP actives d’un réseau donné
pour l’assaillir. L’envoi de paquets SYN/ACK à toutes les adresses d’un groupe d’adresses IP
est un très bon moyen de planifier une attaque contre un réseau.
Taille fenêtre : indique le nombre d’octets que le récepteur peut accepter à partir du numéro
d’acquittement. Et c’est le nombre d’octets que le récepteur souhaite recevoir sans accusé de
réception.
Somme de contrôle : contrôle d’intégrité de l’en-tête.
Pointeur d’urgent : ce champ a une signification dans le cas ou le drapeau URG=1, il
indique le numéro de séquence à partir du quel l’information devient urgente.
Option : ce champ permet de définir plusieurs option, comme par exemple la taille maximale
d’un segment.
  c- Etablissement d’une connexion (three-way handshake)
      L’établissement d’une connexion TCP s’effectue on 3 étapes, comme le montre la figure:
                           Emetteur                                Récepteur




                                     SYN (seq = x)




                                    SYN (seq = y) +ACK (seq =x + 1)
                                                                           Temps
                                         ACK (seq=y+1)

                                    Figure 11 : poigné de main.

L’émetteur du premier paquet est à l’origine de l’établissement du circuit virtuel, c’est une
attitude généralement qualifiée de “cliente”. On dit aussi que le client effectue une “ouverture
active” (active open).
Le récepteur du premier paquet accepte l’établissement de la connexion, ce qui suppose qu’il
était prêt à le faire avant que la partie cliente en prenne l’initiative. C’est une attitude de “
serveur ”. On dit aussi que le serveur effectue une “ouverture passive ” (passive open).
1. Le client envoie un segment comportant le drapeau SYN, avec sa séquence initial (ISN =
x).



                                                                                             131
Annexe I :                                                                                TCP/IP


2. Le serveur répond avec sa propre séquence (ISN = y), mais il doit également acquitter le
paquet précèdent avec ACK (seq =x + 1).
3. Le client doit acquitter le deuxième segment avec ACK (seq = y + 1).
  d- Transfert de données
     Le transfert de données peut alors commencer avec les numéros de séquence en cours.
Le contrôle de flux est réalisé dans les deux sens par les numéros d’acquittement (le bit ACK
est alors positionné à 1). La taille de la fenêtre de transmission sans acquittement est fixée par
le destinataire avant envoi du premier segment. Comme pour le protocole HDLC, lorsque
l’émetteur n’a pas reçu d’acquittement après expiration d’un délai programmé, une
retransmission des segments non acquittés est réalisée.
  e- Fermeture d’une connexion
     La fermeture d’une connexion est réalisée lorsque le récepteur reçoit un en-tête TCP dont
le bit FIN est positionné à 1 (figure 10). La demande est traitée dans les deux sens au niveau
supérieur avant acquittement.


                    Emetteur                              Récepteur
                      Close              FIN (seq = x)
                                                                      Envoi d’un EOF à
                                                                       L’application
                                     ACK (seq = x+1)




                                                                        Flux de données
                                                                        du récepteur vers
                                                                         émetteur


                                               FIN (seq = y)        close


                                            ACK (seq = y+1)                      Temps
         Envoi d’un EOF à
             l’application
                                      Figure 12 : fin de connexion.



                                                                                              132
Annexe I :                                                                             TCP/IP


  f- Comparaison TCP et UDP
    Le tableau suivant illustre la différence entre TCP et UDP :




             caractéristique                      TCP                  UDP
   Orienter connexion                             oui                  non
   Circuit virtuel                                oui                  non
   Fiabilité (contrôle d’erreur)                  oui                  non
   Contrôle de flux                               oui                  non
   Multiplexage                                   oui                  oui
   Taille des messages                            Illimitée            64 Ko


 2.2.5 Les protocoles de résolution d’adresses ARP et RARP
 Les adresses IP sont attribuées indépendamment des adresses physiques des machines
(chaque carte réseau a une adresse physique unique sur 48 bits),
Pour envoyer un datagramme sur Internet, l’adresse IP est convertie en une adresse physique,
utilisée pour transmettre la trame.
C’est ARP (Adresse Resolution Protocole) qui effectue cette traduction en s’appuyant sur le
réseau physique, puisque chaque machine ignore l’adresse physique du destinataire, ARP est
utilisé par la machine pour trouver l’adresse physique du destinataire, et cela en diffusant sur
le réseau (sous-réseau) une requête ARP qui contient l’adresse IP à traduire, puis la machine
possédant l’adresse IP concernée répond en envoyant sont adresse physique. ARP permet aux
machines de résoudre les adresses sans avoir besoin de table statique. Pour rendre ARP plus
performant, chaque machine tient à jour, en mémoire, une table des adresses résolues et réduit
ainsi le nombre d’émission en mode diffusion (le mode diffusion coûte beaucoup en bande
passante).
Au moment de son initialisation (bootstrap), une machine sans mémoire de masse (diskless),
doit contacter son serveur pour déterminer son adresse IP.Et pouvoir utiliser les services de
TCP/IP.
Le protocole RARP (Reverse ARP) Permet à une machine d’utiliser son adresse physique
pour déterminer son adresse sur Internet, et cela en diffusant une requête RARP. Les serveurs
recevant le message examinent leur table et répandent au client une fois l’adresse IP obtenue,




                                                                                            133
Annexe I :                                                                               TCP/IP


la machine la stocke dans sa mémoire vive et ne réutilise RARP qu’a sa prochaine
réinitialisation.
Dans l’IPv 6, ARP et RARP ne sont plus utilisés, ils sont remplacées par un protocole de
découverte de voisins, ND (Neighbor Discovery) qui est un sous ensemble du protocole
ICMP.[PUJ03]


 2.2.6 Le Protocole IGMP
 IGMP “ Internet Group Management Protocol ”, Sa raison d’être est que les datagrammes
ayant une adresse multicast sont à destination d’un groupe d’utilisateurs dont l’émetteur ne
connaît ni le nombre ni l’emplacement. L’usage du multicast étant par construction dédié aux
applications comme la radio ou la vidéo sur le réseau, donc consommatrices de bande
passante, il est primordial que les routeurs aient un moyen de savoir s’il y a des utilisateurs de
tel ou tel groupe sur les LANs directement accessibles pour ne pas encombrer les bandes
passantes associées avec des flux d’octets que personne n’utilise plus.
IGMP est un protocole de communication entre les routeurs susceptibles de transmettre des
datagrammes multicast et des hôtes qui veulent s’enregistrer dans tel ou tel groupe. IGMP est
encapsulé dans IP avec le protocole numéro, sa taille est fixe (contrairement à ICMP)
seulement 2 mots de 4 octets.


             version     type       Inutilisé            Checksum (16 bits)
             (4 bits)   (4bits)
                                  Adresse du groupe (32 bits)


                                    Figure 13: entête IGMP.
Version : version 1.
Type : Ce champ prend deux valeurs, 1 pour dire qu’il s’agit d’une question (query d’un
routeur), 2 pour dire qu’il s’agit de la réponse d’un hôte.
Checksum Le checksum est calculé comme celui d’ICMP.
Adresse C’est l’adresse multicast (classe D) à laquelle appartient l’hôte qui répond.
La RFC 1112 précise que les routeurs multicast envoient des messages de questionnement
(Type=Queries) pour reconnaıtre quels sont les éventuels hôtes appartenant à quel groupe.
Ces questions sont envoyées à tous les hôtes des LANs directement raccordés à l’aide de
l’adresse multicast du groupe encapsulé dans un datagramme IP ayant un champ TTL=1. Les
hôtes, dont les interfaces ont été correctement configurées, répondent à une question par


                                                                                              134
Annexe I :                                                                            TCP/IP


autant de réponses que de groupes auxquels ils appartiennent sur l’interface réseau qui a reçu
la question.


 3.2.7 Le protocole HTTP
 Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilisé sur Internet
depuis 1990. La version 0.9 était uniquement destinée à transférer des données sur Internet
(en particulier des pages Web écrites en HTML. La version 1.0 du protocole (la plus utilisée)
permet désormais de transférer des messages avec des en-têtes décrivant le contenu du
message en utilisant un codage de type MIME. Le but du protocole HTTP est de permettre un
transfert de fichiers (essentiellement au format HTML) localisé grâce à une chaîne de
caractères appelée URL entre un navigateur (le client) et un serveur Web (appelé d'ailleurs
httpd sur les machines UNIX)
  a- Communication entre navigateur et serveur
       La communication entre le navigateur et le serveur se fait en deux temps:




                      Figure14 : Schéma de communication client serveur

       Le navigateur effectue une requête HTTP
       Le serveur traite la requête puis envoie une réponse HTTP

  a- Requête http
       Une requête HTTP est un ensemble de lignes envoyé au serveur par le navigateur. Elle
       comprend:

       une ligne de requête: c'est une ligne précisant le type de document demandé, la
        méthode qui doit être appliqué, et la version du protocole utilisée. La ligne comprend
        trois éléments qui doivent être séparés par un espace:
             o   La méthode
             o   L'URL


                                                                                          135
Annexe I :                                                                                     TCP/IP


             o       La version du protocole utilisé par le client (généralement HTTP/1.0)
        Les champs d'en-tête de la requête: il s'agit d'un ensemble de lignes facultatives
         permettant de donner des informations supplémentaires sur la requête et/ou le client
         (Navigateur,système d'exploitation,...). Chacune de ces lignes est composée d'un nom
         qualifiant le type d'en-tête, suivi de deux points (:) et de la valeur de l'en-tête
        Le corps de la requête: C'est un ensemble de ligne optionnel qui doivent être
         séparées par des lignes précédentes par une ligne vide et permettant par exemple un
         envoi de données par une commande POST lors de l'envoi de données au serveur par
         un formulaire.

Une requête HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne):

METHODE URL VERSION<crlf>
EN-TETE : Valeur<crlf>
.
.
.
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REQUETE


Voici donc un exemple de requête HTTP:


GET http://www.commentcamarche.net HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Commande
Commande              Description
GET                   Requête de la ressource située à l'URL spécifié
HEAD                  Requête de la ressource située à l'URL spécifié
POST                  Envoi de données au programme situé à l'URL spécifié
PUT                   Envoi de données à l'URL spécifié
    b- Réponse http
Une réponse HTTP est un ensemble de lignes envoyé au navigateur par le serveur. Elle
comprend:



                                                                                                  136
Annexe I :                                                                                  TCP/IP


         une ligne de statut: c'est une ligne précisant la version du protocole utilisé et l'état du
          traitement de la requête à l'aide d'un code et d'un texte explicatif. La ligne comprend
          trois éléments devant être séparé par un espace:
              o    La version du protocole utilisé
              o    Le code de statut
              o    La signification du code
         Les champs d'en-tête de la réponse: il s'agit d'un ensemble de lignes facultatives
          permettant de donner des informations supplémentaires sur la réponse et/ou le serveur.
          Chacune de ces lignes est composé d'un nom qualifiant le type d'en-tête, suivi de deux
          points (:) et de la valeur de l'en-tête
         Le corps de la réponse: Il contient le document demandé

Une réponse HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de
ligne):

VERSION-HTTP CODE EXPLICATION<crlf>


EN-TETE : Valeur<crlf>


EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REPONSE



Voici donc un exemple de réponse HTTP:
HTTP/1.0 200 OK
Date: Sat, 15 Jan 2000 14:37:12 GMT
Server: Microsoft-IIS/2.0
Content-Type: text/HTML
Content-Lentgh : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT


 2.2.8 Le protocole FTP

          Le protocole FTP (File Transfer Protocol) est, comme son nom l'indique, un protocole
de transfert de fichier. La mise en place du protocole FTP date de 1971, date à laquelle un
mécanisme de transfert de fichiers entre les machines du MIT (Massaschussetts Institute of
Technology) avait été mis au point. De nombreux RFC ont ensuite apporté des améliorations



                                                                                                 137
Net-id
Host-id
Classe D


           Annexe I :                                                                              TCP/IP


           au protocole de base, mais les plus grandes innovations datent de juillet 1973. Le protocole
           FTP est actuellement défini par le RFC 959 (File Transfer Protocol (FTP) - Specifications).
           Le rôle du protocole FTP

                    Le protocole FTP définit la façon selon laquelle des données doivent être transférées
           sur un réseau TCP/IP. Le protocole FTP a pour objectifs de :

                   permettre un partage de fichiers entre machines distantes
                   permettre une indépendance aux systèmes de fichiers des machines clientes et serveur
                   permettre de transférer des données de manière efficace

                  2.2.9 Le protocole Telnet

            Le protocole Telnet est un protocole standard d'Internet permettant l'interfaçage de
           terminaux et d'applications à travers Internet. Ce protocole fournit les règles de base pour
           permettre de relier un client (système composé d'un affichage et d'un clavier) à un interpréteur
           de commande (côté serveur). Le protocole Telnet s'appuie sur une connexion TCP pour
           envoyer des données au format ASCII codées sur 8 bits entre lesquelles s'intercalent des
           séquences de contrôle Telnet. Il fournit ainsi un système orienté communication,
           bidirectionnel (half-duplex), codé sur 8 bits facile à mettre en oeuvre. Ce protocole est un
           protocole de base, sur lequel s'appuient certains autres protocoles de la suite TCP/IP (FTP,
           SMTP, POP3, ...). Les spécifications de Telnet ne mentionnent pas d'authentification car
           Telnet est totalement séparé des applications qui l'utilisent (le protocole FTP définit une
           séquence d'authentification au-dessus de Telnet). En outre le protocole Telnet est un protocole
           de transfert de données non sûr, c'est-à-dire que les données qu'il véhicule circulent en clair
           sur le réseau (de manière non chiffrée). Lorsque le protocole Telnet est utilisé pour connecter
           un hôte distant à la machine sur lequel il est implémenté en tant que serveur, ce protocole est
           assigné au port 23. Hormis les options et les règles de négociation associées, les spécifications
           du protocole Telnet sont basiques. La transmission de données à travers Telnet consiste
           uniquement à transmettre les octets dans le flux TCP (le protocole Telnet précise tout de
           même que les données doivent par défaut (c'est-à-dire si aucune option ne précise le contraire)
           être groupées dans un tampon avant d'être envoyées. Plus exactement cela signifie que par
           défaut les données sont envoyées ligne par ligne). Lorsque l'octet 255 est transmis, l'octet
           suivant doit être interprété comme une commande. L'octet 255 est ainsi nommé IAC (Interpret
           As Command, traduisez Interpréter comme une commande).


                                                                                                        138

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:7
posted:11/27/2012
language:French
pages:21