2. Introduction
• Avant de passer aux fonctionnalités du réseau
on présente les services de base (applications).
• La pile des protocoles (l’ensemble des couches)
est au service des applications (couche 7).
• Les applications échangent entre elles des
messages et des commandes
• L’objectif de ce chapitre est de montrer la
simplicité des protocoles hormis le côté réseau
et d’évoquer ensuite le besoin des différentes
couches inférieures.
4. SMTP (simple mail transfer
protocol)
• Commandes côté client:
– HELO exp (requête de
connexion)
– MAIL FROM: adr_exp
– RCPT TO:ad_dest
– DATA (fin marquée par
<CRLF>.<CRLF>)
– QUIT
– RSET (annulation du mail en
cours)
– NOOP
• Commandes côté serveur de
mail:
– 250 (ok)
– 251 (utilisateur non local
retransmission)
– 450 ou 550 (boîte à lettre non
accessible)
– 451 (erreur de traitement)
– 551 (utilisateur non local
redirection)
– 553 (nom de la boîte illégal)
– 552 (épuisement de la
mémoire allouée)
– 354 (commencez à
transmettre)
– 554 (échec)
5. Server1.com
Server2.com
Boîte à lettre: user1
Boîte à lettre: user2
…
SMTP (simple mail transfer
protocol)
Émetteur SMTP
Récepteur SMTP
Réseau
HELO server1
HELO server2
6. Boîte à lettre: user1
Boîte à lettre: user2
…
Server1.com
Server2.com
SMTP (simple mail transfer
protocol)
Émetteur SMTP
Récepteur SMTP
Réseau
MAIL FROM: abc@server1.com
250 OK
7. Boîte à lettre: user1
Boîte à lettre: user2
…
Server1.com
Server2.com
SMTP (simple mail transfer
protocol)
Émetteur SMTP
Récepteur SMTP
Réseau
RCPT TO: user1@server2.com
250 OK
8. Boîte à lettre: user1
Boîte à lettre: user2
…
Server1.com
Server2.com
SMTP (simple mail transfer
protocol)
Émetteur SMTP
Récepteur SMTP
Réseau
DATA
354 start input
9. Boîte à lettre: user1
Boîte à lettre: user2
…
From: <abc@server1.com>
Subject: Confirmation
To: <user1@server2.com>
Bonjour,
On a reçu les colis
.
Server1.com
Server2.com
SMTP (simple mail transfer
protocol)
Émetteur SMTP
Récepteur SMTP
Réseau
250 OK
10. Boîte à lettre: user1
Boîte à lettre: user2
…
Server1.com
Server2.com
Les protocoles du service courrier
Émetteur SMTP
Récepteur SMTP
Réseau
SMTP
SMTP
POP3, IMAP4
POP3, IMAP4
11. POP3 (post office protocol)
STAT: précise le nombre et
la taille des messages
+OK msgCount size
+OK 8 2012
LIST [msgId]: idem pour un
msg particulier (ou détails)
+OK msgId size
+OK 2 67
RETR msg: récupérer un
msg
+OK bonjour, on a recu les
colis
.
DLE msg:suppression
NOOP: diagnostic +OK
RSET: annule les demandes
en attente
+OK mail drop has 3
messages (400 bytes)
QUIT +OK ou -ERR
12. POP3 (post office protocol)
USER nom: précise le nom
de la boîte à lettre
+OK message d’accueil
PASS motDePasse +OK user1 maildrop has 5
messages (2670 octets)
TOP msg n: en-tête du msg
et n premières lignes
+OK suivi de l’en-tête suivi
d’une ligne vide suivi des n
lignes
13. POP3
• à l’établissement de la connexion le
serveur POP3 envoie un message
d’accueil et passe à l’état
d’authentification.
• Après l’authentification on passe à l’état
d’échange de messages.
• Après QUIT on passe à l’état de mise à
jour et la connexion est relâchée.
14. POP3 (post office protocol)
<Connexion>
S C: +OK dewey POP3
server ready
USER kss
+OK kss is a real hoopy
frood
PASS mypasswd
+OK kss’s maildrop has 7
messages (1729
octets)
STAT
+OK 7 1729
LIST
+OK 7 messages (1729
octets)
1 340
2 512
…
<CR>.<LF>
RETR 1
+OK <les 340 octets>
<CR>.<LF>
QUIT
+OK dewey POP3 server
signing off
15. IMAP4 (Internet Message Access
Protocol)
• Les boîtes à lettre sont gérées, consultées
et modifiées tout en les gardant dans le
serveur.
• Synchronisation de la boîte à lettre locale
avec celle du serveur.
16. IMAP4 (Internet Message Access Protocol)
Connexion initiale et accueil
Non authentifié
Authentifié
Sélectionné
Fermeture de la connexion
OK
PREAUTH BYE
LOGIN
SELECT (choisir
une boîte à lettre)
CLOSE
LOGOUT
LOGOUT
LOGOUT
17. IMAP4
• Les commandes se terminent par <CRLF>
• Les commandes du client commencent par un
identificateur nommé TAG. La réponse du serveur
indique le TAG qui doit être différent pour chaque
commande.
• Les réponses du serveurs commencent par:
– TAG suivi de l’indicateur (OK, BAD ou NO)
– + pour la suite d’une réponse
– * pour répondre à une réponse sans identificateur ou pour une
réponse sans avoir une commande du client.
0F 3C 07 commande <CRLF>
TAG
0F 3C 07 réponse <CRLF>
TAG
OK
18. IMAP4:Identifier un courrier
• Identificateur unique (UID): le message a un
identificateur de 32 bit associé à un
identificateur unique de validité de 32 bits qui
identifie la boîte à lettre.
• le numéro de séquence précise la position
relative du message dans la boîte à lettre
• L’indicateur (FLAG) du message précise son
état: seen, answered, flagged, deleted, …
19. IMAP4: Les commandes par état
Tout état Non
Authentifié
Authentifié Sélectionné
CAPABILITY
Liste des
fonctions
supportées par
le serveur
AUTHENTICATE
Authentification
cryptée
SELECT
Pour choisir
une boîte à
lettre
SUBSCRIBE
Ajouter la boite
à lettre à une
liste
CHECK
Restituer
l’état des
msg
STORE
Mettre à jour
un msg déjà lu
par FETCH
NOOP
pour « réveiller
» le serveur
LOGIN
Authetification
en clair
EXAMINE
Choisir une
boîte à lettre
pour lecture
seulement
UNSUBSCRIBE
Enlever la
boîte à lettre
d’une liste
CLOSE
Retourner à
l’état auth.
COPY
Pour copier
le msg à une
boite à lettre
LOGOUT
Pour sortir
CREATE
Créer une
boîte à lettre
LIST, LSUB
énumérer les
boites à lettre
d’une liste
donnée
EXPUNGE
Supprimer les
msg marqués
deleted
UID utilisée
avec les autres
commandes
remplace le No
de seq par l’UID
DELETE
Suppression
d’une boîte à
lettre
APPEND
Ajouter un
courrier à une
boîte à lettre
SEARCH
Chercher un
msg (par un
critère)
Commandes
des autres
états
RENAME
Renommer
une boîte à
lettre
STATUS
Les flags
FETCH
Restituer un
msg
23. TELNET
• Effectuer l’accès aux ressources d’une machine à distance.
• Simulation d’un terminal (Terminal virtuel ou NVT).
• Négociation des options du terminal.
• Codes échangés: ASCII 32 à 126 et des codes de contrôle comme <CR> et
<LF>.
• Commandes: 2 ou 3 octets:
– Premier octet: 255 (IAC interpret as command)
– Second octet: Commande
– Éventuellement troisième octet: option négociée
• Négociation: DO, DON’T, WILL, WON’T
Réseau
Telnet Client
Telnet Serveur
24. TELNET
• Commandes:
– 241 (NOP)
– 243 (caractère Break)
– 250 (SB) début d’une sous-
négociation
– 240 (SE) fin d’une sous-
négociation
– 251 (WILL) confirme
l’option
– 252 (WON’T) refuse
l’option
– 253 (DO) demande l’option
– 254 (DON’T) interdit
l’option
– 248 (EL) supprimer une
ligne
– 247 (EC) supprimer un
caractère
– 246 (AYT) tu es là?
• Exemple:
• Client: DO window size
• Serveur: WILL window size
• C: SB Window Size 0 80 0 24
• C: SE
26. FTP(File Transfer Protocol)
• Pour le transfert de fichier FTP nécessite
deux canaux de connexion, un pour le
contrôle et un pour les données.
27. FTP
Connexion à un
serveur distant
OPEN, USER, PASS
Choisir
un dossier
(directory)
CD, LCD (local cd)
List des fichiers DIR, LS
Préciser le mode
et le type
de transfert
Mode:
• Block (le fichier conserve son format)
• Stream (flot d’octet)
Type: ASCII, EBCDIC, Image (suite d’octets)
Transfert
du fichier
GET, MGET, PUT, MPUT (M=multiple)
Terminer
la session
QUIT, CLOSE
28. FTP
• Les codes de réponse à 3
digits:
– 1xx Positive preliminary
reply.
– 2xx Positive completion
reply.
– 3xx Positive intermediate
reply.
– 4xx Transient negative
completion reply.
– 5xx Permanent negative
completion reply.
• Exemple:
– FTP foreignhost
– 220 service ready
– USERNAME cms01
– 331 user name okay
– PASSWORD xyxyx
– 230 user logged in
– TYPE Image
– 200 command okay
29. TFTP (Trivial File Transfer Protocol)
• Utilise un protocole de transport non fiable
(UDP) donc doit assurer lui-même la
retransmission.
• Vu sa compacité (nécessite peut d’espace
mémoire) TFTP est utilisé pour télécharger un
système d’exploitation.
• On n’authentifie pas dans TFTP. Le serveur
s’occupe normalement de la sécurité (par une
liste d’accès par exemple)
30. TFTP: les messages
• 1: requête de lecture (RRQ)
• 2: requête d’écriture (WRQ)
• 3: données (DATA)
• 4: acquittement (ACK)
• 5: erreur (ERROR)
WRQ
Nom du
fichier
0 Mode 0
Type de
fichier
ACK 0
DATA Num bloc
Données
<=512 octets
ACK Num bloc
ERR
Code
erreur
Message
D’erreur
0
ou
32. Les ports et les sockets
• On doit déterminer quels processus entre quelles machines sont connectés
ensemble. Il faut identifier la connexion.
• Un processus passe à la couche inférieure à travers un ou plusieurs point d’accès
qu’on appelle port (16-bit). Ce point d’accès un numéro qui identifie le processus.
• Un socket détermine: le protocole de la couche inférieure, les adresses IP ainsi que
les numéros des ports des deux bouts de la connexion. C’est un identificateur unique
de la connexion.
Processus A Application Processus B Application
193.44.230.3 193.44.200.8
TCP TCP
1500 21
Association de Socket:
{tcp,193.44.230.3,1500,193.44.200.8,21}
{tcp,193.44.230.3,1500}
{tcp,193.44.200.8,21}
33. Les ports
• On en distingue deux types:
– Les prédéfinis (Well-known) qui appartiennent
à des services standard (comme telnet, ftp,
…). Le numéro de port est alors compris entre
1 et 1023. Normalement impair sauf quand on
utilise deux ports par service (comme ftp qui
utilise 20 et 21).
– Ceux empruntés par les clients (ephemeral)
avec un numéro compris entre 1024 et 65535.
34. Le protocole UDP
• Comme couche de transport il n’a que le rôle de
multiplexage/démultiplexage des datagrammes
en intégrant la notion de ports.
35. Le protocole UDP
• L’adresse IP n’est pas suffisante
puisqu’elle identifie la destination (ou la
source) mais non pas le processus.
• UDP en se servant du numéro de port
achemine le datagramme vers le
processus (ou du processus).
• UDP est simple. Ne contrôle pas les
erreurs et le flux. L’application sera elle-
même responsable de la retransmission.
36. Le datagramme UDP
• UDP ne fait pas de la segmentation. Un
datagramme UDP doit être casé dans un
même paquet IP.
4 octets 4 octets
37. L’interface application de UDP
• UDP effectue l’une des opérations
suivantes:
– Création des ports (en tant que points
d’accès) nouvellement reçus.
– La réception (de IP) des datgrammes et
l’acheminement vers le port concerné (vers
l’application).
– L’envoie des datgrammes arrivant de
l’application sur un port donné vers IP.
38. Quelques applications qui utilisent
UDP
• TFTP (trivial file transfert protocol)
• DNS (domain name system)
• NFS (network file system)
• SNMP (service network managment
protocol)
• LDAP (lightweight directory access
protocol)
39. Le protocole TCP
• En outre le multiplexage/démultiplexage via les
ports, TCP fiabilise la connexion.
• L’application suppose alors que le canal est
sans erreurs.
40. Le concept TCP
• Flot de données (data stream): l’application envoie et
reçoit les données octet par octet sans se soucier de
l’assemblage et de la segmentation.
• Fiabilité: l’application suppose que la connexion est sans
erreurs.
• Contrôle de flux: les tcp des deux bouts déterminent le
nombre maximum de bytes à échanger sans que
l’application s’en occupe.
• Multiplexage: notion de ports.
• Connexion virtuelle: la fiabilité exige un mode orienté
connexion.
• Full duplex: flots de données dans les deux directions.
41. Concrétiser ce concept
• Ce concept nécessite de définir:
– Le principe de fenêtre glissante.
– Identification d’une connexion.
– Acquittement et retransmission.
– L’établissement d’une connexion.
42. La fenêtre glissante (sliding
windows)
• Une fenêtre limite le nombre d’octets à
échanger sans congestion. La taille
est variable pour s’adapter
automatiquement à l’état du réseau.
• Un seul acquittement sur
l’acquittement.
• À chaque acquittement on glisse la
fenêtre en gardant la taille.
• Soit w la taille de la fenêtre. En envoie
w octets avant de recevoir
l’acquittement.
44. Le flot d’octets
• L’application transmet les données octet
par octet.
• TCP assemble ces octets dans des
segments. Mais le numéro de séquence
correspond au numéro de l’octet.
• Un segment TCP porte alors le numéro de
séquence de son premier octet.
• La taille de la fenêtre est en nombre
d’octets.
45. L’acquittement
• L’acquittement ACK x indique que tous les octets
jusqu’à l’octet numéro x-1 sont bien reçus. (le
récepteur attend l’octet x et les autres)
• De cette façon une perte d’un acquittement peut
être remédiée par la réception de l’acquittement
suivant. (ACK x+n indique aussi que l’octet x-1
est reçu même si ACK x est perdu)
• Un temporisateur timeout à l’émetteur permet de
signaler une perte d’octet ce qui est traduit
comme perte par congestion. Une
retransmission est effectuée et la taille de la
fenêtre est par conséquence réadaptée.
46. Contrôle du flux
• Le récepteur peut retarder l’acquittement
selon sa disponibilité et restreindre la taille
de la fenêtre.
• L’acquittement porte aussi la taille de la
fenêtre que le récepteur peut gérer.
47. Exercice 1
• On donne:
– La taille de la fenêtre est de 20 octets.
– Le dernier acquittement reçu porte le numéro
de séquence 50.
– le dernier octet transmis porte le numéro de
séquence 57.
• Que peut-on dire des octets ayant les
numéros de séquence suivants:
– 15, 20, 48, 53, 56, 62, 67, 79, 90, 112.
48. Exercice 1
• On donne:
– La taille de la fenêtre est de 20 octets.
– Le dernier acquittement reçu porte le numéro de séquence 50.
– le dernier octet transmis porte le numéro de séquence 57.
• Que peut-on dire des octets ayant les numéros de séquence suivants:
– 15, 20, 48, 53, 56, 62, 67, 79, 90, 112.
15 20 48 5356
57
58
59
60 62 67 69 70 79
50
À la réception de ACK 57
15 20 48 5356
57
58
59
60 62 67 69 70 79
50 76
49. Le format du segment TCP
Reserved
Doit être
à zéro
Premier octet
50. Les champs de l’en-tête
• Source port et destination port: les ports d’accès à
l’application.
• Sequence number: numéro du premier octet de données
dans le segment.
• Acknowledgment number (Si ACK est à 1): le numéro du
premier octet attendu.
• Data offset: nombre de 32 bits de l’en-tête.
• Window (si ACK est à 1): taille en octet de la fenêtre
glissante précisée par le récepteur.
• SYN: pour ouvrir une connexion et synchroniser le
numéro de séquence.
• FIN: terminer une connexion (doit être envoyé dans les
deux sens sinon la connexion peut rester établie dans un
seul sens)
51. Checksum
• Checksum (16-bit) = complément à 1 de la
somme du complément à 1 de tous les 16
bits de l’en-tête Pseudo-IP, les données de
TCP et l’en-tête de TCP (où checksum est
mis à zéro).
En-tête Pseudo-IP
Qui ne concerne
Que le calcul
Du checksum
53. Exemple de
retransmission
• Dans cet exemple on considère une fenêtre de taille égale
à 1500 octets et à un segment de taille 500 octets.
temps
54. L’interface de programmation entre
l’application et TCP
• Comment passer de l’application à TCP?
• L’API (Application Programming Interface) est l’ensemble des commandes
permettant à l’utilisateur d’écrire une application qui effectue l’accès à la pile
TCP/IP.
• Les commandes:
– OPEN: permet d’établir une connexion TCP. Elle retourne une référence à la
connexion. Les paramètres requis sont les suivants:
• Le port local
• Le socket distant
• La valeur du timeout (optionnelle)
– SEND: pour envoyer les données.
– RECEIVE: pour transférer en mémoire les données reçues dans la file d’attente
de TCP.
– CLOSE: pour relâcher une connexion.
– STATUS: lire certains paramètres ou certaines informations sur la connexion.
– ABORT: vider les files d’attentes (d’envoi et de réception) et envoyer un Reset au
TCP distant.
55. Les algorithmes de contrôle de
congestion
• TCP adapte le flux transmis aux conditions du
réseau et évite la congestion.
• Plusieurs méthodes sont disponibles, surtout:
– Slow start (algorithme prudent)
– Congestion avoidance (évitement de congestion)
– Fast recovery
– Fast retransmit
– Les temporisateurs adaptatifs
56. Slow start -1-
• Pour éviter la congestion et pour s’adapter au réseau on
ne transmet pas de tout de suite selon la taille de la
fenêtre glissante avant de recevoir un acquittement.
• En outre la fenêtre glissante on définit alors la fenêtre de
congestion de taille cwnd initialisée à la taille d’un
segment et qui augmente graduellement de la taille avec
les acquittements.
• Ainsi le taux d’acquittement détermine le taux de
transmission.
• La taille de la fenêtre congestion définit un contrôle de
flux par l’émetteur basé sur sa perception de l’état du
réseau.
• La taille de la fenêtre glissante définit un contrôle de flux
par le récepteur selon sa capacité et la disponibilité de
sa mémoire.
57. Slow start -2-
• cwnd est initialisée à 1
• Au premier acquittement on l’augmente de
1
• Au second on l’augmente de 2, puis de 4
et ainsi de suite d’une façon exponentielle
(si le récepteur ne retarde pas les
acquittements en acquittant 2 ou plus
ensemble)
58. Congestion avoidance -1-
• On rappelle qu’une perte de données est
toujours traduite par TCP comme une
congestion (normalement la probabilité de perte
par qualité du signal est très faible).
• Une perte est signalée par:
– Un timeout
– Un acquittement répété
• Une perte signalée doit ralentir la transmission.
• En outre cwnd on définit ssthresh comme seuil
de cwnd qui quand atteint termine le slow start
pour se placer dans la phase de congestion
avoidance.
59. Congestion avoidance -2-
• Ssthresh est initialement mis au maximum
(65535 octets comme la taille est codée sur 16
bits)
• Taille réelle de la fenêtre = min (cwnd , taille de
la fenêtre glissante signalée par le récepteur)
• À la congestion (timeout ou double ACK)
ssthresh est mis à cwnd/2. si la congestion est
signalée par un timeout cwnd est alors remis à 1
segment (512 octets par exemple).
• Dans la congestion avoidance cwnd est
augmentée à chaque acquittement de
segsize*segsize/cwnd.
61. Fast retransmit
• À la réception d’une ou de plusieurs
duplication d’acquittement une réception
en désordre est signalée.
• Ce qui peut indiquer une perte.
• Fast retransmit consiste à retransmettre
dans ce cas sans attendre que le
temporisateur de timeout expire.
62. Fast recovery
• Après fast retransmit on se place dans la phase de
congestion avoidance comme on a reçu une duplication
d’acquittement mais on réduit pas la taille de cwnd
puisqu’un double acquittement signifie que les données
arrivent encore au récepteur.
• Fast recovery:
– À la 3ième duplication d’ACK on met ssthresh à max (cwnd/2,
2*segsize), on retransmet le segment manquant et on met cwnd
à ssthresh+3*segsize.
– Puis à chaque duplication d’ACK on incrémente cwnd de
segsize et on transmet si la fenêtre le permet.
– Quand ACK arrive on met cwnd à ssthresh.
63. Les temporisateurs adaptatifs
• On mesure le temps d’aller-retour (RTT ou round-trip
time)
• On calcule la valeur corrigée: SRTT=(a*SRTT)+((1-
a)*RTT)
• a est un facteur de pondération: 0a<1 pour a=0,5 SRTT
sera la moyenne arithmétique du temps d’aller-retour
• On calcule le temporisateur de retransmission
(retransmission timeout):
RTO=min[UBOUND,max[LBOUND,(b*SRTT)]]
• UBOUND= limite supérieure soit 1 min par exemple
• LBOUND=limite inférieure soit 1s par exemple
• b règle le délai. RFC793 suggère 1,3<b<2.