0% ont trouvé ce document utile (0 vote)
24 vues16 pages

Cours 3

Le document traite du protocole ICMP encapsulé dans IP, qui gère les messages d'erreur et les communications entre machines. Il aborde également le modèle client-serveur utilisant des sockets pour la communication entre processus distants, ainsi que les principes de TCP, y compris la gestion des connexions, le contrôle de flux et de congestion. Enfin, il explique les mécanismes de fiabilité et de transmission de données dans TCP, ainsi que les algorithmes de contrôle de congestion.

Transféré par

YOYOFRX
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • fenêtre coulissante,
  • sockets,
  • interface transport,
  • en-tête UDP,
  • réception,
  • algorithmes de contrôle,
  • délai,
  • ICMP,
  • données désordonnées,
  • en-tête TCP
0% ont trouvé ce document utile (0 vote)
24 vues16 pages

Cours 3

Le document traite du protocole ICMP encapsulé dans IP, qui gère les messages d'erreur et les communications entre machines. Il aborde également le modèle client-serveur utilisant des sockets pour la communication entre processus distants, ainsi que les principes de TCP, y compris la gestion des connexions, le contrôle de flux et de congestion. Enfin, il explique les mécanismes de fiabilité et de transmission de données dans TCP, ainsi que les algorithmes de contrôle de congestion.

Transféré par

YOYOFRX
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • fenêtre coulissante,
  • sockets,
  • interface transport,
  • en-tête UDP,
  • réception,
  • algorithmes de contrôle,
  • délai,
  • ICMP,
  • données désordonnées,
  • en-tête TCP

ICMP encapsulé dans IP

en- type code checksum message


tête (8 bits) (8 bits) (16 bits) (taille variable)

ICMP
type code message signification
8 0 demande
ECHO
utilisé par ping pour test réseau envoi data destinataire et
demande réponse
dest.
3 0 innaccessible réseau inaccessible
dest.
3 1 innaccessible
machine inaccessible
3 2 dest.
innaccessible
protocole inaccessible
3 3 dest.
innaccessible
port inaccessible
… … … rfc 792
4

ICMP Exemple
✦ Internet Control Message Protocol
mac dest mac src IP v4
0000 00 15 56 3d ce 21 00 19 e3 d3 31 4d 08 00 45 00 ..V=.!.. ..1M..E.
✦ gestion des informations d’erreurs des machines connectées 0010 00 54 17 ee 00 00 40 01 df 5e c0 a8 01 0b c0 a8 .T....@. .^......
0020 01 01 08 00 76 23 df 0a 00 00 4b 7e ce 78 00 0d ....v#.. ..K~.x..
0030 9d ca 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 ........ ........
✦ peu de contrôle dans IP et ICMP signale les erreurs aux 0040 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 ........ .. !"#$%
protocoles des couches voisines 0050 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 &'()*+,- ./012345

✦ ICMP utilisé par routeurs pour signaler une erreur (un


0060 36 37 ttl icmp IP src 67

problème de dépôt delivery) checksum


✦ si erreur dans un datagramme ICMP, pas de message code
d’erreur (éviter effet boule de neige) type

3 5
Client-serveur
[Link]:34321

Modèle client- [Link]:45321

serveur ✦ Appli client-serveur utilise des sockets


✦ sockets fournissent interface d’utilisation aisée TCP ou UDP
✦ socket: moyen de désigner l’extrémité d’une connexion coté
émetteur ou récepteur en l'associant à un port
✦ Quand la cnx (bidirectionnelle) est établie via des sockets, client
et serveur peuvent communiquer par de simples lectures/
écritures
8

Le modèle client-serveur Le modèle client-serveur


