91
2 2 . La couche transport . La couche transport La couche transport est une couche La couche transport est une couche à part dans le modèle à part dans le modèle Elle peut être vue comme la Elle peut être vue comme la plaque plaque tournante tournante de tous les protocoles de tous les protocoles Son rôle : Son rôle : réaliser un transfert (connexion) réaliser un transfert (connexion) fiable entre deux machines (distante) fiable entre deux machines (distante) indépendamment de la nature du ou des indépendamment de la nature du ou des sous-réseaux mis en place sous-réseaux mis en place

2 . La couche transport

  • Upload
    burton

  • View
    55

  • Download
    11

Embed Size (px)

DESCRIPTION

2 . La couche transport. La couche transport est une couche à part dans le modèle Elle peut être vue comme la plaque tournante de tous les protocoles Son rôle : réaliser un transfert (connexion) fiable entre deux machines (distante) - PowerPoint PPT Presentation

Citation preview

Page 1: 2 . La couche transport

22. La couche transport. La couche transport

La couche transport est une couche à part La couche transport est une couche à part dans le modèledans le modèle

Elle peut être vue comme la Elle peut être vue comme la plaque tournanteplaque tournante de tous les protocolesde tous les protocoles

Son rôle :Son rôle : réaliser un transfert (connexion) fiable entre deux réaliser un transfert (connexion) fiable entre deux

machines (distante)machines (distante)indépendamment de la nature du ou des sous-réseaux indépendamment de la nature du ou des sous-réseaux

mis en placemis en place

Page 2: 2 . La couche transport

Le service transportLe service transport

Rappel :Rappel : la vocation de la couche transport est de fournir, la vocation de la couche transport est de fournir,

en principe un processus de la couche en principe un processus de la couche applications, un service de transport :applications, un service de transport :efficaceefficacefiablefiableéconomiqueéconomique

pour réaliser cette tâche, cette couche utilise les pour réaliser cette tâche, cette couche utilise les services mis à sa disposition par la couche réseauservices mis à sa disposition par la couche réseau

entité de transportentité de transport = logiciel et/ou matériel qui = logiciel et/ou matériel qui assure cette fonctionassure cette fonction

Page 3: 2 . La couche transport

Le service transportLe service transport

Couche application(ou session)

Couche réseau

Entité detransport

Adresse transport

Interface application/transport

Adresse réseau

Interface transport/réseau

Couche application(ou session)

Couche réseau

Entité detransport

TPDU

Hôte 1 Hôte 2

Protocole de transport

Page 4: 2 . La couche transport

Le service transportLe service transport

A l’instar de la couche réseau, la couche transport A l’instar de la couche réseau, la couche transport fournit deux types de services :fournit deux types de services : avec connexionavec connexion sans connexionsans connexion

Ces services sont très proches de ceux de la couche Ces services sont très proches de ceux de la couche réseau. Pourquoi les avoirs dans deux couches ?réseau. Pourquoi les avoirs dans deux couches ? le code de la couche transport est exécuté sur les clientsle code de la couche transport est exécuté sur les clients le code de la couche réseau est exécuté sur des routeurs :le code de la couche réseau est exécuté sur des routeurs :

le client n’y a donc pas d’influencele client n’y a donc pas d’influence

Améliorer le service de la couche 3 ne peut donc se Améliorer le service de la couche 3 ne peut donc se faire qu’en ajoutant une couche l’encapsulantfaire qu’en ajoutant une couche l’encapsulant

Page 5: 2 . La couche transport

Les primitives du service transportLes primitives du service transport

La couche transport fournit une interface afin La couche transport fournit une interface afin d’accéder à ses services. Les primitives de d’accéder à ses services. Les primitives de cette interface sont fonction :cette interface sont fonction :du type de service demandédu type de service demandéont été définies de manière à être pratiques et ont été définies de manière à être pratiques et

faciles à utiliser. En effet, un grand nombre faciles à utiliser. En effet, un grand nombre d’informaticiens (développeurs, …) sont amenés à d’informaticiens (développeurs, …) sont amenés à les utiliserles utiliser

Page 6: 2 . La couche transport

Les primitives du service transportLes primitives du service transport

listen (aucun)Bloque jusqu’à ce qu’un processus tente de se connecter

connect CONNECTION REQUEST Tente activement d’établir une connexion

send DATA Envoie des informations

receive (aucun) Bloque jusqu’à ce que le paquet DATA arrive

disconnect DISCONNECTION REQUEST Cette extrémité souhaite libérer la connexion

Page 7: 2 . La couche transport

L’encapsulationL’encapsulation

Pour rappel :Pour rappel : les TPDU (cfr. les TPDU (cfr. N-PDUN-PDU de 1080) sont les de 1080) sont les

messages envoyés par une entité transport à une messages envoyés par une entité transport à une autre entité transport.autre entité transport.

les TPDU (échangées par la couche transport) les TPDU (échangées par la couche transport) sont contenues dans des sont contenues dans des paquetspaquets (échangés par (échangés par la couche réseau). Les paquets sont, eux, la couche réseau). Les paquets sont, eux, contenus dans des contenus dans des trames trames (échangées par la (échangées par la couche liaison de données)couche liaison de données)

Page 8: 2 . La couche transport

L’encapsulationL’encapsulation

En-tête de la trame

En-tête du paquet

En-tête de la TPDU

Charge utile de la TPDU

Charge utile du paquet

Charge utile de la trame

Page 9: 2 . La couche transport

Sockets de BerkeleySockets de Berkeley

Ces sockets (interface de connexion) offrent Ces sockets (interface de connexion) offrent une autre ensemble de primitives. une autre ensemble de primitives.

Elles sont très similaires au modèle de notre Elles sont très similaires au modèle de notre premier exemple tout en offrant premier exemple tout en offrant plus de plus de souplesse et davantage de fonctionssouplesse et davantage de fonctions. Leur . Leur TPDU seront vues plus tard avec TCP.TPDU seront vues plus tard avec TCP.

Page 10: 2 . La couche transport

Sockets de BerkeleySockets de Berkeley

socket Crée le nouveau point terminal d’une communication

bind Attache une adresse locale au socket

listen Annonce la volonté d’accepter des connexions. Donne la taille de la file d’attente

accept Bloque l’appelant jusqu’à ce qu’une tentative de connexion se présente

connect Tente activement d’établir une connexion

send Envoie des données via la connexion

receive Reçoit des données de la connexion

close Libère la connexion

Page 11: 2 . La couche transport

Sockets de BerkeleySockets de Berkeley

Fonctionnement :Fonctionnement : le serveur exécute les primitives :le serveur exécute les primitives :

socket, bind, listen et acceptsocket, bind, listen et accept

socketsocket crée un nouveau point terminal et lui alloue crée un nouveau point terminal et lui alloue un espace de tables dans l’entité de transportun espace de tables dans l’entité de transport

bindbind attribue une adresse réseau à un socket. Dès attribue une adresse réseau à un socket. Dès cet instant, des clients distants peuvent s’y cet instant, des clients distants peuvent s’y connecterconnecter

listenlisten alloue de l’espace pour gérer les files alloue de l’espace pour gérer les files d’attentes des appels entrants. Grande d’attentes des appels entrants. Grande différencedifférence p/r p/r au modèle précédent : ce listen n’est au modèle précédent : ce listen n’est pas bloquantpas bloquant

Page 12: 2 . La couche transport

Sockets de BerkeleySockets de Berkeley

accept : accept : lors de l’arrivée d’une TPDU demandant une lors de l’arrivée d’une TPDU demandant une

connexion, l’entité de transport crée un nouveau connexion, l’entité de transport crée un nouveau socket ayant les mêmes caractéristiques que socket ayant les mêmes caractéristiques que l’original (descripteur de fichier).l’original (descripteur de fichier).

le serveur peut alors le serveur peut alors dupliquerdupliquer le processus (le le processus (le thread) pour gérer la connexion sur un nouveau thread) pour gérer la connexion sur un nouveau socketsocket

le serveur revient alors sur le socket original pour le serveur revient alors sur le socket original pour attendre une nouvelle connexionattendre une nouvelle connexion

Page 13: 2 . La couche transport

Eléments de protocoles de transportEléments de protocoles de transport

Le service transport est assuré par un Le service transport est assuré par un protocole de transportprotocole de transport établi entre deux entités établi entre deux entités de transport. Il ressemble par de nombreux de transport. Il ressemble par de nombreux aspects au protocole de la couche liaison de aspects au protocole de la couche liaison de données. Comme lui, il gère :données. Comme lui, il gère : le contrôle d’erreursle contrôle d’erreurs le séquencementle séquencement le débitle débit……

