Les protocoles de l'architecture Chapitre X TCP/IP Les protocoles de l'architecture Internet (2ème partie)
Sommaire Introduction Qualité de service (QoS) Le protocole UDP Le protocoleTCP
Introduction Le but des réseaux est de permettre la communication entre applications tournant sur deux machines (ou plus) reliées au réseau. ==> communication "de bout en bout" entre deux applications. Les applications utilisent des services facilitant ces communications : couche transport. Principaux services : adressage complémentaire des applications qualité du service de communication La couche Transport assure la charnière entre les aspects applicatifs et les aspects liés à la transmission de données sur un réseau informatique. La couche Transport assure le transport de bout en bout des données d’une façon sûre et efficace. service connecté ou non de manière efficace, fiable et économique, indépendamment de la nature des réseaux sous-jacents (Applications écrites indépendamment du réseau de communication et de sa topologie).
Éléments de protocoles de Transport Fonctionnalités de la couche Transport similaires à celles de la couche Liaison de données : assurer le contrôle d’erreur, le séquencement des données, le contrôle de flux… Différence majeure : environnements différents Établissements de connexion plus complexes au niveau Transport : plusieurs connexions peuvent être établies en même temps Taille des tampons plus difficile à prévoir Paquets pouvant être stockés pour une durée inconnue Fonctions de la couche Transport: Les entités communicantes ne sont plus des stations mais des processus Adressage : fournir un point d’accès à l’application Établissement/fermeture de connexion Segmentation : découpage du message en paquets Contrôle de flux et gestion des tampons Multiplexage et démultiplexage des flux de données Récupération d’erreurs lorsque le réseau sous-jacent n’est pas fiable
Qualité de service (QoS) La couche Transport optimise l’utilisation des ressources disponibles (du Réseau) pour atteindre (et maintenir) la qualité de service (de transmission de données) souhaitée par les entités supérieures (applicatives). La notion de QoS peut être définie par l’ensemble des paramètres (délai de transit, débit, etc.) caractérisant les besoins des entités applicatives. La valeur des paramètres peut être négociée lors de la phase d’établissement de la connexion, en fonction : des caractéristiques des réseaux sous-jacents des demandes des entités supérieures locales et distantes des mécanismes protocolaires disponibles La couche Transport joue un rôle de garant de la QoS : elle surveille les paramètres de QoS et elle doit déterminer si elle est en mesure de respecter ses engagements.
Qualité de service : Paramètres Temps d’établissement d’une connexion Durée s’écoulant entre l’instant où la demande est émise par l’utilisateur de celui où la confirmation est reçue. Probabilité d’échec d’établissement Probabilité que la connexion ne puisse s’établir dans un délai maximum défini. Débit de la connexion Mesure du nombre d’octets utiles pouvant être transférés en une seconde sur la liaison. Le débit est mesuré séparément dans les deux sens. Temps de transit Temps s’écoulant entre l’instant où un message est émis et l’instant où il est reçu par l’entité de transport du destinataire. Taux d’erreur résiduel Quotient entre le nombre de messages perdus ou mal transmis et le nombre total de messages émis au cours d’une période de temps.
Probabilité d’incident de transfert Fraction de temps durant laquelle la qualité de service n’a pas été respectée. Temps de déconnexion Durée s’écoulant entre la demande de déconnexion émise par un utilisateur et la déconnexion effective de l’usager distant. Probabilité d’échec de déconnexion Taux de demandes de déconnexion non exécutées pendant le temps maximum qui était défini. Protection Possibilité de résister aux intrusions d’un tiers sur la connexion. Priorité Permet aux utilisateurs de privilégier certaines connexions. Résiliation Liberté laissée à la couche transport de fermer une connexion suite à un engorgement ou à des problèmes internes. Un contrat est ainsi déterminé entre les entités supérieures ayant demandé l’établissement de la connexion et la couche Transport.
Qualité de service : mécanisme À l’ouverture de la connexion deux valeurs de chacun des paramètres sont transmises à l’entité transport : La valeur souhaitée La valeur minimum acceptée L’entité de transport locale regarde si elle peut au moins satisfaire les valeurs minimales demandées. si oui elle transmet à l’entité distante les valeurs définissant la QoS qu’elle peut satisfaire. si non elle retourne une erreur à la couche réseau. L’entité de transport distante opère de la même façon sur les valeurs reçues. Si une ou plusieurs valeurs ne peuvent être garanties la demande est rejetée. Si non la demande est acceptée et l’utilisateur reçoit les valeurs accordées.
On classe généralement les protocoles en deux catégories selon le niveau de contrôle des données que l'on désire: Les protocoles orientés connexion : Il s'agit des protocoles opérant un contrôle de transmission des données pendant une communication établie entre deux machines. Dans un tel schéma, la machine réceptrice envoie des accusés de réception lors de la communication, la machine émettrice est garante de la validité des données qu'elle envoie. Les données sont ainsi envoyées sous forme de flot. TCP est un protocole orienté connexion Les protocoles non orientés connexion : Il s'agit d'un mode de communication dans lequel la machine émettrice envoie des données sans prévenir la machine réceptrice, la machine réceptrice reçoit les données sans envoyer d'avis de réception à la première. Les données sont ainsi envoyées sous forme de blocs (datagrammes). UDP est un protocole non orienté connexion
Protocoles de Transport dans Internet 2 protocoles de Transport principaux : TCP (Transmission Control Protocol) fournissant : Un service fiable de bout en bout sur un réseau non fiable Un service orienté connexion Une adaptation dynamique aux caractéristiques de trafic du réseau et une tolérance aux pannes UDP (User Datagram Protocol) fournissant : un service sans connexion : pas de services supplémentaires fournis par rapport à ceux fournis par la couche Réseau en fait, simple en-tête ajouté aux paquets IP
Désignation : les portes (1) Problèmes communs à UDP et TCP : IP transporte des messages entre des machines et donc identifie des machines hôtes. UDP comme TCP veulent permettre à des processus s’exécutant sur des machines pouvant être différentes de communiquer. Puisque les processus sont en général créés et détruits dynamiquement (De nombreux programmes TCP/IP peuvent être exécutés simultanément sur Internet) les noms de processus ne peuvent être utilisés pour les désigner. Utilisation d ’un objet « intermédiaire » -> PORTE Les portes : Ce sont des boites aux lettres désignées sur la machine à laquelle elles appartiennent par un entier sur 16 bits. Sur le réseau l’identification d’un processus d’une machine se fera par le triplet : (adresse IP de la machine, protocole id, numéro de porte). La combinaison adresse IP + port est alors une adresse unique au monde, elle est appelée socket. L’adresse IP sert donc à identifier de façon unique un ordinateur sur le réseau tandis que le numéro de port indique l'application à laquelle les données sont destinées. De cette manière, lorsque l'ordinateur reçoit des informations destinées à un port, les données sont envoyées vers l'application correspondante.
Désignation : les portes (2) S'il s'agit d'une requête à destination de l'application, l'application est appelée application serveur. S'il s'agit d'une réponse, on parle alors d'application cliente. Il existe des milliers de ports (ceux-ci sont codés sur 16 bits, il y a donc 65536 possibilités), c'est pourquoi une assignation standard a été mise au point, afin d'aider à la configuration des réseaux. Les ports 0 à 1023 sont les ports pré-définis (Well Known Ports). Ils sont assignés par le IANA (Internet Assigned Numbers Authority) et sont sur beaucoup de systèmes uniquement utilisables par les processus système ou les programmes exécutés par des utilisateurs privilégiés. Les ports >1024 sont les ports dynamiques ou privés. les ports d'un serveur sont généralement compris entre 0 et 1023 (fourchette de valeurs associées à des services connus). Du côté du client, le port est choisi aléatoirement parmi ceux disponibles par le système d'exploitation. Ainsi, les ports du client ne seront jamais compris entre 0 et 1023 car cet intervalle de valeurs représente les ports pré-définis.
Désignation : les portes (3) Voici certaines de ces assignations par défaut: Port Service ou Application 7 Echo Ping d’une station (permet de tester la présence d’une station sur le réseau) 21 FTP File Transfer Protocol 23 Telnet Connexion à distance 25 SMTP service de courier electronique 53 Domain Domain Name Server HTTP Hyper Text Transfert Protocol Les sockets Un socket est la concaténation de l’adresse IP de la machine et du numéro de Porte(port) sur lequel est connectée l’application qui envoie ou reçoit des données. Ce mécanisme permet d’identifier de manière unique une application résidant dans une machine sur le réseau. Cela permet ainsi à deux applications de communiquer entre elles, que ces applications résident sur la même machine ou qu’elles résident sur des machines différentes. Afin d’éviter tout problème de redirection de messages, les protocoles tels que UDP ou TCP incluent le numéro de port dans leur datagramme (incluent le numéro de socket dans le calcul du champ correcteur d’erreur de façon à assurer que le datagramme est envoyé au bon serveur et ne risque pas d’être accepté par la couche application sur un serveur erroné )
client/serveur De nombreuses applications fonctionnent selon un environnement client/serveur, cela signifie que des machines clientes (des machines faisant partie du réseau) contactent un serveur, une machine généralement très puissante en terme de capacités d'entrée-sortie, qui leur fournit des services. Ces services sont des programmes fournissant des données telles que l'heure, des fichiers, une connexion, etc. Les services sont exploités par des programmes, appelés programmes clients, s'exécutant sur les machines clientes. On parle de client lorsque l'on désigne un programme, tournant sur une machine cliente, capable de traiter des informations qu'il récupère auprès du serveur (dans le cas du client FTP il s'agit de fichiers, tandis que pour le client messagerie il s'agit de courrier électronique). Un serveur est un ordinateur que l'on contacte et qui propose des services tels que : Serveur d'horodatage : fournit l’heure, permet la synchronisation des clients. Serveurs de noms (DNS) pour la transformation adresse IP en nom. Serveur de courrier électronique (SMTP). Remote login : pour la connexion à distance. Serveur de fichier. gopher, www, wais : les serveurs d’informations. Echo ICMP : la gestion des erreurs.
Le protocole UDP . RFC 768 . août 1980
Le protocole UDP User Datagram Protocol (champ protocole du datagramme IP = 17) protocole de transport le plus simple service de type best-effort (comme IP) les segments UDP peuvent être perdus les segments UDP peuvent arriver dans le désordre mode non connecté : chaque segment UDP est traité indépendamment des autres La qualité de service fournie est celle d’IP : Pas d’ordre Pas de reprises en cas d’erreur Si le message ne parvient pas on n’est pas averti Pourquoi un service non fiable sans connexion ? simple donc rapide (pas de délai de connexion, pas d'état entre émetteur/récepteur) petit en-tête donc économie de bande passante sans contrôle de congestion donc UDP peut émettre aussi rapidement qu'il le souhaite Souvent utilisé pour les applications multimédias tolérantes aux pertes sensibles au débit applications qui envoient peu de données et qui ne nécessitent pas un service fiable exemples : DNS(53), TFTP(69), BOOTP/DHCP(67-68)
Le datagramme UDP Le port source : il s'agit du numéro de port correspondant à l'application émettrice du segment UDP. Ce champ représente une adresse de réponse pour le destinataire. Ainsi, ce champ est optionnel, cela signifie que si l'on ne précise pas le port source, les 16 bits de ce champ seront mis à zéro, auquel cas le destinataire ne pourra pas répondre (cela n'est pas forcément nécessaire, notamment pour des messages unidirectionnels). Le port destination : Ce champ contient le port correspondant à l'application de la machine destinataire à laquelle on s'adresse. La longueur : taille de l’en-tête et des données exprimée en octets ( 8 au minimum) taille maximale = 64 Koctets ( Données de longueur variable ) Checksum (facultatif) : Il s'agit d'une somme de contrôle (checksum) réalisée de telle façon à pouvoir contrôler l'intégrité du segment.
Déroulement des communications UDP/IP
Le protocoleTCP Rfc 793 Septembre 1981
Le protocole TCP- Fonctionnalités TCP ne tourne pas sur les routeurs : uniquement aux extrémités (PC, imprimantes, ...) Assure le transport : de bout en bout entre applications en mode connecté : ouverture ...fermeture (circuit virtuel) sans erreur : contrôle et retransmission si nécessaire sans perte : numérotation et retransmission ordonné : bon séquencement système d’acquittement avec contrôle de flux (fenêtre d’émission) full duplex indication du service par numéro de port Données venant des couches supérieures : suite d’octets Découpe cette suite d’octets en segments Un segment TCP est contenu dans un datagramme IP: champ protocole du datagramme IP = 6 Des segments sont échangés pour : ouvrir les connexions transférer des données envoyer des ACK : gérer le contrôle de flux fermer les connexions
Le segment TCP dépend de la capacité de stockage du récepteur permet le contrôle de flux
Port source : identifie l’application émettrice du segment TCP Port destination : identifie l’application destinataire du segment TCP Numéro de séquence NS (émission) comptabilise les octets depuis le début de la connexion ISN : numéro de séquence initial, valeur « aléatoire » acquittée lors de l'établissement de la connexion le numéro de séquence du premier octet transmis est ISN+1 puis NS=ISN+nb_octets_transmis+1 Numéro de séquence NR (réception): le récepteur renvoie le numéro du prochain octet attendu soit NS_reçu+taille_données_reçues Les 6 indicateurs URG : valide le champ « Pointeur sur données urgentes » ACK : valide le champ NR: numéro de séquence acquitté. PSH : PUSH indique au récepteur de délivrer immédiatement les données en attente sur le récepteur (TCP peut attendre d'avoir suffisamment de données avant de constituer un segment: efficacité du protocole) RST : demande au destinataire de réinitialiser la connexion (suite à la détection d’une anomalie grave sur le réseau) ou rejet d'une demande de connexion SYN : demande de connexion (échange et acquittement des ISN) FIN : demande de déconnexion (le destinataire n'est pas obligé de s'exécuter : fermeture négociée)
Une connexion TCP • Connexion (généralement) initialisée par le client • Numéro de port client choisi dynamiquement • Numéro de port serveur : défini par des standards
Le bit PUSH Pour optimiser la transmission, par défaut TCP attend que le tampon d'émission soit plein pour constituer un segment (groupage de messages) Le bit PUSH sert à demander la transmission et réception immédiate
Le contrôle d'erreur dans UDP et TCP Deux objectifs vérifier que les données transmises n'ont pas été altérées garantir que les données sont transmises au bon destinataire --> rajout d'un pseudo en-tête IP pour le calcul du checksum (qui est non transmis) Exemple de calcul de checksum Calcul du checksum par additions des mots de 16 bits complémentées à 1 Exemple : checksum sur 3 mots de 16 bits 0110011001100110 0101010101010101 0000111100001111 Somme des deux premiers mots 1011101110111011 Addition du troisième mot 1100101011001010 Complément à 1 0011010100110101 (= le champ checksum) Si pas d'erreur, la somme de tous les mots de 16 bits reçus doit faire 1111111111111111
Le protocole TCP – Acquittement Le mécanisme d’acquittement de TCP est cumulatif : indique le numéro de séquence du prochain octet attendu les octets précédents (cumulés) sont implicitement acquittés Si un segment a un numéro de séquence supérieur au numéro de séquence attendu : Celui ci est conservé l’acquittement référence toujours le numéro de séquence attendu. Pour tout segment émis : un temporisateur est armé et un acquittement est attendu si le segment n’est pas acquitté : considéré comme perdu après expiration du temporisateur TCP le retransmet • Risque que les temporisateurs des segments suivants expirent avant que le destinataire ne puisse les acquitter • Le choix de la valeur du temporisateur est donc critique pour l’efficacité du protocole
Le protocole TCP - Contrôle de flux Au récepteur : Nombre d'octets pouvant être stockés par le récepteur. Contrôlé par la largeur de la fenêtre (window size) : nombre maximum d'octets pouvant être émis sans acquittement par l'émetteur. Espace de stockage du récepteur presque plein diminution de la largeur de la fenêtre (0), Espace de stockage du récepteur presque vide augmentation de la largeur de la fenêtre.
Etablissement d'une connexion TCP Connexion en trois phases 1 - demande d'ouverture par le client (SYN), choix ISNc 2 - acceptation par le serveur (SYN+ACK), allocation des tampons, choix ISNs 3 - le client acquitte l'acceptation (ACK) Modes d'ouverture ouverture passive : le serveur est en attente de demande de connexion ouverture active : TCP adresse une demande de connexion à une entité identifiée
Fermeture d'une connexion TCP Fermeture négociée 1 - demande de fin de connexion (FIN) par une des extrémités 2 - acquittement du FIN (ACK) mais mise en attente de la demande (B a encore des données non transmises) 3 - B envoie ses données en attente 4 - A acquitte les données (ACK) 5 - acceptation de la fin de connexion par B (FIN) 6 - acquittement de la fin de connexion (ACK)
Fermeture d'une connexion TCP
Taille des segments TCP Souplesse de TCP : l'application lit/écrit dans un tampon TCP décide quand envoyer/restituer un segment (si PSH n'est pas positionné) Idée : TCP a intérêt d'envoyer des segments de taille maximale (limitation de l'overhead lié à la taille de l'en-tête) fragmentation IP coûteuse --> éviter la fragmentation la taille max. d'un segment TCP est de 64Ko (à cause d'IP) MSS : Maximum Segment Size (sans en-tête) à l'ouverture de la connexion, chaque entité peut annoncer (option TCP) son MSS à l'autre, en fonction de la MTU de son réseau (MSS=MTU-40) (20,IP,20,TCP) par défaut, MSS=536 octets
Politique de retransmissions Les pertes de segment sont détectées par absence d'ack positif à expiration d'un temporisateur sur l'émetteur 1 tempo. par seg. Toutes les données reçues hors séquence sont mémorisées par le destinataire