(asymétrique ) Association
§ Serveur
§ Démarre en premier § Association : quintuplet
§ Ouvre un canal de communication (port de transport) et attend { protocole, @IPlocal, porttransportlocal, @IPdistant, porttransportdistant }
§ Sur réception d’une requête client,
- serveur “itératif” traite la demande, retourne le réponse et re-attend § Identifie sans ambiguïté un couple d’applications sur 2 stations distantes
un serveur “itératif” ne termine jamais de lui même
- serveur “concurrent” crée un nouveau flot de contrôle dédié à ce client;
ce nouveau flot de contrôle se termine quand le client se déconnecte § Protocoles principaux :
§ TCP: sockets en mode “stream” (orienté connexion)
§ Client
§ UDP: socket en mode “datagram” (sans connexion)
§ Ouvre un canal de communication et se connecte à un serveur distant
§ Boucle: transmission de requête – attente de réponse
§ Clôt la communication et termine
Où les trouver? Services de la couche transport
✦ fournissent une communication logique
✦ sockets fournissent une Application entre les processus applicatifs distants

système
interface d’accès, à partir d’un
✦ fonctionnent en mode client serveur:
interface sockets
hôte, aux interfaces de ✦ émetteur: segmente les messages
sockets mode sockets mode et les passe à la couche réseau
transport TCP et UDP connecté non connecté
interface
✦ récepteur: ré-assemble les
transport segments en messages fournis à la
✦ TCP: liaison établie au couche applicative
préalable entre C et S avant TCP UDP

réseau
✦ Deux protocoles de transport:
échange flot interface ✦ TCP: fiable (sans perte),
réseau
✦ UDP: pas de liaison établie; livraison dans l’ordre des
échanges de messages données
IP
individuels ✦ UDP: sans garantie d’ordre dans
la livraison

10

Transport vs Réseau
✦ Couche réseau:
communication logique entre machines
✦ Couche transport: TCP
communication logique entre processus:
✦ s’appuie sur la couche réseau pour l’envoi
effectif des données.
TCP Transfert de données
✦ transfert flux continu en le découpant en segments (à cause MTU;
pour ethernet 1500 octets). Variable Max. Seg. Size qui doit
passer par le lien
✦ Service connecté et fiable de transmission de ✦ décide en général de lui-même les endroits où le flux de données
données entre 2 machines doit être coupé
✦ Utilise IP (non fiable) pour la transmission ✦ les utilisateurs ont parfois besoin de savoir que toutes les données
réseau soumises à TCP ont bien été émises
✦ TCP transporte environ 90% des octets sur ✦ une fonction «push» force TCP à envoyer les données
Internet immédiatement
✦ un flag signale des données comme urgentes et force TCP à
les transmettre rapidement

14 16

Aperçu de TCP Gestion des erreurs


✦ transfert de données de base ✦ considérations et traitement du cas des données
✦ gestion des erreurs ✦ perdues/erronées/dupliquées/désordonnées

✦ utilisation de n° de séquence
✦ contrôle de flux ✦ pour réordonner le flux original

✦ éliminer les segments dupliqués


✦ multiplexage ✦ utilisation des acquittements (émis par le destinataire)
✦ retransmission segments perdus
✦ gestion de connexions
✦ détection erreurs de transmission par CRC
✦ priorité et sécurité

15 17
Contrôle de flux/congestion Principes de TCP
✦ TCP fournit au destinataire un moyen de ✦ Etablissement de connexion préalable au transfert des
contrôler le débit des données envoyées par la données → ouverture de socket, réservation de buffer
source ✦ Récupération des pertes (perte ≠ erreur) avec acquittements
✦ pour que l'émetteur n'émette pas trop vite par rapport (ACK) et lutte contre les déséquencements de segments.
au récepteur ou au canal ✦ Pertes interprétées comme signal de congestion → diminution
débit
✦ une information (avec chaque acquittement)
indique la capacité de réception instantanée ✦ Contrôle de flux: pour que l'émetteur n'émette pas trop vite
sous la forme d’une fenêtre par rapport au récepteur

18 20

Multiplexage Gestion des connexions