Page 14: 2 . La couche transport

Eléments de protocoles de transportEléments de protocoles de transport

Il existe cependant des différences Il existe cependant des différences fondamentales entre les deux. Alors qu’au fondamentales entre les deux. Alors qu’au niveau de la couche 2, la communication niveau de la couche 2, la communication s’opère directement via le s’opère directement via le support physiquesupport physique, , au niveau de la couche 4, ce support est au niveau de la couche 4, ce support est « remplacé » par un « remplacé » par un sous-réseausous-réseau..

Routeur

Canal de communication

Hôte Hôte

Routeur

Sous-réseau

Page 15: 2 . La couche transport

Eléments de protocoles de transportEléments de protocoles de transport

Quelques différences influant sur le protocole :Quelques différences influant sur le protocole :un routeur n’a pas besoin de spécifier à quel un routeur n’a pas besoin de spécifier à quel

routeur il veut s’adresser, alors qu’en couche 4 il routeur il veut s’adresser, alors qu’en couche 4 il faut explicitement désigner l’adresse du faut explicitement désigner l’adresse du destinatairedestinataire

l’établissement d’une connexion est également l’établissement d’une connexion est également plus complexe. En couche 2, l’entité située à plus complexe. En couche 2, l’entité située à l’autre extrémité du support physique est toujours l’autre extrémité du support physique est toujours là (sauf panne). La couche transport doit faire face là (sauf panne). La couche transport doit faire face à un niveau de difficulté bien plus grandà un niveau de difficulté bien plus grand

Page 16: 2 . La couche transport

Eléments de protocoles de transportEléments de protocoles de transport

Suite :Suite : la couche 4 est confrontée au risque d’errance la couche 4 est confrontée au risque d’errance

des données à l’intérieur du réseau. Lorsqu’une des données à l’intérieur du réseau. Lorsqu’une trametrame est envoyée elle arrive ou non mais elle ne est envoyée elle arrive ou non mais elle ne tourne pas en rond. Dans un réseau, ce type de tourne pas en rond. Dans un réseau, ce type de problème est plus que probable. Pire, dans un problème est plus que probable. Pire, dans un sous-réseau, un sous-réseau, un paquetpaquet peut non seulement peut non seulement tourner en rond mais aussi disparaître puis … tourner en rond mais aussi disparaître puis … réapparaître (mémorisation dans les routeurs, …). réapparaître (mémorisation dans les routeurs, …). Ces éléments engendrent une complexification Ces éléments engendrent une complexification des protocolesdes protocoles

Page 17: 2 . La couche transport

Eléments de protocoles de transportEléments de protocoles de transport

Suite :Suite : last but not least les couches 2 et 4 gèrent un last but not least les couches 2 et 4 gèrent un

contrôle du flux et donc une mémorisation. contrôle du flux et donc une mémorisation. Cependant, la couche transport gère un nombre Cependant, la couche transport gère un nombre important et fluctuant de connexions et nécessite important et fluctuant de connexions et nécessite de ce fait une approche radicalement différente de de ce fait une approche radicalement différente de celle retenue pour la couche 2.celle retenue pour la couche 2.

Détaillons quelque peu ces pointsDétaillons quelque peu ces points

Page 18: 2 . La couche transport

AdressageAdressage

Etablissement d’une connexion :Etablissement d’une connexion :dès qu’un processus applicatif souhaite ouvrir une dès qu’un processus applicatif souhaite ouvrir une

connexion, il faut spécifier à qui ont veux connexion, il faut spécifier à qui ont veux s’adressers’adressernb : également vrai pour le mode sans … connexion car nb : également vrai pour le mode sans … connexion car

la question est : a qui envoyer le message ?la question est : a qui envoyer le message ?

Utilisation des ports :Utilisation des ports : la méthode courante est la définition d’adresses la méthode courante est la définition d’adresses

de transport pour lesquelles les processus de transport pour lesquelles les processus peuvent être à l’écoute d’éventuelles demandes peuvent être à l’écoute d’éventuelles demandes de connexion : les de connexion : les portsports

Page 19: 2 . La couche transport

AdressageAdressage

TSAP :TSAP :au niveau de la couche 4, nous les appelerons au niveau de la couche 4, nous les appelerons

des TSAP.des TSAP. l’équivalent au niveau de la couche 3 sont les l’équivalent au niveau de la couche 3 sont les

NSAP dont les adresses IP sont un exempleNSAP dont les adresses IP sont un exempleLa figure suivante illustre la relation entre La figure suivante illustre la relation entre

TSAP et NSAPTSAP et NSAP

Page 20: 2 . La couche transport

AdressageAdressage

Processusapplicatif

TSAP 1208

Connexion de transport

NSAP

Couche application

Couche transport

Couche liaison de données

Couche réseau

Couche physique

NSAP

TSAP 1836

TSAP 1522

Hôte 1 Hôte 2

Page 21: 2 . La couche transport

AdressageAdressage

Scénario :Scénario : l’hôte 2 héberge, entre autre, un serveur de date l’hôte 2 héberge, entre autre, un serveur de date

sur le point d’accès TSAP 1522. Il est en attente sur le point d’accès TSAP 1522. Il est en attente d’un appel entrant (usage d’un d’un appel entrant (usage d’un listenlisten))

un processus sur l’hôte 1 veut connaître la date. Il un processus sur l’hôte 1 veut connaître la date. Il émet un émet un connectconnect en spécifiant la source (TSAP en spécifiant la source (TSAP 1208) et la destination (TSAP 1522). Il en découle 1208) et la destination (TSAP 1522). Il en découle l’établissement d’une connexion de transport entre l’établissement d’une connexion de transport entre les deux processus les deux processus sursur les deux machines les deux machines

Page 22: 2 . La couche transport

AdressageAdressage

Localisation des services ?Localisation des services ?une question cruciale est de connaître la une question cruciale est de connaître la

localisation des serviceslocalisation des servicescomment l’hôte 1 sait-il que le serveur de date est comment l’hôte 1 sait-il que le serveur de date est

connecté au TSAP 1522 de l’hôte 2 ?connecté au TSAP 1522 de l’hôte 2 ?

soit les TSAP sont fixes (historique) et leur soit les TSAP sont fixes (historique) et leur adresse est immuable :adresse est immuable :ceci est vrai pour un certain nombre d’entre eux :ceci est vrai pour un certain nombre d’entre eux :

Web, ftp, telnetWeb, ftp, telnet

Page 23: 2 . La couche transport

AdressageAdressage

mais il en existe de nombreux autres qui ne sont mais il en existe de nombreux autres qui ne sont pas dans ce cas :pas dans ce cas :service peu connu ou « privé »service peu connu ou « privé »à la durée de vie courteà la durée de vie courtedont l’adresse n’est pas connue par avancedont l’adresse n’est pas connue par avance

il est donc nécessaire de trouver un modèle il est donc nécessaire de trouver un modèle d’adressage plus efficace. On l’appelle d’adressage plus efficace. On l’appelle protocole protocole de préconnexionde préconnexion..

Page 24: 2 . La couche transport

AdressageAdressage

Fonctionnement :Fonctionnement :au lieu d’attribuer une adresse définie à chaque au lieu d’attribuer une adresse définie à chaque

serveur potentiel écoutant un TSAP connu, serveur potentiel écoutant un TSAP connu, chaque ordinateur, souhaitant offrir des services, chaque ordinateur, souhaitant offrir des services, possède un possède un serveur de processusserveur de processus. .

ce dernier ce comporte comme un proxy. Il écoute ce dernier ce comporte comme un proxy. Il écoute simultanément sur un ensemble de ports, en simultanément sur un ensemble de ports, en attente d’une demande de connexion. Les attente d’une demande de connexion. Les utilisateurs potentiels d’un service doivent donc utilisateurs potentiels d’un service doivent donc commencer par générer un commencer par générer un connectconnect en spécifiant en spécifiant le TSAP du service souhaité.le TSAP du service souhaité.

Page 25: 2 . La couche transport

AdressageAdressage

si aucun serveur ne les attend, ils se si aucun serveur ne les attend, ils se connectent connectent alors au serveur de processusalors au serveur de processus qui, après avoir pris qui, après avoir pris la requête entrante, la requête entrante, active le serveur demandéactive le serveur demandé et et lui transmet la connexion.lui transmet la connexion.

