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
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
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
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
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
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
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
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)
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
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.
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
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
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
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……
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
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
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
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
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
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
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
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
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
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..
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é.
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
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
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.
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Contrôle de fluxContrôle de flux
Lignes de routage
Vers le routeur Vers le routeur
Adresse de transport Adresse de
réseau
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
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
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
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)
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, …
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
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, …
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
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
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
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)
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
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
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é
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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é
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
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
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
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
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
Contrôle de congestionContrôle de congestion