✦ TCP permet à plusieurs processus d'une même ✦ Pour la fiabilité et le contrôle de flux : initialisation et
machine de communiquer simultanément par sockets infos à chaque communication
(point d'accès pour les services de transport) ✦ Une connexion est la combinaison des infos :
✦ possède un type: quel protocole? quel mode?
✦ les sockets
✦ utilise un ensemble de primitives de service
✦ les fenêtres
✦ encapsule les données: descriptif, file d'attente des
✦ les n° de séquence
messages
✦ identifié par un couple unique (n° port, @IP)
✦ Les processus TCP qui communiquent doivent d'abord
négocier et établir une connexion de façon bilatérale
✦ connexion requiert mise en place 2 sockets
✦ socket peut être utilisé par plusieurs connexions
✦ Connexion fermée en fin de comm (libérer ressources)

19 21
Gestion des connexions Triple poignée de main
✦ Suite de segments TCP vides avec des drapeaux
spéciaux dans l’en-tête: U,A,P,R,S,F
✦ 3 phases: ✦ ACK: pour les segments qui ne sont que des
acquittements
✦ établir connexion (SYN/SYN-ACK/ACK)
✦ SYN, FIN: pour établir et clore la connexion
✦ transfert informations
✦ RST (reset) URG (urgentes) PSH (push data
✦ libération de la connexion now)
✦ Le signal ACK de l’étape 3 peut contenir des données

22

Etablir connexion Gestion connexion


✦ n° séq. et (ack) pour réordonner les données
✦ n° séq. pour source Initial Sequence Number
✦ n° ack pour destinataire généré aléatoirement
✦ tous segments reçus doivent être acquittés

✦ 3 phases:
SYN (ISN
=n° séq.=x) ✦ établir connexion (SYN/SYN-ACK/ACK)
✦ transfert informations
q.=y, ack=x+1)
SYN ACK(n° sé
✦ libération de la connexion
ACK(n° séq.=
x+1, ack=y+1)

+ infos taille fenêtre 2 n° présents=piggybacking 25


23
Transfert Les différents buffers
buffer de 4Ko
2Ko|seq=0 • Une socket contient un buffer pour l’émission des
données Application → TCP et un pour la réception
=204 8
ACK=2048 WIN TCP → Application
2Ko|seq=20
48
• 2 autres buffers entre couche TCP et couche réseau:
• Buffer émission : segments émis gardés en mémoire
bloqué

=0
ACK=4096 WIN tant que l'émetteur n'a pas reçu d’acquittement
appli lit 2 kO
ACK=4096 WIN
=2048 • Buffer réception: si récepteur reçoit les segments
1,3 puis 2 : il donne 1 à l'application puis garde 3 en
1Ko|seq=4096 mémoire tant qu'il n'a pas reçu 2 car les données
doivent être ordonnées

26 28

Les différents buffers Utilisation des ack


• Circulation bidirectionnelle des données
• TCP transporte des octets ; tous les numéros de
séquence/ack sont en octets!
• Pour un sens donné:
• Le numéro de séquence correspond au premier
octet porté par le segment
• Le numéro d'ack au numéro du prochain octet
attendu dans l'autre sens.

27 29
N° seq. et ack. Gestion connexion
✦ n° seq:

✦ Numéro, dans le flux d’octets,


✦ 3 phases:
du premier octet transporté
✦ établir connexion (SYN/SYN-ACK/ACK)
✦ n° ack:
✦ transfert informations
✦ Numéro de seq. du prochain
octet attendu par émetteur ✦ libération de la connexion
✦ ACK cumulatifs

32

Fiabilité transmission Déconnexion symétrique


envoi DR+
démarrage envoi DR+
timer DR démarrage
timer
✦ Comment l’émetteur sait-il qu’il y a eu une perte? déconnexio
DR
✦ TCP observe les numéros de séquence envoi ACK délai
ACK
✦ Principe: s’il y a des trous, il renvoie

déconnexion
après délai
31 34
Déconnexion asymétrique Contrôle de flux
✦ fenêtre coulissante (sliding window)
CR ✦ WIN=0, source ne peut émettre qu’un octet pour:
✦ stopper l’application distante

✦ demander au destinataire d’annoncer


ACK ✦ prochain octet attendu

DATA ✦ taille fenêtre réception

DATA DR
transmis et transmis, non non non
pas de données délivrées
après requête de
acquitté acquitté transmis tranmissible
37
déconnexion début 39 fin

Contrôle de flux Contrôle de flux Application

S1
S2
✦ Pour que l'émetteur n'émette pas trop vite par rapport
S3
au récepteur
✦ Pour éviter ce problème, on surveille le buffer TCP/ taille fenêtre émission W=3 S4
Application coté récepteur (au niveau socket)
Emetteur Récepteur
✦ TCP envoie le nombre d’octets restants dans le buffer
dans un champ fenêtre de réception de l’en-tête TCP S1,...,S4 reçus; non consommés
taille buffer socket = 4
Ack S4, adv. win=0 récepteur envoie ack avec
fenêtre réception 0
taille fenêtre émission W=min(3,0)=0

Emetteur

40
Algos de contrôle Congestion
✦ Nagle: ✦ La congestion intervient lorsque trop de sources tentent d'envoyer trop
✦ pour applis interactives (telnet, X); travail par de données trop vite pour que le réseau soit capable de les transmettre.
caractère ✦ entraîne perte de paquets (signe de congestion) ; augmente les délais.
✦ envoi 1° car. puis buffering jusqu’à ack

(sauf si remplissage segment entre temps) ✦ Les acquittements des données émises, ou l'absence d'acquittements,
sont utilisés par les émetteurs pour interpréter de façon implicite l'état
✦ Silly window syndrome du réseau entre les systèmes. À l'aide de temporisations, émetteurs et
✦ minimise ack
récepteurs TCP peuvent modifier le comportement du flux de données.
✦ attente possibilité réception MSS (buffer plein à C'est le contrôle de congestion.
moitié) Beaucoup d'algorithmes d'évitement de congestion pour TCP : autant de
✦ complémentaire du précédent
version de TCP.

41 43

Contrôle congestion Principe du contrôle de congestion

cw
nd
Se fait par le contrôle de la fenêtre

oc

te
d’émission (ou de congestion) de

ts
taille cwnd en octets

RTT
✦ débit=cwnd/RTT [octets/s]

s)
✦ cwnd ajustée en fonction des pertes:

