Les protocoles réseaux

Qu'est ce qu'un protocole et à quoi sert-il ?

Un protocole de communication est un ensemble de règles et de procédures permettant de définir un type de communication particulier. Les protocoles sont hiérarchisés en couches, pour décomposer et ordonner les différentes tâches. Il existe plusieurs familles de protocoles ou modèles, chaque modèle étant une suite de protocoles entre diverses couches. Parmis ces modèles on trouve le OSI et le TCP/IP.

Les modèles OSI et TCP/IP

Le modèle OSI ou Open Systems Interconnection, créé en 1978 par l' organisation internationale de normalisation (ISO), a pour objectif de constituer un modèle de référence d'un réseau informatique et ceci dans le but de permettre la connexion entre les architectures propriétaires hétérogènes qui existaient. Ce modèle est constitué de sept couches dont chacune correspond à une fonctionnalité particulière d'un réseau. Les quatres premières couches dites basses, assurent l'acheminement des informations entre les extrémités concernées et dépendent du support physique. Les trois autres couches, dites hautes, sont responsables du traitement de l'information relative à la gestion des échanges entre systèmes informatiques. Le modèle TCP/IP, insipré du modèle OSI, reprend le système de couches mais n'en contient que cinq. Le modèle TCP/IP l'emporte sur le modèle OSI du fait que ce dernier est trop complexe pour être éfficacement implémenté à l'inverse du TCP/IP qui est beaucoup plus optimisé et efficace.

Couche Modèle OSI Modèle TCP/IP Description Exemples de protocoles du modèle TCP/IP
7 couche application Couche application Elle assure l'interface avec les applications. Il s'agit donc du niveau le plus proche des utilisateurs, géré directement par les logiciels. FTP, SSH, SFTP, DNS,HTTP, H323, IMAP, NFS,POP3, Samba, SNMP, JXTA, RIP,SMTP, Telnet, FIX
6 couche présentation
5 couche session
4 couche de transport Couche Transport (TCP) Elle est chargée du transport des données, de leur découpage en paquets et de la gestion des éventuelles erreurs de transmission. Les protocoles de transport déterminent aussi à quelle application chaque paquet de données doit être délivré. TCP, UDP, RTP
3 couche de réseau Couche Internet
(IP)
Elle permet de gérer l'adressage et le routage des données, c'est-à-dire leur acheminement via le réseau. Elle permet l'acheminement des datagrammes (paquets de données) vers des machines distantes ainsi que de la gestion de leur fragmentation et de leur assemblage à réception. IP, ICMP, IGMP, ARP
2 couche de liaison des données Couche accès réseau
ou liaison
Elle spécifie comment les paquets sont transportés sur la couche physique, et en particulier les séquences particulières de bits qui marquent le début et la fin des paquets (le tramage). Cette couche est parfois subdivisée en deux sous couches nommées LLC et MAC. Ethernet, ATM, Token ring, SLIP
1 couche physique Couche physique Elle décrit les caractéristiques physiques de la communication comme les conventions à propos de la nature du medium utilisé pour les communications (les câbles, les liens par fibre optique ou par radio), et tous les détails associés comme les connecteurs, les types de codage ou de modulation, le niveau des signaux, les longueurs d'ondes, la synchronisation et les distances maximales. électronique, radio, laser

Encapsulation des données

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, ensemble d'informations 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 originel.

encapsulation

Exemple d'une communication réseau HTTP

A l'aide de l'analyseur de protocole réseau "Ethereal" j'ai pu sniffer les informations qui arrivent sur le réseau. Je montre ici une communication HTTP, le chargement de la page web http://www.zeitoun.net.

On distingue clairement les différentes couches du modèle TCP/IP, expliquées plus haut dans le document.

Au niveau de la couche "accès réseau"

Nous observons le protocole Ethernet dont les deux attributs importants sont les adresses physiques (MAC) des cartes réseaux.

Ethernet II, Src: AsustekC_c9:f7:78 (00:11:d8:c9:f7:78), Dst: 3com_44:8c:88 (00:0a:5e:44:8c:88)
    Destination: 3com_44:8c:88 (00:0a:5e:44:8c:88)
    Source: AsustekC_c9:f7:78 (00:11:d8:c9:f7:78)
    Type: IP (0x0800)

Au niveau de la couche "Internet"

Nous observons le protocole IP dont les deux attributs importants sont les adresses IP source et destination.

Internet Protocol, Src: 192.168.0.70 (192.168.0.70), Dst: 213.251.133.196 (213.251.133.196)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 500
    Identification: 0x4152 (16722)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0xdb03 [correct]
    Source: 192.168.0.70 (192.168.0.70)
    Destination: 213.251.133.196 (213.251.133.196)

Au niveau de la couche "transport"

Nous observons le protocole TCP qui contient les informations des ports de la connexion.

Transmission Control Protocol, Src Port: 33276 (33276), Dst Port: www (80), Seq: 1, Ack: 1, Len: 448
    Source port: 33276 (33276)
    Destination port: www (80)
    Sequence number: 1    (relative sequence number)
    Next sequence number: 449    (relative sequence number)
    Acknowledgement number: 1    (relative ack number)
    Header length: 32 bytes
    Flags: 0x0018 (PSH, ACK)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 5840 (scaled)
    Checksum: 0x1e95 [incorrect, should be 0x989d]
    Options: (12 bytes)
        NOP
        NOP
        Time stamp: tsval 36207655, tsecr 148502841