Malheureusement, ce protocole ne résout pas Malheureusement, ce protocole ne résout pas tout. tout. il y a de nombreuses situations pour lesquelles le il y a de nombreuses situations pour lesquelles le

service doit exister indépendamment du service doit exister indépendamment du processus serveur :processus serveur :serveur de fichier. Nécessite du matériel spécifique qui serveur de fichier. Nécessite du matériel spécifique qui

ne peut être construit à la voléene peut être construit à la volée

Page 26: 2 . La couche transport

AdressageAdressage

Solution :Solution : faire appel à un processus spécial :faire appel à un processus spécial :

serveur de noms ou serveur d’annuaireserveur de noms ou serveur d’annuairepour connaître l’adresse d’un TSAP pour connaître l’adresse d’un TSAP

correspondant à un nom de service donné (ex. correspondant à un nom de service donné (ex. « date et heure »), l’utilisateur établit une « date et heure »), l’utilisateur établit une connexion vers le serveur de noms (son TSAP est connexion vers le serveur de noms (son TSAP est connu !!!)connu !!!)

dans cette requête, le nom du service recherché dans cette requête, le nom du service recherché est mentionnéest mentionné

le serveur d’annuaire communique l’adresse en le serveur d’annuaire communique l’adresse en retourretour

Page 27: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Problème très délicat à cause :Problème très délicat à cause :des pertesdes pertesdes stockagesdes stockagesde la duplicationde la duplicationdes disparitions/réapparitionsdes disparitions/réapparitions……

Il existe peu de méthodes capables de Il existe peu de méthodes capables de s’accommoder de l’existence de doublons.s’accommoder de l’existence de doublons.

Page 28: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

La plus efficace : La plus efficace : consiste en une discrimination fondée sur la consiste en une discrimination fondée sur la durée durée

de viede vie des paquets des paquetson peut restreindre la durée de vie à un maximum on peut restreindre la durée de vie à un maximum

en utilisant une ou plusieurs des méthodes en utilisant une ou plusieurs des méthodes suivantes :suivantes :limiter la taille du sous-réseaulimiter la taille du sous-réseauaffecter un compteur de nombre de nœuds traversés affecter un compteur de nombre de nœuds traversés

pour chaque paquetpour chaque paquettimestamp pour chaque paquettimestamp pour chaque paquet

Page 29: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Evaluation :Evaluation : la première méthode limite les risques que les la première méthode limite les risques que les

paquets tournent en rond et diminue les risques paquets tournent en rond et diminue les risques de congestionde congestion

la seconde (cfr. TTL) initialise un compteur. Ce la seconde (cfr. TTL) initialise un compteur. Ce dernier est décrémenté à chaque passage dans dernier est décrémenté à chaque passage dans un nœud. Le paquet ayant son compteur à zéro un nœud. Le paquet ayant son compteur à zéro est éliminé du réseauest éliminé du réseau

Page 30: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

la troisième utilise un timestamp. Les routeurs la troisième utilise un timestamp. Les routeurs vérifient la valeur pour chaque paquet avec leur vérifient la valeur pour chaque paquet avec leur horloge interne et éliminent les plus vieuxhorloge interne et éliminent les plus vieuxinconvénient : il faut que les horloges des routeurs inconvénient : il faut que les horloges des routeurs

soient synchronisées. Tâche très complexe (nécessite soient synchronisées. Tâche très complexe (nécessite une source externe)une source externe)

En pratique :En pratique : il ne suffit pas de s’assurer qu’un paquet est il ne suffit pas de s’assurer qu’un paquet est

détruit. Il faut aussi que tous les accusés de détruit. Il faut aussi que tous les accusés de réception le concernant le soient aussi.réception le concernant le soient aussi.

Page 31: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Pour se faire :Pour se faire :notion de T :notion de T :

multiplemultiple (faible) de la durée maximale de vie d’un (faible) de la durée maximale de vie d’un paquet (le multiple est fonction du protocole)paquet (le multiple est fonction du protocole)

idéeidée : : si on attend un temps T après qu’un paquet a été envoyé, on si on attend un temps T après qu’un paquet a été envoyé, on

peut supposer que toutes traces de ce dernier a disparupeut supposer que toutes traces de ce dernier a disparu

une fois la durée de vie des paquets limitée, une une fois la durée de vie des paquets limitée, une connexion fiable est possibleconnexion fiable est possible

Page 32: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

TomlinsonTomlinson : :a défini une méthode dont certains aspects ont été a défini une méthode dont certains aspects ont été

revus par Sunshine et Dalal. C’est une de ces revus par Sunshine et Dalal. C’est une de ces variantes, dont TCP, qu’on utilise aujourd’huivariantes, dont TCP, qu’on utilise aujourd’hui

Perte de mémoire des machines :Perte de mémoire des machines :Tomlinson a proposé d’équiper chaque hôte d’une Tomlinson a proposé d’équiper chaque hôte d’une

horloge temps réelhorloge temps réel : :les horloges des hôtes étant synchroniséesles horloges des hôtes étant synchroniséeschaque horloge est un compteur binaire qui chaque horloge est un compteur binaire qui

s’incrémente à intervalles régulierss’incrémente à intervalles réguliers

Page 33: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

de plus, le nombre de bits du compteur doit être de plus, le nombre de bits du compteur doit être supérieur (ou égal) au nombre de bits des numéros de supérieur (ou égal) au nombre de bits des numéros de séquenceséquence

enfin, et fondamental, l’horloge doit continuer de enfin, et fondamental, l’horloge doit continuer de fonctionner même si l’hôte est en pannefonctionner même si l’hôte est en panne

Idée de base :Idée de base :deux unités en transit ne peuvent avoir la même deux unités en transit ne peuvent avoir la même

référence. Comment ?référence. Comment ?lorsqu’une connexion est établie, les lorsqu’une connexion est établie, les kk bits de poids bits de poids

faiblefaible de l’horloge compose la référence initiale de l’horloge compose la référence initiale

Page 34: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

par opposition à la couche 2 :par opposition à la couche 2 :cfr. numérotation et fenêtre coulissantecfr. numérotation et fenêtre coulissantechaque connexion numérote ses TPDU avec des chaque connexion numérote ses TPDU avec des

références différentesréférences différentesla capacité du compteur est telle que lorsqu’il repasse la capacité du compteur est telle que lorsqu’il repasse

par zéro, toutes les données qui pourraient avoir reçu par zéro, toutes les données qui pourraient avoir reçu une de ces références ont disparu depuis longtempsune de ces références ont disparu depuis longtemps

Page 35: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Relation entre le temps et la référence :Relation entre le temps et la référence :

0 30 60 90 120 150 180

Temps

Numéro de séquence

0 30 60 90

120

T

Zone interdite

Reprise après incident à 70

Message interdit

Temps

Numéro de séquence 2K-1

T

Vrais numéros de séquence utilisés

Page 36: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Déroulement :Déroulement :une fois que les deux entités se sont misent une fois que les deux entités se sont misent

d’accord sur les références initiales :d’accord sur les références initiales :utilisation de n’importe quel protocole de fenêtre utilisation de n’importe quel protocole de fenêtre

dynamique :dynamique : anticipationanticipation ……

reste un problème :reste un problème :quid en cas de panne d’un hôte :quid en cas de panne d’un hôte :

à son « réveil », il a oublié la référence couranteà son « réveil », il a oublié la référence courante

Page 37: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Solution :Solution :on laisse passer un temps T :on laisse passer un temps T :

pour laisser mourir toutes les TPDUpour laisser mourir toutes les TPDUmais dans un interréseau, T peut-être très grand :mais dans un interréseau, T peut-être très grand :

inadéquatinadéquat

on adapte les exigences sur les références :on adapte les exigences sur les références :ex :ex :

soit T = 60 s. et l’horloge incrémentée chaque secondesoit T = 60 s. et l’horloge incrémentée chaque seconde selon notre graphe, une connexion au temps selon notre graphe, une connexion au temps xx aura la aura la

référence référence xx supposons qu’à t=30, une TPDU ait été envoyée à la supposons qu’à t=30, une TPDU ait été envoyée à la

connexion 5 avec la référence 80. Soit connexion 5 avec la référence 80. Soit XX cette TPDU cette TPDU

Page 38: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion juste après l’envoi de juste après l’envoi de XX, l’hôte tombe en panne. Toutefois, il , l’hôte tombe en panne. Toutefois, il

redémarre immédiatementredémarre immédiatement à t=70, il ouvre à nouveau la connexion 5 avec la référence à t=70, il ouvre à nouveau la connexion 5 avec la référence

