ICMP ICMP encapsulé dans IP Exemple

Transcription

ICMP ICMP encapsulé dans IP Exemple
ICMP encapsulé dans IP
en-
type
code
tête (8 bits) (8 bits)
ICMP
checksum
(16 bits)
message
(taille variable)
type
code
message
signification
8
0
demande
ECHO
utilisé par ping pour test réseau envoi data destinataire et
demande réponse
3
0
dest.
innaccessible
réseau inaccessible
3
3
3
…
1
2
3
…
dest.
innaccessible
dest.
innaccessible
dest.
innaccessible
machine inaccessible
protocole inaccessible
port inaccessible
rfc 792
…
4
ICMP
✦
Internet Control Message Protocol
✦
✦
✦
✦
gestion des informations d’erreurs des machines connectées
peu de contrôle dans IP et ICMP signale les erreurs aux
protocoles des couches voisines
ICMP utilisé par routeurs pour signaler une erreur (un
problème de dépôt delivery)
si erreur dans un datagramme ICMP, pas de message
d’erreur (éviter effet boule de neige)
3
Exemple
mac dest
0000
0010
0020
0030
0040
0050
0060
mac src
00 15 56 3d ce 21 00 19
00 54 17 ee 00 00 40 01
01 01 08 00 76 23 df 0a
9d ca 08 09 0a 0b 0c 0d
16 17 18 19 1a 1b 1c 1d
26 27 28 29 2a 2b 2c 2d
36 37
IP v4
e3 d3 31 4d 08 00 45 00
df 5e c0 a8 01 0b c0 a8
00 00 4b 7e ce 78 00 0d
0e 0f 10 11 12 13 14 15
1e 1f 20 21 22 23 24 25
2e 2f 30 31 32 33 34 35
ttl icmp IP src
checksum
code
type
5
..V=.!.. ..1M..E.
.T....@. .^......
....v#.. ..K~.x..
........ ........
........ .. !"#$%
&'()*+,- ./012345
67
Client-serveur
Modèle clientserveur
134.59.9.54:34321
134.59.9.96:45321
✦ 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
la cnx (bidirectionnelle) est établie via des sockets, client
et serveur peuvent communiquer par de simples lectures/
écritures
✦ Quand
8
Le modèle client-serveur Association
Le modèle client-serveur
(asymétrique )
§
§
Serveur
§ Démarre en premier
§ Ouvre un canal de communication (port de transport) et attend
§ Sur réception d’une requête client,
- serveur “itératif” traite la demande, retourne le réponse et re-attend 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
Client
§ 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
§
Association : quintuplet
{ protocole, @IPlocal, porttransportlocal, @IPdistant, porttransportdistant }
§
Identifie sans ambiguïté un couple d’applications sur 2 stations distantes
§
Protocoles principaux :
§ TCP: sockets en mode “stream” (orienté connexion)
§ UDP: socket en mode “datagram” (sans connexion)
Où les trouver?
Services de la couche transport
✦
✦
✦
système
sockets fournissent une
interface d’accès, à partir d’un
hôte, aux interfaces de
transport TCP et UDP
TCP: liaison établie au
préalable entre C et S avant
échange flot
UDP: pas de liaison établie;
échanges de messages
individuels
✦
interface sockets
fournissent une communication logique
entre les processus applicatifs distants
fonctionnent en mode client serveur:
✦
sockets mode
connecté
sockets mode
non connecté
✦
interface
transport
réseau
✦
Application
TCP
UDP
✦
interface
réseau
émetteur: segmente les messages
et les passe à la couche réseau
récepteur: ré-assemble les
segments en messages fournis à la
couche applicative
Deux protocoles de transport:
✦
IP
✦
TCP: fiable (sans perte),
livraison dans l’ordre des
données
UDP: sans garantie d’ordre dans
la livraison
10
Transport vs Réseau
✦
✦
Couche réseau: communication logique entre machines
Couche transport: communication logique entre processus:
✦
s’appuie sur la couche réseau pour l’envoi
effectif des données.
TCP
TCP
Transfert de données
✦
✦
✦
✦
Service connecté et fiable de transmission de
données entre 2 machines
Utilise IP (non fiable) pour la transmission
réseau
TCP transporte environ 90% des octets sur
Internet
✦
✦
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
décide en général de lui-même les endroits où le flux de données
doit être coupé
les utilisateurs ont parfois besoin de savoir que toutes les données
soumises à TCP ont bien été émises
✦
✦
✦
✦
une fonction «push» force TCP à envoyer les données
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
✦
gestion des erreurs
✦
✦
contrôle de flux
✦
multiplexage
✦
✦
gestion de connexions
✦
priorité et sécurité
✦
15
considérations et traitement du cas des données
✦ perdues/erronées/dupliquées/désordonnées
utilisation de n° de séquence
✦ pour réordonner le flux original
✦ éliminer les segments dupliqués
utilisation des acquittements (émis par le destinataire)
✦ retransmission segments perdus
détection erreurs de transmission par CRC
17
Principes de TCP
Contrôle de flux/congestion
✦
TCP fournit au destinataire un moyen de
contrôler le débit des données envoyées par la
source
✦
✦
✦
✦
✦
pour que l'émetteur n'émette pas trop vite par rapport
au récepteur ou au canal
une information (avec chaque acquittement)
indique la capacité de réception instantanée
sous la forme d’une fenêtre
✦
✦
✦
✦
Etablissement de connexion préalable au transfert des
données → ouverture de socket, réservation de buffer
Récupération des pertes (perte ≠ erreur) avec acquittements
(ACK) et lutte contre les déséquencements de segments.
Pertes interprétées comme signal de congestion → diminution
débit
Contrôle de flux: pour que l'émetteur n'émette pas trop vite
par rapport au récepteur
18
20
Multiplexage
Gestion des connexions
TCP permet à plusieurs processus d'une même
machine de communiquer simultanément par sockets
(point d'accès pour les services de transport)
✦ possède un type: quel protocole? quel mode?
✦ utilise un ensemble de primitives de service
✦ encapsule les données: descriptif, file d'attente des
messages
✦ identifié par un couple unique (n° port, @IP)
connexion requiert mise en place 2 sockets
socket peut être utilisé par plusieurs connexions
19
✦
✦
✦
✦
Pour la fiabilité et le contrôle de flux : initialisation et
infos à chaque communication
Une connexion est la combinaison des infos :
✦ les sockets
✦ les fenêtres
✦ les n° de séquence
Les processus TCP qui communiquent doivent d'abord
négocier et établir une connexion de façon bilatérale
Connexion fermée en fin de comm (libérer ressources)
21
Triple poignée de main
Gestion des connexions
✦
✦
3 phases:
Suite de segments TCP vides avec des drapeaux
spéciaux dans l’en-tête: U,A,P,R,S,F
✦
✦
établir connexion (SYN/SYN-ACK/ACK)
✦
transfert informations
✦
libération de la connexion
✦
✦
✦
ACK: pour les segments qui ne sont que des
acquittements
SYN, FIN: pour établir et clore la connexion
RST (reset) URG (urgentes) PSH (push data
now)
Le signal ACK de l’étape 3 peut contenir des données
22
Etablir connexion
✦
✦
✦
✦
n° séq. et (ack) pour réordonner les données
n° séq. pour source
n° ack pour destinataire
tous segments reçus doivent être acquittés
Gestion connexion
Initial Sequence Number
généré aléatoirement
✦
SYN (ISN
=n° séq.=x)
q.=y, ack=x+1)
SYN ACK(n° sé
3 phases:
✦
établir connexion (SYN/SYN-ACK/ACK)
✦
transfert informations
✦
libération de la connexion
ACK(n° séq.=
x+1, ack=y+1)
+ infos taille fenêtre
2 n° présents=piggybacking
23
25
Transfert
Les différents buffers
buffer de 4Ko
• Une socket contient un buffer pour l’émission des
bloqué
2Ko|seq=0
=204
ACK=2048 WIN
2Ko|seq=20
48
8
=0
ACK=4096 WIN
=2048
ACK=4096 WIN
appli lit 2 kO
1Ko|seq=4096
données Application → TCP et un pour la réception
TCP → Application
• 2 autres buffers entre couche TCP et couche réseau:
• Buffer émission : segments émis gardés en mémoire
tant que l'émetteur n'a pas reçu d’acquittement
• Buffer réception: si récepteur reçoit les segments
1,3 puis 2 : il donne 1 à l'application puis garde 3 en
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,
du premier octet transporté
3 phases:
✦
établir connexion (SYN/SYN-ACK/ACK)
✦
transfert informations
✦
libération de la connexion
n° ack:
✦
✦
✦
Numéro de seq. du prochain
octet attendu par émetteur
ACK cumulatifs
32
Fiabilité transmission
Déconnexion symétrique
envoi DR+
démarrage
timer
✦
✦
✦
Comment l’émetteur sait-il qu’il y a eu une perte?
déconnexio
TCP observe les numéros de séquence
envoi ACK
Principe: s’il y a des trous, il renvoie
DR
envoi DR+
démarrage
timer
DR
ACK
délai
déconnexion
après délai
31
34
Contrôle de flux
Déconnexion asymétrique
✦
CR
✦
ACK
DATA
DATA
fenêtre coulissante (sliding window)
WIN=0, source ne peut émettre qu’un octet pour:
✦ stopper l’application distante
✦ demander au destinataire d’annoncer
✦ prochain octet attendu
✦
DR
pas de données délivrées
après requête de
déconnexion
37
taille fenêtre réception
transmis et transmis, non
non
non
acquitté
acquitté
transmis tranmissible
début
Contrôle de flux
39
fin
Contrôle de flux
Application
S1
✦
✦
✦
Pour que l'émetteur n'émette pas trop vite par rapport
au récepteur
Pour éviter ce problème, on surveille le buffer TCP/
Application coté récepteur (au niveau socket)
TCP envoie le nombre d’octets restants dans le buffer
dans un champ fenêtre de réception de l’en-tête TCP
S2
S3
S4
taille fenêtre émission W=3
Emetteur
Récepteur
Ack S4, adv. win=0
taille fenêtre émission W=min(3,0)=0
Emetteur
40
S1,...,S4 reçus; non consommés
taille buffer socket = 4
récepteur envoie ack avec
fenêtre réception 0
Algos de contrôle
✦
✦
✦
La congestion intervient lorsque trop de sources tentent d'envoyer trop
de données trop vite pour que le réseau soit capable de les transmettre.
entraîne perte de paquets (signe de congestion) ; augmente les délais.
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
du réseau entre les systèmes. À l'aide de temporisations, émetteurs et
récepteurs TCP peuvent modifier le comportement du flux de données.
C'est le contrôle de congestion.
Beaucoup d'algorithmes d'évitement de congestion pour TCP : autant de
version de TCP.
41
43
Contrôle congestion
Principe du contrôle de congestion
nd
cw
débit=cwnd/RTT [octets/s]
✦
cwnd ajustée en fonction des pertes:
✦
si perte cwnd diminue
✦
sinon on augmente
k(
✦
s)
ts
te
42
Se fait par le contrôle de la fenêtre
d’émission (ou de congestion) de
taille cwnd en octets
oc
✦
ac
✦
Nagle:
✦ pour applis interactives (telnet, X); travail par
caractère
✦ envoi 1° car. puis buffering jusqu’à ack (sauf si remplissage segment entre temps)
Silly window syndrome
✦ minimise ack
✦ attente possibilité réception MSS (buffer plein à
moitié)
✦ complémentaire du précédent
RTT
✦
Congestion
44
Fenêtres émetteur
✦
✦
✦
Buffer émission: données appli de
taille cwnd=
✦ sous-fenêtre mobile fenêtre
émission
✦ nb max paquets émetteur peut
envoyer sans ACK
✦ débit = cwnd/RTT en bps
Buffer réception: espace stockage
des données (reçues ou pas) de taille
rwnd: nb max de paquets que
récepteur peut accepter à un instant
(espace libre récepteur)
ssthresh: estimation bande passante
dispo (taille max fenêtre émission)
Timers
Sender
✦
✦
Receiver
✦
✦
✦
gestion congestion seulement par émetteur
✦
réparer congestion soit par:
✦
déconnexion: 2*TTL
47
Accusés de réception
diminution débit
✦
réduction fenêtre à 1 segment
✦
✦
✦
✦
✦
réduction fenêtre congestion de moitié et
doubler temporisation de retransmission
46
persistance: pour débloquer situation après
fenêtre émission=0
inactivité: vérifie présence correspondant
système de fenêtrage pour congestion
nb octets transmissibles= moyenne 2 fenêtres
détection congestion par pertes
retransmission: démarré à chaque envoi paquet
en attente ack et fonction RTT (eg. RTO=2*RTT):
C’est le RTO (retransmission timeout)
✦
45
✦
RTT= temps entre envoi paquet et réception ACK
✦
récepteur -> émetteur: n° 1er octet attendu par
récepteur
TCP classique: ACK cumulatifs
DupACK: ACK identique au précédent
✦ cas où paquet N arrive avant N-1; son ACK
est identique ACK N-2
Delayed ACK: retarde AR
✦ après min{2è paquet reçu, tps fixe -500ms-}
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
✦ augmentation de 1 à chaque ack
✦ cwnd double à chaque RTT (exponentiel)
✦ atteinte ssthresh-> congestion avoidance
✦ perte: ssthresh=cwnd/2; cwnd=1->slow start
“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
seuil initial
nouveau seuil
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
✦
✦
✦
✦
protocole orienté octet (ne préserve pas frontières de message)
pas de contrôle sur les émissions (données envoyées immédiatement ou bufferisées)
✦
N° port: entier sur 16 bits
✦ ports réservés 0..1023
✦ ports connexion 1024..49151
✦ ports dynamiques 49152..65535
http://www.iana.org/assignments/port-numbers
récupération de données urgentes
53
Segments TCP
✦
✦
✦
entités TCP échangent des segments:
✦ en-tête 20 octets (+options) = IP
✦ 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
55
✦
✦
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
✦ décalage en octets à partir du n° séq. permettant de
signaler les données urgentes
56
✦
✦
acquittement: n° d’AR d’un segment TCP est celui du
prochain octet de données attendu SEQ=x N octets délivrés, ACK=x+N
taille de fenêtre: nb d’octets qu’on peut envoyer à la suite
de l’octet acquitté
✦
57
✦
✦
✦
✦
✦
✦
URG: pointeur de données urgentes significatif
ACK: AR significatif
PSH: fonction push
RST: réinitialise cnx
SYN: synchronisation n° séq.
FIN: fin de transmission
58
checksum sur: en-tête, données et pseudo en-tête:
✦ mise à 0 du champ checksum
✦ ajout éventuel octet nul
✦ complément à 1 de la somme des compléments à 1 des
mots de 16 bits
59
✦
Options ajoutent des possibilités non offertes dans en-tête
✦ spécifier + grande charge utile TCP
✦ modifie échelle fenêtre avec valeur sur 30 bits
✦ autorise réémission sélective avec notion NAK
✦ dernier mot sert pour bourrage (= 0 mod 32)
60
En-tête UDP
✦
UDP
segment avec en-tête de 8 octets
✦
ports idem TCP
✦
longueur comprend en-tête
✦
checksum (opt.) utilise aussi pseudo en-tête
63
Service UDP
User Data Protocol (RFC 768)
✦
protocole de transport en mode déconnecté
✦
✦
✦
envoi direct paquets IP au niveau couche
transport
un seul paquet pour les transmissions (oneway handshake): création paquet et
transmission immédiate
✦
service datagramme sans connexion
✦
peu overhead
✦
détection erreurs par checksum,
✦
ni duplication, ni contrôle de congestion
Exemple:
✦
62
client/serveur: dns, tftp
64
Checksum
3 mots de 16 bits
✦ 0110011001100000
0101010101010101
1000111100001100
un “vrai” + avec retenue
+ =1011101110110101
+ 1000111100001100
1 0100101011000010
complément à 1=checksum
1011010100111101
destinataire fait la somme des 4 mots=1111111111111111
65