Au niveau de la couche "application"

Nous observons le protocole HTTP : un client web tente de se connecter sur le site web www.zeitoun.net en utilisant la méthode GET.

Hypertext Transfer Protocol
    GET / HTTP/1.1\r\n
        Request Method: GET
        Request URI: /
        Request Version: HTTP/1.1
    Host: www.zeitoun.net\r\n
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6\r\n
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n
    Accept-Language: en-us,en;q=0.5\r\n
    Accept-Encoding: gzip,deflate\r\n
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n
    Keep-Alive: 300\r\n
    Connection: keep-alive\r\n
    Cookie: PHPSESSID=cd212b11276ada1bfa58dce3090575c2\r\n
    \r\n

0000  00 0a 5e 44 8c 88 00 11 d8 c9 f7 78 08 00 45 00   ..^D.......x..E.
0010  01 f4 41 52 40 00 40 06 db 03 c0 a8 00 46 d5 fb   ..AR@.@......F..
0020  85 c4 81 fc 00 50 a5 a7 3d 4f 24 7a 52 71 80 18   ...P..=O$zRq....
0030  05 b4 1e 95 00 00 01 01 08 0a 02 28 7c 27 08 d9   ...........(|'..
0040  f9 39 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31   .9GET / HTTP/1.1
0050  0d 0a 48 6f 73 74 3a 20 77 77 77 2e 7a 65 69 74   ..Host: www.zeit
0060  6f 75 6e 2e 6e 65 74 0d 0a 55 73 65 72 2d 41 67   oun.net..User-Ag
0070  65 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 35 2e 30   ent: Mozilla/5.0
0080  20 28 58 31 31 3b 20 55 3b 20 4c 69 6e 75 78 20    (X11; U; Linux 
0090  69 36 38 36 3b 20 65 6e 2d 55 53 3b 20 72 76 3a   i686; en-US; rv:
00a0  31 2e 37 2e 31 30 29 20 47 65 63 6b 6f 2f 32 30   1.7.10) Gecko/20
00b0  30 35 30 37 31 36 20 46 69 72 65 66 6f 78 2f 31   050716 Firefox/1
00c0  2e 30 2e 36 0d 0a 41 63 63 65 70 74 3a 20 74 65   .0.6..Accept: te
00d0  78 74 2f 78 6d 6c 2c 61 70 70 6c 69 63 61 74 69   xt/xml,applicati
00e0  6f 6e 2f 78 6d 6c 2c 61 70 70 6c 69 63 61 74 69   on/xml,applicati
00f0  6f 6e 2f 78 68 74 6d 6c 2b 78 6d 6c 2c 74 65 78   on/xhtml+xml,tex
0100  74 2f 68 74 6d 6c 3b 71 3d 30 2e 39 2c 74 65 78   t/html;q=0.9,tex
0110  74 2f 70 6c 61 69 6e 3b 71 3d 30 2e 38 2c 69 6d   t/plain;q=0.8,im
0120  61 67 65 2f 70 6e 67 2c 2a 2f 2a 3b 71 3d 30 2e   age/png,*/*;q=0.
0130  35 0d 0a 41 63 63 65 70 74 2d 4c 61 6e 67 75 61   5..Accept-Langua
0140  67 65 3a 20 65 6e 2d 75 73 2c 65 6e 3b 71 3d 30   ge: en-us,en;q=0
0150  2e 35 0d 0a 41 63 63 65 70 74 2d 45 6e 63 6f 64   .5..Accept-Encod
0160  69 6e 67 3a 20 67 7a 69 70 2c 64 65 66 6c 61 74   ing: gzip,deflat
0170  65 0d 0a 41 63 63 65 70 74 2d 43 68 61 72 73 65   e..Accept-Charse
0180  74 3a 20 49 53 4f 2d 38 38 35 39 2d 31 2c 75 74   t: ISO-8859-1,ut
0190  66 2d 38 3b 71 3d 30 2e 37 2c 2a 3b 71 3d 30 2e   f-8;q=0.7,*;q=0.
01a0  37 0d 0a 4b 65 65 70 2d 41 6c 69 76 65 3a 20 33   7..Keep-Alive: 3
01b0  30 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20   00..Connection: 
01c0  6b 65 65 70 2d 61 6c 69 76 65 0d 0a 43 6f 6f 6b   keep-alive..Cook
01d0  69 65 3a 20 50 48 50 53 45 53 53 49 44 3d 63 64   ie: PHPSESSID=cd
01e0  32 31 32 62 31 31 32 37 36 61 64 61 31 62 66 61   212b11276ada1bfa
01f0  35 38 64 63 65 33 30 39 30 35 37 35 63 32 0d 0a   58dce3090575c2..
0200  0d 0a                                             ..

Conclusion

Ce document définit ce qu'est un protocole en informatique, et décrit le fonctionnement de deux familles de protocoles le modèle OSI et le modèle TCP/IP. Le modèle OSI étant très complexe et inadapté aux communications entre ordinateurs, est amené à disparaître au profit de TCP/IP. C'est pour cette raison que dans ce document, j'ai majoritairement parlé du modèle TCP/IP et de ses cinq couches. J'ai ainsi montré, et cela à l'aide d'un analyseur de protocole réseau, l'encapsulation des données.