initiale … 70 (logique). initiale … 70 (logique). pendant 15 s. il envoie les unités de données 70 à 80 :pendant 15 s. il envoie les unités de données 70 à 80 :

nb : une TPDU peut prendre plus qu’une secondenb : une TPDU peut prendre plus qu’une seconde à t=85, une nouvelle TPDU ayant la référence 80 est affectée à à t=85, une nouvelle TPDU ayant la référence 80 est affectée à

la connexion 5la connexion 5 Catastrophe : Catastrophe :

la TPDU la TPDU XX existe toujours existe toujours si elle est reçue avant la TPDU 80, elle sera considérée si elle est reçue avant la TPDU 80, elle sera considérée

comme la bonne et le système est en écheccomme la bonne et le système est en échec de plus, l’unité correcte sera rejetée comme … doublonde plus, l’unité correcte sera rejetée comme … doublon

Page 39: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

pour éviter cela :pour éviter cela :il faut interdire que des références déjà utilisées il faut interdire que des références déjà utilisées

(affectées à des TPDU) soient à nouveau utilisées (affectées à des TPDU) soient à nouveau utilisées pendant un temps T :pendant un temps T :

ceci matérialise la ceci matérialise la zone interditezone interdite

avant d’envoyer une TPDU, l’entité de transport vérifie avant d’envoyer une TPDU, l’entité de transport vérifie son horloge afin de constater qu’elle n’est pas dans la son horloge afin de constater qu’elle n’est pas dans la zone interdite :zone interdite :

si c’est le cas, il faut :si c’est le cas, il faut : attendreattendre resynchroniser les référencesresynchroniser les références

Page 40: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Mauvaise nouvelle :Mauvaise nouvelle :cette méthode résout le problème des duplicatas cette méthode résout le problème des duplicatas

retardés pour les TPDU de données (connexion retardés pour les TPDU de données (connexion existante à priori) existante à priori)

Mais quid des TPDU de contrôle ?Mais quid des TPDU de contrôle ?en fait, il peut être extrêmement complexe d’établir en fait, il peut être extrêmement complexe d’établir

la négociation initialela négociation initiale

Page 41: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

ex :ex :l’hôte 1 envoi une TPDU l’hôte 1 envoi une TPDU Connection RequestConnection Request contenant contenant

une proposition de référence initiale et un port une proposition de référence initiale et un port destinataire à l’hôte 2destinataire à l’hôte 2

ce dernier doit répondre au moyen d’une TPDU ce dernier doit répondre au moyen d’une TPDU Connection AcceptedConnection Accepted. Si la TPDU request se perd mais . Si la TPDU request se perd mais qu’un doublon égaré apparaît en 1, la connexion est qu’un doublon égaré apparaît en 1, la connexion est réellement établie MAIS sur des bases incorrectesréellement établie MAIS sur des bases incorrectes

Tomlinson propose une procédure en trois Tomlinson propose une procédure en trois étapes :étapes : three ways handshakethree ways handshake

Page 42: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Dans cette procédure :Dans cette procédure : les deux entités démarrent avec la référence les deux entités démarrent avec la référence

qu’elles souhaitent (indépendamment). qu’elles souhaitent (indépendamment). L’utilisation de l’L’utilisation de l’horloge globalehorloge globale n’est pas n’est pas nécessairenécessaire

fonctionnement :fonctionnement :l’hôte 1 choisit une référence (l’hôte 1 choisit une référence (xx) et l’envoie à l’hôte 2 via ) et l’envoie à l’hôte 2 via

une une Connection RequestConnection Requestl’hôte 2 accuse réception de l’hôte 2 accuse réception de xx et propose sa propre et propose sa propre

référence initiale référence initiale yyenfin, 1 confirme le choix de 2 en lui signifiant enfin, 1 confirme le choix de 2 en lui signifiant yy au au

cours de l’envoi de la première TPDU de donnéescours de l’envoi de la première TPDU de données

Page 43: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexionT

emps

hôte 1 hôte 2

CR (séq = x)

ACK (séq = y, ACK = x)

DATA (séq = x, ACK = y)

(a)

Tem

ps

hôte 1 hôte 2

CR (séq = x)

ACK (séq = y, ACK = x)

REJECT (ACK = y)

(b)

Ancien doublon

Tem

ps

hôte 1 hôte 2

CR (séq = x)

ACK (séq = y, ACK = x)

REJECT (ACK = y)

(c)

Ancien doublon

DONNEES (séq = x, ACK = z)

Ancien doublon

Page 44: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

tenue au problème :tenue au problème : la figure (b) illustre le fait que la présence d’un doublon retardé d’une la figure (b) illustre le fait que la présence d’un doublon retardé d’une Connexion RequestConnexion Request provenant d’une ancienne connexion est provenant d’une ancienne connexion est détectée :détectée :

2 la reçoit correctement, en avise 1 avec un numéro de référence. 1 2 la reçoit correctement, en avise 1 avec un numéro de référence. 1 détecte l’erreur et en averti 2détecte l’erreur et en averti 2

la figure (c) illustre le pire des cas. Une CR et un accusé de réception la figure (c) illustre le pire des cas. Une CR et un accusé de réception d’une CA errent dans le sous-réseau :d’une CA errent dans le sous-réseau :

2 reçoit une CR retardée et y répond. Notons que 2 propose une valeur 2 reçoit une CR retardée et y répond. Notons que 2 propose une valeur yy comme numéro initialcomme numéro initial

lorsque la seconde TPDU arrive en 2, le fait qu’elle contienne la lorsque la seconde TPDU arrive en 2, le fait qu’elle contienne la confirmation pour confirmation pour zz au lieu de au lieu de yy indique à 2 qu’il s’agit d’un doublon indique à 2 qu’il s’agit d’un doublon

heureusement, il n’y a pas de combinaison d’anciennes TPDU qui heureusement, il n’y a pas de combinaison d’anciennes TPDU qui peuvent faire faillir le protocole et initialiser par erreur une connexionpeuvent faire faillir le protocole et initialiser par erreur une connexion

Page 45: 2 . La couche transport

Libération d’une connexionLibération d’une connexion

Libérer une connexion :Libérer une connexion :plus facile que de l’établirplus facile que de l’établirquoique …deux méthodes :quoique …deux méthodes :

libération asymétrique :libération asymétrique : brutale brutale risque de perte de données (cfr. illustration) risque de perte de données (cfr. illustration)

libération symétrique :libération symétrique : considère qu’il y a non pas une mais deux connexionsconsidère qu’il y a non pas une mais deux connexions problème des deux arméesproblème des deux armées

Page 46: 2 . La couche transport

Libération d’une connexionLibération d’une connexionT

emps

hôte 1 hôte 2

CR

ACK

DATA

après établissement de la connexion, l’hôte 1 après établissement de la connexion, l’hôte 1 envoie une TPDU qui arrive correctement à envoie une TPDU qui arrive correctement à l’hôte 2l’hôte 2

l’hôte 1 envoie une autre TPDUl’hôte 1 envoie une autre TPDU malheureusement, l’hôte 2 envoi un malheureusement, l’hôte 2 envoi un

DISCONNECT avant l’arrivée de cette seconde DISCONNECT avant l’arrivée de cette seconde TPDUTPDU

la connexion est alors la connexion est alors brutalement rompuebrutalement rompue et et les données sont les données sont perduesperduesDATA

Aucune donnée n’est livrée après la requête de déconnexion

DR

Page 47: 2 . La couche transport

Libération d’une connexionLibération d’une connexion

Il faut clairement :Il faut clairement :un protocole plus élaborer pour éviter ce genre de un protocole plus élaborer pour éviter ce genre de

pertes pertes libération symétrique : libération symétrique :dans ce cas, un hôte peut continuer à recevoir des dans ce cas, un hôte peut continuer à recevoir des

données même après avoir envoyé un Disconnectdonnées même après avoir envoyé un Disconnect

ce protocole fonctionne parfaitement quand les ce protocole fonctionne parfaitement quand les deux processus ont une quantité de données fixée deux processus ont une quantité de données fixée à transmettre et savent quand libérer la connexionà transmettre et savent quand libérer la connexion

l’ennui est que cela ne fonctionne pas toujoursl’ennui est que cela ne fonctionne pas toujours

Page 48: 2 . La couche transport

Libération d’une connexionLibération d’une connexion

Armée des blancs n° 1

Armée des blancs n° 2

Armée des verts

Page 49: 2 . La couche transport

