Réseaux - partie 4 Transport Michel RIVEILL, INP Grenoble Laboratoire SIRAC INRIA Rhône-Alpes 655, av. de l Europe - 38330 Montbonnot St Martin Michel.Riveill@inpg.fr Plan Introduction Physique Liaison Réseau Transport Fonctions TCP UDP Applications M. Riveill - INPG (c)1999 2 Page 1
Fonction de la couche transport Transfert fiable efficace et économique d informations de bout en bout. Client : la couche session ou application Entité de transport : logiciel + matériel assurant le service au dessus de la couche réseau. TSAP Entité de Transport NSAP Protocole de transport TPDU Session Entité de Transport Réseau M. Riveill - INPG (c)1999 3 Qualité de service : Paramètres (1) 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. M. Riveill - INPG (c)1999 4 Page 2
Qualité de service : Paramètres (2) 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 ut ilisateur 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. M. Riveill - INPG (c)1999 5 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 un 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. Les paramètres définissant la QOS ne sont pas normalisés M. Riveill - INPG (c)1999 6 Page 3
Les protocoles de l Internet Couche de transport TCP : Transmission Control Protocol protocole de transport orienté octet communications orientées connexion et fiables Pour des applications nécessitant fréquement des transferts de grandes quantités de donnéées à la fois, ou nécessitant un accusé de réception offre un service avec connexion de type circuit virtuel UDP : User Datagram Protocol protocole de transport de type datagramme sans controle ni acquittement La responsabilité du bon acheminement est à la charge de l'application permet des communicationshors connexion sans garantir le bon acheminement des paquets Pour applications ne transférant que des petites quantité de données à la fois M. Riveill - INPG (c)1999 7 Désignation : les portes 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 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). On doit préciser comment la liaison porte - processus est effectuée. Sous Unix : En partie statique pour les portes (0-255) Le reste dynamiquement. M. Riveill - INPG (c)1999 8 Page 4
Encapsulation de trames Données utilisateurs en-tête applicatif Données utilisateurs Application Segment TCP/UDP en-tête TCP/UDP Données applicatives TCP Datagramme IP en-tête en-tête IP TCP/UDP Données applicatives IP Trame Ethernet en-tête Ethernet en-tête en-tête IP TCP/UDP 14 20 20 46à 1500 octets Données applicatives remorque Ethernet Driver Ethernet Ligne physique M. Riveill - INPG (c)1999 9 UDP : Généralités UDP fournit un service sans connexion de transmission de message entre des processus s exécutant sur des machines interconnectées sous IP. 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 UDP gère donc : Un service de désignation s appuyant sur les portes Un service de détection d erreur qui utilise une fonction prenant en compte la désignation complète de la source et de la désignation ainsi que les données transportées. UDP n est pas indépendant d IP M. Riveill - INPG (c)1999 10 Page 5
UDP : La trame Trame Port source Port destination Longueur Somme de contrôle Données Port destination Pseudo en-tête (calcul de la somme de contrôle) Adresse IP de la source Adresse IP de la destination zéro 17 Longueur des données M. Riveill - INPG (c)1999 11 TCP : Généralités Service fourni : Transmission bi-directionnelle simultanée de données. La transmission est orientée flot d octets (pas de notion de découpage logique en me ssages). Transmission orientée connexion qui est fiable : détection et correction des erreurs, l ordre des octets dans le flot d entrée est conservé dans le flot de sortie. Existence d un ordre push qui force l expédition Techniques de base utilisées par le protocole Mécanisme de crédit pour assurer le contrôle de flot. Négociation du numéro initial d octet lors de l ouverture de connexion (élimination des doublons). Protocole d ouverture asymétrique. Détection des erreurs par une technique de somme de contrôle analogue de celle utilisée par UDP (comme UDP, TCP n est pas indépendant d IP). Nouvelle transmission des paquets non acquittést d un certain temps. M. Riveill - INPG (c)1999 12 Page 6
TCP : La trame (1) Porte source Porte destination Numéro du paquet ACK = Numéro de l octet attendu dep. réservé fonctions Crédits Somme de contrôle Pointeur urgent Options remplissage Données du transport M. Riveill - INPG (c)1999 13 TCP : La trame (2) Déplacement : il est rendu nécessaire par le champ de longueur variable option. Il est exprimé en nombre de mots de 32 bits. Code est un vecteur de bits dont les composantes indiques quand leur valeur est 1 que le paquet à la fonction correspondante : URG : indique un message urgent le champ pointeur urgent est valide. ACK : indique que le champ ACK est valide PSH les données contenues dans le paquet doivent être remise. RST : la connexion est détruite SYN : ouverture FIN : fermeture Crédit : donne le nombre maximum d octets qu on est prêt à émettre (taille de la fenêtre). Urgent pointer : emplacement dans le flot du dernier octet des données urgentes M. Riveill - INPG (c)1999 14 Page 7
Ouverture d'une connexion TCP Processus en trois temps : assure l'ouverture dans les deux sens fiable même en cas de ré_émission de requête ou d'ouverture duale Emission du Segment SYN, seq=x Réception Segment SYN Réception du segment SYN + ACK Emission du segment ACK y+1 Emission segment SYN, Seq=y, ACK x+1 Réception segment ACK y M. Riveill - INPG (c)1999 15 Fermeture de la connexion TCP TCP libère par moitié les connexions (bi-directionnelles) : l'émetteur achève l'émission des données restantes, attend l'acquittement des données, puis envoi le signal de fin Le récepteur indiquera EOF à l'application Emission du Segment FIN, seq=x Réception Segment FIN Réception du segment ACK Réception du segment FIN, ACK, seq=y Emission segment ACK x+1 Emission segment FIN, ACK x+1, seq=y Emission du segment ACK y+1 Réception segment ACK M. Riveill - INPG (c)1999 16 Page 8
Echange de données avec contrôle de flux / TCP TCP utilise une technique de crédit d'acquittement par fenêtre glissante : acquittement sur la base de la séquence (octet) contrôle indépendant dans chaque direction (2 fenêtres glissante par direction) M. Riveill - INPG (c)1999 17 L interface 4. 3 BSD Unix (1) Création sid = socket(af, type, protocole) af = AF_INET, AF_APPLETALK, AF_UNIX etc... type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW protocol n est utilisé que si plusieurs protocoles de la même famille fournissent le même type de service. Destruction close(sid) diminue de 1 le compteur de référence associé au socket. S il est à zéro le socket est détruit. La création d un processus provoque la recopie chez le fils de tous les socket créé par le père. Cela augmente de 1 compteur de référence associé au socket. Le fils et le père on les même droit sur les socket. Liaison à une Porte bind(sid, localadr, adrlong) localadr est une structure qui contient le nom de la famille de protocole (2 octets) et des information spécifique à cette famille sur 14 octets. adrlong est la longueur en octets de l adresse Exemple : (AF_INET, Numéro de Porte, adresse Internet de la machine) M. Riveill - INPG (c)1999 18 Page 9
L interface 4. 3 BSD Unix (2) Connexion d un socket à une destination (connexion coté client) connect(sid, destadr, adrlong) destadr est l adresse de la porte distante définie de la même façon que le paramètre localadr de la primitive bind. adrlong est la longueur en octet du paramètre destadr. La sémantique de connect varie selon le type de la connexion désirée : service avec connexion : effectue l ouverture d une connexion avec la porte destination. Si la connexion n est pas possible retourne une erreur. service sans connexion : mémorise l adresse destination localement. Connexion coté serveur (valable uniquement en mode connecté) listen(sid, nbconnexion) indique le nombre de demande de connexions acceptées newsid = accept(sid, adr, adr, adrlong) newsid : socket associé à la connexion créé adr = adresse d une structure d adresse où sera rangé l adresse du demandeur adrlong = adresse d un entier où sera rangé la longueur de l adresse M. Riveill - INPG (c)1999 19 L interface 4. 3 BSD Unix (3) Mode connecté Envoi sur un socket write(ids, adtampon, longueur) adtampon est l adresse du tampon à envoyer longueur est la longueur du tampon à envoyer writev(ids, iovecteur,longvect) iovecteur est l adresse d une structure de type iovecto longvect est le nombre d entrée de iovector permet d imprimer un message éclaté en plusieurs zones non jointives send(ids, message, longueur, indicateur) permet d envoyer des données urgentes avec TCP ou de ne pas utiliser la table locale de routage (option donné par indicateur) Réception sur un socket read(ids, tampon, longueur) readv(ids,iovecteur, longvect) recv(ids, tampon, longueur, indicateur) M. Riveill - INPG (c)1999 20 Page 10
L interface 4. 3 BSD Unix (4) Mode non connecté Envoi sur un socket (en mode non connecté) Sendto (ids, message, longueur, indicateur, adresse, taille_adresse) les 4 premiers idem send les 2 derniers, adresse et taille de l adresse de destination et la taille de cette adresse Sendmsg (ids, message, flag) message est une structure contenant les mêmes informations que dans le cas précédent mais permettant d initialiser une seule fois la structure et de diminuer le nombre de paramètres Réception sur un socket Recvfrom () Recvmsg () M. Riveill - INPG (c)1999 21 Page 11