INFO 3020 Introduction aux réseaux d’ordinateurs Philippe Fournier-Viger Département d’informatique, U.de M. Bureau D216, Automne
Aujourd’hui Chapitre 4 – couche transport (suite) ◦ Le protocole TCP (fin) ◦ Le protocole UDP ◦ Les codes de détection d’erreurs Autres ◦ netstat ? connexions TCP, mais aussi adresses IP de l’ordinateur distant. 2
La couche « transport » du modèle OSI TCP, UDP … HTTP, FTP… IP … 3
LE PROTOCOLE UDP 4
Le protocole UDP RFC 768 offre des fonctions de base de la couche transport, les unités de données envoyées par UDP sont appelés des datagrammes, pas de connexion, ◦ pas de mécanisme de retransmission, ◦ pas d’ordonnancement, ◦ pas de contrôle de flux 5
Le protocole UDP (suite) transmission « au mieux » détection d’erreur notion de ports son utilisation créé moins de surcharge que TCP: ◦ les données sont envoyées directement sans avoir besoin d’établir une connexion, ◦ utilise une entête de 8 octets au lieu de 20 octets, 6
Le protocole UDP (suite) Ex. de protocoles basés sur UDP: DNS, DHCP, RIP, SNTP… Ex. d’applications: téléphonie, jeux en ligne, vidéo, … ◦ il est important que les informations arrivent rapidement à destination, ◦ perte de données acceptable. 7
Le protocole UDP (suite) UDP est souvent utilisé pour envoyer des données qui entrent dans un seul datagramme. Si les données ne peuvent entrer dans un seul datagramme, plusieurs datagrammes doivent être envoyés. L’ordonnancement et réassemblage n'est pas géré par UDP. Si l’ordre est important, cela doit être géré par l’application 8
Réception des datagrammes UDP 9
Comparaison du format UDP et TCP 10
Taille d’un datagramme Taille maximale théorique: ◦ octets, car le champs « longueur » est sur 16 bits. ◦ il faut enlever 8 octets pour l’entête, donc il reste octets. Taille maximale réelle: ◦ 65,507 octets (causé par le protocole IP de la couche inférieure: il faut enlever un 20 octets additionnel pour l’entête IP). 11
Serveurs UDP Comme pour TCP, des numéros de ports réservés sont affectés aux applications serveurs, Lorsqu’un datagramme est reçu, il est transféré à l’application qui correspond au numéro de port. 12
Clients UDP Le client choisi un port aléatoirement dans la plage de ports à pour communiquer au serveur. ◦ Le choix aléatoire est fait pour une question de sécurité. ◦ Si le choix de port était le résultat d’un mécanisme prévisible, les ports serait plus susceptibles d’être attaqués. 13
Clients UDP (suite) La communication est initiée par le client. Le datagramme envoyé au serveur contient le port du client comme origine et le port du serveur comme destination. Les ports sont inversés dans les datagrammes de réponse du serveur (s’il y en a). 14
Illustration – requêtes à un serveur 15
Illustration – réponses du serveur 16
LA DÉTECTION D’ERREURS DANS TCP ET UDP 17
Détection d’erreur Pourquoi? pour éviter que les données soient corrompues lors de la transmission. La détection d’erreur peut être faites dans plusieurs couches pour détecter différents types d’erreurs. ◦ ex.: couches supérieures ◦ ex.: couche transport (ex.: TCP) ◦ ex.: couche liaison de données (trames ethernet) 18
Quelques causes d’erreurs Défectuosité de l’interface réseau ◦ par exemple, certains bits peuvent être modifiés ◦ ce type d’erreur peut être géré par les pilotes (drivers) Erreurs de mémoire Erreurs lors de la transmission sur le support de communication 19
Quelques causes d’erreurs (suite) Erreurs logicielles: ◦ au niveau des hôtes ◦ au niveau des routeurs ◦ … Erreurs dans l’implémentation des algorithmes de compression (ex.: ne pas bien comprendre les RFC). Erreurs au niveau des applications … 20
Exemple: Amazon, 2008 Le centre de données S3 est composé de plusieurs serveurs. Une communication de type « rumeurs » permet aux serveurs de partager des informations sur leur état aux autres serveurs. Pour chaque message inter-serveur pour des données régulières, une somme de contrôle MD5 est utilisée pour vérifier si les messages sont corrompus. Or pour les communications sur l’état des serveurs, il n’y avait pas de code de détection d’erreur. 21
Exemple: Amazon (suite) La corruption d’un seul bit dans les messages sur l’état des serveurs s’est propagé d’un serveur à l’autre. Les messages corrompus ont causés une panne du centre de données S3 pendant plusieurs heures html html 22
Détection d’erreur - TCP Est réalisé grâce à un champs de 16 bits nommé « Somme de contrôle ». La méthode est décrite dans RFC
Détection d’erreur - TCP (suite) Calcul de la somme de contrôle pour un segment TCP 1. Considérer les octets constituants (1) l’entête avec le code CRC à 0, (2) et les données sous forme de mots de 16 bits. 2. Faire la somme des mots de 16 bits (one’s complement sum*** et mettre le résultat dans un mots de 32 bits, et conserver seulement les 16 derniers bits. 3. Inverser les bits du résultat 24
Exemple Opération de la somme avec 4 mots de 16 bits
Exemple First 16-bit value Second 16-bit value Produced a carry-out, which gets added + \ > 1 back into LBb Third 16-bit value No carry to swing around (**) Fourth 16-bit value Produced a carry-out, which gets added + \ > 1 back into LBb (ceci doit ensuite être inversé) 26
Détection d’erreur - TCP (suite) À la réception d’un segment TCP, la somme est recalculée. Si elle ne correspond plus à la valeur dans le champs « somme de contrôle » calculée par l’hôte d’origine, ◦ le segment est jeté, ◦ une demande de retransmission est formulée. Plutôt que de tenter de corriger les erreurs détectées, les segments sont retransmis. 27
Détection d’erreur - TCP (suite) La façon dont la « somme de contrôle » de TCP est calculée n’est pas nécessairement la meilleure solution, mais pour assurer la compatibilité avec les périphériques utilisant déjà TCP, elle est conservé ainsi. 28
Détection d’erreur - UDP La somme de contrôle est optionnelle pour UDP. Le champ « somme de contrôle » peut être laissé à 0 s’il n’est pas utilisé. La « somme de contrôle » de UDP est calculée de façon similaire à TCP. À la réception d’un datagramme, la somme est recalculée. Si elle ne correspond plus à la valeur « somme de contrôle » calculée par l’hôte d’origine, le datagramme est jeté. Il n’y a pas de retransmission prévue par UDP. 29
Détection d’erreurs Il existe d’autres codes permettant de détecter les erreurs. Voici un exemple: 30
Bit de parité « Il consiste à ajouter à la fin de chaque bloc de n-1 bits un bit supplémentaire choisi de telle sorte que le nombre total de bits égaux à 1 dans le bloc de n bits soit pair. Si, à la réception, le nombre de bits dans un bloc est impair, on détecte une erreur » /Georges.Gonthier/pi97/perrin/codes.html /Georges.Gonthier/pi97/perrin/codes.html Permet de détecter une erreur, mais pas de la corriger! 31
Le code ISBN Le code ISBN est utilisé sur les livres. Il permet de détecter une erreur. Pour un ISBN à 10 chiffres, le 10ième chiffre est la clé de contrôle. Ex. de ISBN: La clé de contrôle peut prendre une valeur de 0 à est représenté par X. 32
= 170 Calcul de la clé de contrôle 33
Le code ISBN (suite) Formellement, la somme pondérée peut être représentée ainsi: 34 terme représentant le 10 ième chiffre (la clé de contrôle) termes représentant les 9 premier chiffres d’un ISBN
La vérification du code de contrôle: ◦ On effectue le même calcul sur le code ISBN, mais en incluant la clé de contrôle avec une pondération de 1. ◦ Si la somme pondérée n’est pas un multiple de 11, le code ISBN est erroné. Vérification de la clé de contrôle 35
Le code ISBN (suite) permet de détecter un chiffre erroné. permet de restituer un nombre effacé. plus généralement, le code permet de détecter toutes erreurs tel que le modulo 11 de la somme pondérée n’est pas 0. 36
Le code ISBN (suite) 37
Le code ISBN (suite) ISBN permet aussi de détecter l’inversion de deux chiffres pas nécessairement adjacents. 38
Inversion de deux chiffres 39
Codes d’erreurs similaire ◦ les codes postaux aux États-Unis sous forme de codes barre (POSTNet) ◦ sur les chèques ◦ les codes barre sur les produits (UPC) 40
POSTNet Le neuvième chiffre est la clé de contrôle Peut détecter, erreur sur un chiffre et certaines tranposition. Ex.: ac ca, abc cba …. 41
Les codes correcteurs Il existe des codes correcteurs qui permettent de détecter et de réparer une erreur. Exemple 42
Le code de Hamming Nous souhaitons encoder m bits de données et ajouter k bits de correction pour détecter les erreurs. Selon le code de Hamming, il faut choisir k tel que m ≤ 2 k - k-1. Par exemple, si k=3 alors m= 4 bits. 43
Le code de Hamming - encodage Les bits de correction sont situés aux indices « puissance de 2 »: 1, 2, 4… Ex.: Le message 1110 est codé comme: Les bits 3, 5, 6, 7 contiennent les données. Les bits 1, 2, 4 sont les bits de corrections, calculés ainsi: ◦ b1 = b3 + b5 + b7 ◦ b2 = b3 + b6 + b7 ◦ b4 = b5 + b6 + b7 Explication: b1 est calculé à l’aide des bits 3, 5 et 7 parce que 3, 5 et 7 s’écrivent à l’aide du bit 1 en binaire. 44
Le code de Hamming - décodage Supposons que le message arrive à destination sous la forme de: (le bit 5 a été modifié). Les bits de corrections sont recalculés ce qui donne: 101 Les bits de contrôle qui diffèrent indiquent le bit en erreur: 101 = le bit 5 ! 45
Le code de Hamming - décodage Supposons que le message arrive à destination sous la forme de: (le bit 2 a été modifié). Les bits de corrections sont recalculés ce qui donne: 010 Les bits de contrôle qui diffèrent indiquent le bit en erreur: 010 = le bit 2! 46
Le code de Hamming étendu Le code Hamming ne permet de détecter et de corriger qu’une seule erreur. Une extension qui permet de détecter deux erreurs est d’ajouter un bit de parité, mais cela ne permet pas de corriger deux erreurs. 47
QUIZ CHAPITRE 4 48
Question 1 49
Question 2 50
Question 3 51
Question 4 52
Question 5 53
Question 6 54
Question 7 55
Question 8 56
Question 9 57
Références Chapitre 4 de CCNA Exploration 1 RFC 793 – TCP « When the CRC and TCP checksum disagree », J. Stone & C. Partridge. J. H. van Lint, Introduction to Coding Theory, Springer, /Georges.Gonthier/pi97/perrin/codes.html /Georges.Gonthier/pi97/perrin/codes.html mber#Calcul_du_chiffre_cl.C3.A9_d.27un_num.C3.A9ro_IS BN_.C3.A0_10_chiffres mber#Calcul_du_chiffre_cl.C3.A9_d.27un_num.C3.A9ro_IS BN_.C3.A0_10_chiffres 58