Libération d’une connexionLibération d’une connexion

Les deux armées :Les deux armées : l’armée des verts campe dans la valléel’armée des verts campe dans la vallée les deux armées des blancs ont pris position sur les deux armées des blancs ont pris position sur

les collinesles collines l’armée des verts est plus forte que chaque armée l’armée des verts est plus forte que chaque armée

des blancs prisent individuellement, mais est plus des blancs prisent individuellement, mais est plus faible que les deux réuniesfaible que les deux réunies

Le problème est donc la coordinationLe problème est donc la coordination

Page 50: 2 . La couche transport

Libération d’une connexionLibération d’une connexion

Comment faire pour attaquer ensemble ?Comment faire pour attaquer ensemble ? supposons que l’armé 1 des blancs souhaite attaquer. Elle envoi un supposons que l’armé 1 des blancs souhaite attaquer. Elle envoi un

éclaireur vers la 2éclaireur vers la 2èmeème armée (il doit passer par la vallée). Le armée (il doit passer par la vallée). Le commandant de l’armée 2 reçoit le message et envoie un éclaireur commandant de l’armée 2 reçoit le message et envoie un éclaireur pour confirmer. pour confirmer. Est-ce concluantEst-ce concluant ? ?

NON : NON : car le commandant de l’armée 2 ne saura pas si le commandant de car le commandant de l’armée 2 ne saura pas si le commandant de

l’armée 1 à reçu son message. Donc, dans le doute, il ne lancera pas l’armée 1 à reçu son message. Donc, dans le doute, il ne lancera pas l’attaquel’attaque

solution :solution : le commandant 1 envoie une confirmation. OK, mais cette fois, c’est le le commandant 1 envoie une confirmation. OK, mais cette fois, c’est le

commandant 1 qui est dans le doute que le commandant 2, ayant bien reçu la commandant 1 qui est dans le doute que le commandant 2, ayant bien reçu la confirmation, va attaquer comme prévuconfirmation, va attaquer comme prévu

… … et ainsi de suiteet ainsi de suite en fait, il n’y a en fait, il n’y a pas de limitespas de limites. Aucun protocole ne peut résoudre le . Aucun protocole ne peut résoudre le

problème. Retenons qu’il n’est problème. Retenons qu’il n’est pas simplepas simple de libérer une connexion de libérer une connexion

Page 51: 2 . La couche transport

Contrôle de fluxContrôle de flux

Un parallèle avec la gestion de flux de la Un parallèle avec la gestion de flux de la couche 2 peut être fait :couche 2 peut être fait : la couche 4 va également utiliser un système de la couche 4 va également utiliser un système de

fenêtres à anticipationfenêtres à anticipation afin de conserver une afin de conserver une communication rapide mais respectueuse des communication rapide mais respectueuse des possibilités du destinatairepossibilités du destinataire

Toutefois, des différences notables existent :Toutefois, des différences notables existent :alors qu’un routeur n’a, en général, que peu de alors qu’un routeur n’a, en général, que peu de

connexions, un hôte en a un grand nombre :connexions, un hôte en a un grand nombre :l’implémentation doit donc utiliser une toute autre l’implémentation doit donc utiliser une toute autre

stratégiestratégie

Page 52: 2 . La couche transport

Contrôle de fluxContrôle de flux

Mémorisation :Mémorisation : les entités de transports (ET) ont également un les entités de transports (ET) ont également un

important travail au niveau de la mémorisation des important travail au niveau de la mémorisation des TPDU :TPDU :si la couche réseau n’est pas fiable, il est évident que si la couche réseau n’est pas fiable, il est évident que

les ET devront mémoriser toutes les TPDU expédiéesles ET devront mémoriser toutes les TPDU expédiéesmais même si la couche 3 offre un service fiable, il faut mais même si la couche 3 offre un service fiable, il faut

encore s’assurer que l’ET de réception acceptera encore s’assurer que l’ET de réception acceptera toujours toute TPDU entrante (place mémoire toujours toute TPDU entrante (place mémoire disponible) :disponible) :

sinon, le problème est encore plus aigu, car l’expéditeur ne sinon, le problème est encore plus aigu, car l’expéditeur ne pourra même pas se fier sur les acquits de la couche réseau et pourra même pas se fier sur les acquits de la couche réseau et la mémorisation sera quand même obligatoirela mémorisation sera quand même obligatoire

Page 53: 2 . La couche transport

Contrôle de fluxContrôle de flux

Mémorisation :Mémorisation :de grandes difficultés sont également au de grandes difficultés sont également au

programme de l’ET destinataire :programme de l’ET destinataire :comment gérer les tampons ?comment gérer les tampons ?

la difficulté réside dans le fait que la taille des TPDU la difficulté réside dans le fait que la taille des TPDU n’est pas forcément constante. n’est pas forcément constante.

une allocation statique de la taille n’est pas toujours possibleune allocation statique de la taille n’est pas toujours possible par contre, une allocation dynamique de la taille est beaucoup par contre, une allocation dynamique de la taille est beaucoup

plus complexe à gérerplus complexe à gérer

Page 54: 2 . La couche transport

MultiplexageMultiplexage

Nécessaire ?Nécessaire ? il se peut qu’un hôte ne propose qu’une seule il se peut qu’un hôte ne propose qu’une seule

adresse :adresse : toutes les connexions de transports devront l’utiliser. toutes les connexions de transports devront l’utiliser.

Il faut alors que lorsqu’une TPDU se présente, disposer Il faut alors que lorsqu’une TPDU se présente, disposer d’un moyen permettant d’indiquer quel est le processus d’un moyen permettant d’indiquer quel est le processus concerné : concerné : multiplexage de connexionsmultiplexage de connexions (ou en amont) (ou en amont)

dans l’exemple suivant nous illustrons dans l’exemple suivant nous illustrons 44 connexions de connexions de transport distinctes (processus transport distinctes (processus ≠) utilisant ≠) utilisant la mêmela même connexion réseauconnexion réseau

Page 55: 2 . La couche transport

Contrôle de fluxContrôle de flux

Lignes de routage

Vers le routeur Vers le routeur

Adresse de transport Adresse de

réseau

Page 56: 2 . La couche transport

Protocole de transportProtocole de transport

La couche de transport de l’Internet dispose La couche de transport de l’Internet dispose de deux protocoles principaux :de deux protocoles principaux :UDP : protocole UDP : protocole sanssans connexion connexionTCP : protocole TCP : protocole orientéorienté connexion connexion

Les deux protocoles sont fort proches dans Les deux protocoles sont fort proches dans leur définition (en-tête), mais n’offrent en rien leur définition (en-tête), mais n’offrent en rien les mêmes servicesles mêmes services

Page 57: 2 . La couche transport

UDPUDP

User Datagram Protocol :User Datagram Protocol :avec ce protocole, les applicatifs peuvent avec ce protocole, les applicatifs peuvent

encapsuler des datagrammes IP bruts et les encapsuler des datagrammes IP bruts et les envoyer sans établir, au préalable, une connexionenvoyer sans établir, au préalable, une connexion

RFC 768RFC 768Structure :Structure :

un un segmentsegment UDP comprend un en-tête de 8 bytes UDP comprend un en-tête de 8 bytes suivi de la charge utilesuivi de la charge utile

Page 58: 2 . La couche transport

UDPUDP

L’entête :L’entête :

les 2 ports servent à identifier les points d’extrémité au les 2 ports servent à identifier les points d’extrémité au niveau des ordinateurs :niveau des ordinateurs :

lorsqu’un paquet UDP se présente, sa charge utile est passée au lorsqu’un paquet UDP se présente, sa charge utile est passée au processus lié au port de destinationprocessus lié au port de destination

Comparé à IP, ces ports permettent de livrer correctement Comparé à IP, ces ports permettent de livrer correctement les paquets que la couche réseau n’aurait pas pu traiterles paquets que la couche réseau n’aurait pas pu traiter

Port source Port de destination

Longueur UDP Total de contrôle UDP

32 Bits

Page 59: 2 . La couche transport

UDPUDP

port source :port source :permet essentiellement de retourner une réponse à permet essentiellement de retourner une réponse à

l’expéditeur (cfr. MAC adresse source). Niveau l’expéditeur (cfr. MAC adresse source). Niveau applicatif et non plus hôteapplicatif et non plus hôte

longueur UDP :longueur UDP :contient un en-tête (8 bytes) et les donnéescontient un en-tête (8 bytes) et les données

total de contrôle :total de contrôle :optionnel, mais aucun intérêt à le désactiver (valeur 0)optionnel, mais aucun intérêt à le désactiver (valeur 0)