k(
ac
✦ si perte cwnd diminue
✦ sinon on augmente

42 44
Fenêtres émetteur Timers
✦ Buffer émission: données appli de Sender
taille cwnd= ✦ RTT= temps entre envoi paquet et réception ACK
✦ sous-fenêtre mobile fenêtre

émission ✦ retransmission: démarré à chaque envoi paquet


✦ nb max paquets émetteur peut en attente ack et fonction RTT (eg. RTO=2*RTT):
envoyer sans ACK C’est le RTO (retransmission timeout)
✦ débit = cwnd/RTT en bps

✦ Buffer réception: espace stockage Receiver


✦ persistance: pour débloquer situation après
des données (reçues ou pas) de taille fenêtre émission=0
rwnd: nb max de paquets que
récepteur peut accepter à un instant ✦ inactivité: vérifie présence correspondant
(espace libre récepteur)
✦ ssthresh: estimation bande passante ✦ déconnexion: 2*TTL
dispo (taille max fenêtre émission)
45 47

✦ système de fenêtrage pour congestion


Accusés de réception
nb octets transmissibles= moyenne 2 fenêtres
✦ détection congestion par pertes ✦ récepteur -> émetteur: n° 1er octet attendu par
✦ gestion congestion seulement par émetteur récepteur
✦ réparer congestion soit par: ✦ TCP classique: ACK cumulatifs
✦ DupACK: ACK identique au précédent
✦ diminution débit ✦ cas où paquet N arrive avant N-1; son ACK

✦ réduction fenêtre à 1 segment est identique ACK N-2


✦ réduction fenêtre congestion de moitié et ✦ Delayed ACK: retarde AR
✦ après min{2è paquet reçu, tps fixe -500ms-}
doubler temporisation de retransmission

46 48
Algos de base TCP : Tahoe
géré par timer
✦ “slow start” cwnd<ssthresh
✦ après congestion ne pas remonter trop vite:

✦ init. fenêtre à 1 segment


seuil initial
✦ augmentation de 1 à chaque ack

✦ cwnd double à chaque RTT (exponentiel)

✦ atteinte ssthresh-> congestion avoidance

✦ perte: ssthresh=cwnd/2; cwnd=1->slow start nouveau seuil


✦ “congestion avoidance” quand cwnd≥ssthresh
✦ pour stopper augmentation trop rapide

✦ à partir d’un seuil (+1 segment par RTT)

✦ perte: ssthresh=cwnd/2; cwnd=1 ->slow start

Slow start + congestion avoidance + fast retransmit


49
51

Algos de base Machine à états finis


✦ “fast retransmit” (détecte perte et retransmet)
✦ si 3 dupACK ou pas ACK au timeout on

retransmet paquet->slow start


✦ “fast recovery”
✦ si plusieurs dupACK, 1 seule perte

✦ cwnd=ssthresh+3 (car 3 paquets acquittés)

✦ pour chaque dupACK, cwnd++

✦ réception non dupACK: dégonflement cwnd

✦ cwnd=ssthresh

✦ -> congestion avoidance

50 52
Modèle de base En-tête TCP
✦ N° port: entier sur 16 bits
✦ ports réservés 0..1023
✦ protocole orienté octet ✦ ports connexion 1024..49151

(ne préserve pas frontières de message) ✦ ports dynamiques 49152..65535

✦ [Link]
✦ pas de contrôle sur les émissions
(données envoyées immédiatement ou bufferisées)
✦ récupération de données urgentes

53 55

Segments TCP ✦ N° séquence associé à chaque octet


✦ sur 32 bits; correspond au n° 1er octet transmis

✦ permet de réordonner les paquets dans un flux

✦ pointeur urgence
✦ entités TCP échangent des segments: ✦ décalage en octets à partir du n° séq. permettant de
✦ en-tête 20 octets (+options) = IP
signaler les données urgentes
✦ Nb octets de données de taille variable

✦ taille segments décidée par TCP


✦ Tmax=max {65535o avec en-tête TCP, MTU}

✦ segment doit tenir dans MTU


✦ IPv4 MTUmin = 556 octets

54 56
✦ acquittement: n° d’AR d’un segment TCP est celui du ✦ checksum sur: en-tête, données et pseudo en-tête:
prochain octet de données attendu ✦ mise à 0 du champ checksum

SEQ=x N octets délivrés, ACK=x+N ✦ ajout éventuel octet nul

✦ taille de fenêtre: nb d’octets qu’on peut envoyer à la suite ✦ complément à 1 de la somme des compléments à 1 des

de l’octet acquitté mots de 16 bits

57 59

✦ URG: pointeur de données urgentes significatif ✦ Options ajoutent des possibilités non offertes dans en-tête
✦ ACK: AR significatif ✦ spécifier + grande charge utile TCP
✦ PSH: fonction push ✦ modifie échelle fenêtre avec valeur sur 30 bits
✦ RST: réinitialise cnx ✦ autorise réémission sélective avec notion NAK
✦ SYN: synchronisation n° séq. ✦ dernier mot sert pour bourrage (= 0 mod 32)
✦ FIN: fin de transmission

58 60
En-tête UDP
✦ segment avec en-tête de 8 octets
ports idem TCP
UDP

✦ longueur comprend en-tête


✦ checksum (opt.) utilise aussi pseudo en-tête

63

User Data Protocol (RFC 768) Service UDP

✦ protocole de transport en mode déconnecté


✦ service datagramme sans connexion

✦ envoi direct paquets IP au niveau couche


✦ peu overhead
transport ✦ détection erreurs par checksum,
✦ un seul paquet pour les transmissions (one- ✦ ni duplication, ni contrôle de congestion
way handshake): création paquet et
transmission immédiate
✦ Exemple:
✦ client/serveur: dns, tftp
62 64
Checksum
3 mots de 16 bits un “vrai” + avec retenue
✦ 0110011001100000
+ =1011101110110101
0101010101010101
1000111100001100 + 1000111100001100
1 0100101011000010

complément à 1=checksum 1011010100111101


destinataire fait la somme des 4 mots=1111111111111111
65

Vous aimerez peut-être aussi