Page 60: 2 . La couche transport

UDPUDP

Attention :Attention :UDP ne fait pas : UDP ne fait pas :

de contrôle de flux, de contrôle de flux, de contrôle d’erreur,de contrôle d’erreur,de retransmission si segment erronéde retransmission si segment erroné

toutes ces opérations sont laissées à la discrétion toutes ces opérations sont laissées à la discrétion des processus utilisateursdes processus utilisateurs

UDP est particulièrement bien adapté aux UDP est particulièrement bien adapté aux applications clients-serveurs :applications clients-serveurs :RPC, RMI, …, DNS, …RPC, RMI, …, DNS, …

Page 61: 2 . La couche transport

UDP - RPCUDP - RPC

Nature :Nature : très semblable à un appel de fonction au sein très semblable à un appel de fonction au sein

d’une même machine :d’une même machine :envoi de paramètres, réception de valeurenvoi de paramètres, réception de valeur

RPC vise donc à rendre « locaux » des appels RPC vise donc à rendre « locaux » des appels distants :distants :définition de deux morceaux de codes (1 côté client et 1 définition de deux morceaux de codes (1 côté client et 1

côté serveur) : les stub (ou skeleton selon les langages) côté serveur) : les stub (ou skeleton selon les langages) ainsi, le stub client (sur le … client), matérialise la ainsi, le stub client (sur le … client), matérialise la

procédure localisée sur le serveur dans l’espace procédure localisée sur le serveur dans l’espace d’adressage du client. Ceci dissimule le fait que l’appel d’adressage du client. Ceci dissimule le fait que l’appel n’est pas localn’est pas local

Page 62: 2 . La couche transport

UDP - RPCUDP - RPC

tant du côté serveur que client, les applications travaillent tant du côté serveur que client, les applications travaillent comme-ci leurs appels/réponses étaient locaux. comme-ci leurs appels/réponses étaient locaux.

ce sont les stub (// proxy) qui vont réaliser les ce sont les stub (// proxy) qui vont réaliser les communications réseaux sans obliger les développeurs à communications réseaux sans obliger les développeurs à utiliser des E/S sur socketsutiliser des E/S sur sockets

Remarques :Remarques : les RPC comportent malheureusement certains problèmes les RPC comportent malheureusement certains problèmes

plus ou moins aigus selon les langages :plus ou moins aigus selon les langages : plus de notion de variable globaleplus de notion de variable globale le typage des paramètres ne peut pas toujours être déduit des en-le typage des paramètres ne peut pas toujours être déduit des en-

têtestêtes passage de pointeurs mémoires problématiques, …passage de pointeurs mémoires problématiques, …

Page 63: 2 . La couche transport

TCPTCP

Transmission Control ProtocolTransmission Control ProtocolLa plupart des applications Internet réclament :La plupart des applications Internet réclament :

une remise séquentielleune remise séquentielle fiablefiable

TCP a été spécialement conçu pour fiabiliser TCP a été spécialement conçu pour fiabiliser une communication empruntant un grand une communication empruntant un grand nombre de réseaux hétérogènes et nombre de réseaux hétérogènes et potentiellement non fiablespotentiellement non fiables

Page 64: 2 . La couche transport

TCPTCP

Défini par la RFC 793Défini par la RFC 793Corrigé par les RFC 1122 et 1323Corrigé par les RFC 1122 et 1323Toute machine supportant TCP possède :Toute machine supportant TCP possède :

une Entité Transport (ET) TCPune Entité Transport (ET) TCPune procédure de bibliothèqueune procédure de bibliothèqueun processus gérant l’interface avec IPun processus gérant l’interface avec IP

Page 65: 2 . La couche transport

TCPTCP

Cette machine accepte :Cette machine accepte :des flux de données utilisateurs venant de des flux de données utilisateurs venant de

processus locauxprocessus locauxelle les fragmente en unités de taille < à 64 KBits :elle les fragmente en unités de taille < à 64 KBits :

en pratique 1.460 bytes pour entrer dans une trame en pratique 1.460 bytes pour entrer dans une trame Ethernet (avec en-tête IP et TCP)Ethernet (avec en-tête IP et TCP)

envoie chaque unité sous forme de datagramme IPenvoie chaque unité sous forme de datagramme IPEn cas de réception par la couche IP, la couche En cas de réception par la couche IP, la couche

4 effectue le travail de reconstruction4 effectue le travail de reconstruction

Page 66: 2 . La couche transport

TCP – modèle de serviceTCP – modèle de service

Pour disposer d’un service TCP, il faut deux Pour disposer d’un service TCP, il faut deux points de connexion : points de connexion : les sockets :les sockets :

chacun possède un numéro, ou adresse, constitué de chacun possède un numéro, ou adresse, constitué de l’IP de l’ordinateur hôte et d’un nombre de 16 bits local l’IP de l’ordinateur hôte et d’un nombre de 16 bits local à ce dernier à ce dernier

le port n’est autre que le TSAP de TCPle port n’est autre que le TSAP de TCP

Les connexions sont identifiées par les ID des Les connexions sont identifiées par les ID des sockets (socket1,socket2)sockets (socket1,socket2)

Page 67: 2 . La couche transport

TCP – modèle de serviceTCP – modèle de service

Les ports dont les numéros sont < à 1024 Les ports dont les numéros sont < à 1024 sont appelés sont appelés ports réservésports réservés (well-know port) (well-know port)

Exemple :Exemple :21 21 FTP FTP23 23 Telnet Telnet25 25 SMTP SMTP80 80 HTTP HTTP110 110 POP3 POP3

Page 68: 2 . La couche transport

TCP – modèle de serviceTCP – modèle de service

Tous les ports ne sont pas actifs au Tous les ports ne sont pas actifs au démarrage. Les démons à leur écoute démarrage. Les démons à leur écoute encombreraient inutilement la mémoire :encombreraient inutilement la mémoire :sous UNIX, la technique est celle d’un démon sous UNIX, la technique est celle d’un démon

générique qui écoute tous les ports :générique qui écoute tous les ports :lorsqu’un processus souhaite se connecter à un port lorsqu’un processus souhaite se connecter à un port

spécifique, sa demande est reçue par le démon spécifique, sa demande est reçue par le démon générique (générique (inetdinetd), qui active le démon adéquat et lui ), qui active le démon adéquat et lui passe la requête pour traitementpasse la requête pour traitement

Page 69: 2 . La couche transport

TCP – modèle de serviceTCP – modèle de service

Mode :Mode : toutes les connexions TCP sont bidirectionnellestoutes les connexions TCP sont bidirectionnelles flux de bytes et non de messages :flux de bytes et non de messages :

la délimitation des messages n’est donc pas garantie de la délimitation des messages n’est donc pas garantie de bout-en-bout : bout-en-bout :

l’émetteur peut envoyer 4 * 512 bytes et le récepteur se voir l’émetteur peut envoyer 4 * 512 bytes et le récepteur se voir livrer 1 * 2.048 byteslivrer 1 * 2.048 bytes

quand une application fournit des données à TCP, celui quand une application fournit des données à TCP, celui peut, à sa guise, les stocker ou les envoyer peut, à sa guise, les stocker ou les envoyer (optimisation) :(optimisation) :

l’application peut forcer l’envoi immédiat via le drapeau PUSH. l’application peut forcer l’envoi immédiat via le drapeau PUSH. Attention toutefois, pas toujours implémentéAttention toutefois, pas toujours implémenté

Page 70: 2 . La couche transport

TCP – ProtocoleTCP – Protocole

Les ET TCP échangent les données :Les ET TCP échangent les données :sous forme de segments :sous forme de segments :

un segment est formé :un segment est formé : en-tête de longueur fixe de 20 bytesen-tête de longueur fixe de 20 bytes d’une partie optionnelled’une partie optionnelle suite de zéro ou plusieurs bytes de donnéessuite de zéro ou plusieurs bytes de données

le logiciel détermine la taille des segments :le logiciel détermine la taille des segments :soit il accumule les données provenant de plusieurs soit il accumule les données provenant de plusieurs

écritures dans un seul segmentécritures dans un seul segmentsoit il fragmente les données d’une seule écriture en soit il fragmente les données d’une seule écriture en

plusieurs segmentsplusieurs segments

Page 71: 2 . La couche transport

TCP – ProtocoleTCP – Protocole

Limitations :Limitations :un segment, en-tête TCP comprise, doit pouvoir un segment, en-tête TCP comprise, doit pouvoir

tenir dans la charge utile d’un paquet IP (65.535 tenir dans la charge utile d’un paquet IP (65.535 bits)bits)

chaque réseau possède sa propre MTU :chaque réseau possède sa propre MTU :(Maximum Transfert Unit)(Maximum Transfert Unit)dans laquelle le segment doit s’insérerdans laquelle le segment doit s’insérer

en pratique, la taille est de 1.500 bytes car il en pratique, la taille est de 1.500 bytes car il s’agit de la charge utile d’une trame Ethernets’agit de la charge utile d’une trame Ethernet

Le protocole utilise les fenêtres à anticipation Le protocole utilise les fenêtres à anticipation cfr. 1080cfr. 1080

Page 72: 2 . La couche transport

TCP – En-têteTCP – En-tête

Port source Port de destination

numéro de séquence

Numéro d’accusé de réception

32 Bits

Longueur del’en-tête TCP

Taille de la fenêtreURG

ACK

PSH

RST

SYN

FIN

Total de contrôle Pointeur urgent

Options (0 ou plusieurs mots de 32 bits)

Données (optionnel)

6 Bits

1 Bit

Page 73: 2 . La couche transport

TCP – En-têteTCP – En-tête

Port source / destinationPort source / destination : : identifient les extrémités locales de la connexionidentifient les extrémités locales de la connexionun port et l’adresse IP de l’hôte forment un point un port et l’adresse IP de l’hôte forment un point

final unique de 48 bitsfinal unique de 48 bits le doublet (point final source / destination) identifie le doublet (point final source / destination) identifie

la connexionla connexionNuméro de séquence / Numéro d’accuséNuméro de séquence / Numéro d’accusé : :

rôle habituel d’ordonnancementrôle habituel d’ordonnancement rem : le second indique le prochain octet attendu rem : le second indique le prochain octet attendu

et non le dernier correctement reçuet non le dernier correctement reçu

Page 74: 2 . La couche transport

TCP – En-têteTCP – En-tête

Longueur Longueur :: indique le nombre de mots de 32 bits de l’en-tête. indique le nombre de mots de 32 bits de l’en-tête.

Comme la longueur du champ Comme la longueur du champ OptionsOptions est est variable, variable, LongueurLongueur indique donc le point de départ indique donc le point de départ des données au sein du segment :des données au sein du segment :point de départ mesuré en mots de 32 bitspoint de départ mesuré en mots de 32 bits

6 bits non utilisés6 bits non utilisés

Page 75: 2 . La couche transport

TCP – En-têteTCP – En-tête

6 drapeaux :6 drapeaux :URGURG : pointeur d’urgence. Donne un décalage en : pointeur d’urgence. Donne un décalage en

octet à partir du numéro de séquence courant. Il octet à partir du numéro de séquence courant. Il indique où trouver les données urgentesindique où trouver les données urgentes

ACKACK : mis à 1 pour indiquer la validité du : mis à 1 pour indiquer la validité du Numéro Numéro d’accusé de réception. d’accusé de réception. Si 0, alors il n’y a pas Si 0, alors il n’y a pas d’acquittement et le champ d’acquittement et le champ Numéro d’accusé de Numéro d’accusé de réceptionréception est ignoré est ignoré

PSHPSH : pousse TCP à envoyer les données : pousse TCP à envoyer les données immédiatement, sans les accumulerimmédiatement, sans les accumuler

Page 76: 2 . La couche transport

TCP – En-têteTCP – En-tête

RSTRST : réinitialise une connexion devenue : réinitialise une connexion devenue incohérente. Permet également de rejeter un incohérente. Permet également de rejeter un segment erroné. Utilisé enfin pour refuser segment erroné. Utilisé enfin pour refuser l’ouverture d’une connexionl’ouverture d’une connexion

SYNSYN : utile pour établir une connexion. La : utile pour établir une connexion. La demande de connexion met SYN à 1 et ACK à 0. demande de connexion met SYN à 1 et ACK à 0. La réponse à cette demande contient un SYN à 1 La réponse à cette demande contient un SYN à 1 et un ACK à 1. Comme le SYN est utilisé à la fois et un ACK à 1. Comme le SYN est utilisé à la fois pour une demande et une communication pour une demande et une communication acceptée, c’est le bit ACK qui différencie la natureacceptée, c’est le bit ACK qui différencie la nature

Page 77: 2 . La couche transport

TCP – En-têteTCP – En-tête

FINFIN : libère une connexion. Il indique que : libère une connexion. Il indique que l’émetteur n’a plus rien à transmettre. Ce qui ne l’émetteur n’a plus rien à transmettre. Ce qui ne l’empêche pas de pourvoir continuer à recevoir l’empêche pas de pourvoir continuer à recevoir (cfr. 3 ways handshake)(cfr. 3 ways handshake)

Taille de fenêtreTaille de fenêtre : :puisque TCP utilise des fenêtres dynamiques, ce puisque TCP utilise des fenêtres dynamiques, ce

champ indique combien on peut transmettre champ indique combien on peut transmettre d’octets après l’octet acquitté. La valeur 0 dans ce d’octets après l’octet acquitté. La valeur 0 dans ce champ indique que tous les octets jusqu’au champ indique que tous les octets jusqu’au Numéro d’accuséNuméro d’accusé – 1 ont été reçus – 1 ont été reçus

Page 78: 2 . La couche transport

TCP – En-têteTCP – En-tête

Total de contrôleTotal de contrôle : : le calcul du CRC porte sur :le calcul du CRC porte sur :

l’en-têtel’en-têteles données et la pseudo en-tête (IP)les données et la pseudo en-tête (IP)

Adresse destination

32 Bits

0 0 0 0 0 0 0 0 Longueur du segment TCP

Adresse source

Protocole = 6Pseudo en-

tête

Page 79: 2 . La couche transport

TCP – pseudo en-têteTCP – pseudo en-tête

la prise en compte de la pseudo en-tête dans le la prise en compte de la pseudo en-tête dans le calcul du total de contrôle permet de détecter les calcul du total de contrôle permet de détecter les paquets non délivrés :paquets non délivrés :mais violation du principe de la hiérarchie des mais violation du principe de la hiérarchie des

protocoles :protocoles : en effet, les paquets IP appartiennent à la couche IP et non en effet, les paquets IP appartiennent à la couche IP et non

TCPTCP

Page 80: 2 . La couche transport

Etablissement d’une connexionEtablissement d’une connexion

Méthode en 3 étapes :Méthode en 3 étapes : le ‘serveur’ est en attente : le ‘serveur’ est en attente : listen, acceptlisten, accept : :

désignation d’une source précise, acceptation d’un appel d’où qu’il désignation d’une source précise, acceptation d’un appel d’où qu’il viennevienne

le ‘client’ exécute un le ‘client’ exécute un connectconnect : : en indiquant l’IP et le port souhaité, …en indiquant l’IP et le port souhaité, … la primitive connect envoie un segment TCP avec :la primitive connect envoie un segment TCP avec :

SYN à 1 et ACK à 0SYN à 1 et ACK à 0

quand ce dernier segment arrive, l’entité TCP cherche une quand ce dernier segment arrive, l’entité TCP cherche une application à l’écoute du port indiqué :application à l’écoute du port indiqué :

si elle trouve : le processus à l’écoute reçoit le segment TCPsi elle trouve : le processus à l’écoute reçoit le segment TCP sinon, l’entité TCP envoie une réponse avec RST à 1sinon, l’entité TCP envoie une réponse avec RST à 1

Page 81: 2 . La couche transport

Libération de la connexion TCPLibération de la connexion TCP

Toutes les connexions étant bidirectionnelles :Toutes les connexions étant bidirectionnelles : la libération revient en fait à agir comme s’il la libération revient en fait à agir comme s’il

existait deux connexions unidirectionnelles :existait deux connexions unidirectionnelles :pour libérer, une des deux parties envoie un segment pour libérer, une des deux parties envoie un segment

avec le bit FIN sur 1 :avec le bit FIN sur 1 : cela signifie qu’elle n’a plus de données à transmettrecela signifie qu’elle n’a plus de données à transmettre lorsque ce segment est acquitté, cette direction est ferméelorsque ce segment est acquitté, cette direction est fermée

toutefois, le flux de données peut continuer sans toutefois, le flux de données peut continuer sans problème dans l’autre sens :problème dans l’autre sens :

pas de pertepas de perte

lorsque les deux sens ont été fermés, la lorsque les deux sens ont été fermés, la connexion est libéréeconnexion est libérée

Page 82: 2 . La couche transport

Libération de la connexion TCPLibération de la connexion TCP

Problème des deux armées :Problème des deux armées :pour éviter un aller-retour à l’infini des pour éviter un aller-retour à l’infini des

confirmations :confirmations :utilisation de timers :utilisation de timers :

si une réponse à un FIN n’est pas parvenue dans la limite de 2 si une réponse à un FIN n’est pas parvenue dans la limite de 2 fois la durée de vie maximale d’un paquet, alors l’émetteur du fois la durée de vie maximale d’un paquet, alors l’émetteur du FIN libère la connexionFIN libère la connexion

l’autre extrémité a son attention attirée par le fait que plus l’autre extrémité a son attention attirée par le fait que plus personne n’est à l’écoute et elle s’arrête d’elle-même.personne n’est à l’écoute et elle s’arrête d’elle-même.

En pratique, cette méthode est rarement En pratique, cette méthode est rarement défaillantedéfaillante

Page 83: 2 . La couche transport

Gestion de la connexionGestion de la connexion

Machine à états finis :Machine à états finis : filets continus épais :filets continus épais :

chemin normal d’un clientchemin normal d’un client filets discontinus épais :filets discontinus épais :

chemin normal d’un serveurchemin normal d’un serveur filets maigres :filets maigres :

événements inhabituelsévénements inhabituels chaque transition :chaque transition :

prend le nom de l’événement qui la prend le nom de l’événement qui la provoque et celui de l’action qui en provoque et celui de l’action qui en résulte :résulte :

FIN/ACKFIN/ACK

entre parenthèses :entre parenthèses : commentairescommentaires

Page 84: 2 . La couche transport

Politique de transmission de TCPPolitique de transmission de TCP

Gestion des fenêtres :Gestion des fenêtres :dans TCP, non directement liée aux accusés de dans TCP, non directement liée aux accusés de

réceptionréceptionexemple :exemple :

si un récepteur possède une mémoire tampon de 4.096 si un récepteur possède une mémoire tampon de 4.096 octets et qu’un émetteur transmet un segment de 2.048 octets et qu’un émetteur transmet un segment de 2.048 octets. Le récepteur, s’il le reçoit correctement, octets. Le récepteur, s’il le reçoit correctement, acquittera ce segment sans pour autant être obligé de acquittera ce segment sans pour autant être obligé de le transmettre à l’application concernée. Il adaptera (et le transmettre à l’application concernée. Il adaptera (et le fera savoir) la taille de sa fenêtre et reste à l’écoutele fera savoir) la taille de sa fenêtre et reste à l’écoute

Page 85: 2 . La couche transport

Politique de transmission de TCPPolitique de transmission de TCPEmetteur Récepteur Tampon du récepteur

L’application écrit 2 Kb

2K | SEQ = 0

ACK = 2048 WIN = 2048

2K | SEQ = 2048

ACK = 4096 WIN = 0

ACK = 4096 WIN = 2048

1K | SEQ = 4096

vide

2 K

Plein

2 K

2 K1 K

L’application lit 2 Kb

L’application écrit à nouveau 2 Kb

L’émetteur peut envoyer jusqu’à 2 Kb

L’émetteur est bloqué

Page 86: 2 . La couche transport

Politique de transmission de TCPPolitique de transmission de TCP

Pourquoi :Pourquoi :optimisation :optimisation :

il est plus rationnel d’envoyer un segment de 4.096 que il est plus rationnel d’envoyer un segment de 4.096 que deux de 2.048 (moins de gaspillage de largeur de bande)deux de 2.048 (moins de gaspillage de largeur de bande)

Toutefois :Toutefois : le regroupement en gros segments n’est pas toujours le regroupement en gros segments n’est pas toujours

souhaitable :souhaitable :ainsi l’algorithme de Nagle (qui vise à accumuler dans le ainsi l’algorithme de Nagle (qui vise à accumuler dans le

tampon) génère des problèmes dans le cas ou il faut tampon) génère des problèmes dans le cas ou il faut envoyer les petits segments :envoyer les petits segments :

cas du X Windows avec segment portant coordonnées souriscas du X Windows avec segment portant coordonnées souris

Page 87: 2 . La couche transport

Contrôle de congestionContrôle de congestion

Quid si la charge est plus importante que ce Quid si la charge est plus importante que ce que l’on peut gérer ?que l’on peut gérer ?une congestion apparaîtune congestion apparaîtnous avons déjà dit que la couche réseau nous avons déjà dit que la couche réseau

s’occupait de gérer cette problématiques’occupait de gérer cette problématiquec’est toutefois TCP qui fait la grosse partie du c’est toutefois TCP qui fait la grosse partie du

travail travail principe : principe :

on n’injecte pas un nouveau paquet tant qu’un ancien on n’injecte pas un nouveau paquet tant qu’un ancien subsiste :subsiste :

recours à la gestion dynamique de la taille des fenêtresrecours à la gestion dynamique de la taille des fenêtres

Page 88: 2 . La couche transport

Contrôle de congestionContrôle de congestion

Principe de base :Principe de base : pour éviter la congestion, il faut faire de la détectionpour éviter la congestion, il faut faire de la détection dans le passé c’était difficile. En effet, l’expiration des dans le passé c’était difficile. En effet, l’expiration des

timers pouvait être aussi bien due à une réelle congestion timers pouvait être aussi bien due à une réelle congestion qu’à une distorsion du signal due à la piètre qualité des qu’à une distorsion du signal due à la piètre qualité des ligneslignes

actuellement, les principales artères étant en fibres actuellement, les principales artères étant en fibres optiques, les timers expirent la majeur partie du temps à optiques, les timers expirent la majeur partie du temps à cause des seules congestionscause des seules congestions

Tous les algorithmes de TCP se base sur cette Tous les algorithmes de TCP se base sur cette constatationconstatation

Page 89: 2 . La couche transport

Contrôle de congestionContrôle de congestion

Il existe deux problèmes potentiels :Il existe deux problèmes potentiels :congestion du récepteur :congestion du récepteur :

car il a des capacités de traitement plus faibles de car il a des capacités de traitement plus faibles de l’émetteurl’émetteur

ce cas est ‘facile’ à traiter :ce cas est ‘facile’ à traiter : lors de l’établissement de la connexion, les deux ET se mettent lors de l’établissement de la connexion, les deux ET se mettent

d’accord sur la vitesse, le débitd’accord sur la vitesse, le débit utilisation de la fenêtre de congestion qui reflète le nombre de utilisation de la fenêtre de congestion qui reflète le nombre de

byte que l’émetteur peut envoyer :byte que l’émetteur peut envoyer : initialisation à la taille maximale d’un segment, puis, tant initialisation à la taille maximale d’un segment, puis, tant

que tout va bien, cette taille est systématiquement que tout va bien, cette taille est systématiquement doublée.doublée.

c’est l’algorithme dit à c’est l’algorithme dit à démarrage lentdémarrage lent

Page 90: 2 . La couche transport

Contrôle de congestionContrôle de congestion

congestion du réseau :congestion du réseau : utilisation des fenêtres récepteur et de congestionutilisation des fenêtres récepteur et de congestion définition d’un nouveau paramètre :définition d’un nouveau paramètre :

le seuil de congestionle seuil de congestion (threshold) : (threshold) : valeur initial 64 Kbvaleur initial 64 Kb quand un timer expire (signe de congestion réseau), on quand un timer expire (signe de congestion réseau), on

redimensionne le seuil à la moitié de la taille de la fenêtre de redimensionne le seuil à la moitié de la taille de la fenêtre de congestion courante et on réinitialise la fenêtre de congestion à la congestion courante et on réinitialise la fenêtre de congestion à la taille maximale de segmenttaille maximale de segment

on utilise alors le démarrage lent pour déterminer la capacité on utilise alors le démarrage lent pour déterminer la capacité d’absorption du réseau à ceci près que la croissance d’absorption du réseau à ceci près que la croissance exponentielle est stoppée dès que le seuil est atteintexponentielle est stoppée dès que le seuil est atteint

à partir de là, les transmissions réussies font croître linéairement à partir de là, les transmissions réussies font croître linéairement (un seul segment pour l’ensemble des segments de la fenêtre au (un seul segment pour l’ensemble des segments de la fenêtre au lieu d’un par segment acquitté) la fenêtre de congestionlieu d’un par segment acquitté) la fenêtre de congestion

Page 91: 2 . La couche transport

Contrôle de congestionContrôle de congestion