Vous êtes sur la page 1sur 35

PROGRAMMATION RÉSEAU ET SÉCURITÉ

INFORMATIQUE

Mohammed Achkari Begdouri


Université Abdelmalek Essaadi
Faculté Polydisciplinaire à Larache - Département Informatique
achkari.prof@gmail.com

Année universitaire 2021/2022


Chapitre 2 : Couche transport TCP & UDP

Programmation réseau et Sécurité informatique – M2


MASTER SIDSD – S1
Le protocole TCP

 Transmission Control Protocol


 Transport fiable des données - contrôle des messages : ordre,
erreurs détectées et corrigées
 Orienté connexion : connexion entre émetteur et récepteur

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 3


Principe de fonctionnement
• Connexion bidirectionnelle et point à point
• Utilisation de deux points de connexion (sockets)
• Chaque socket : adresse IP + nombre sur 16 bits (port)

port port
… …
Émetteur Récepteur
port port
(adresse IP) (adresse IP)
… …
port port

64K ports
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 4
Principe de fonctionnement
 Connexion TCP : transmission d’un flot d’octets, et non de
messages
 La délimitation précise de messages n’est pas conservé de bout en
bout
A B C D émetteur
(4 messages)
En-tête IP En-tête TCP

A B C D segments

A B C D récepteur
(1 message)
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 5
Exemples des connexions TCP

1245 2243

192.168.0.11 1246 2244 192.168.0.12

1247

5243

5244 192.168.0.18

5245

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 6


En-tête TCP

4 octets

Port source Port destination


Numéro de séquence (SEQ)
Numéro d’accusé de réception (ACK)
U A P R S F
Long. en-
-tête TCP Réservé R C S S Y I
G K H T N N
Taille de fenêtre
Somme de contrôle Pointeur d’urgence

Options (0, 1 ou plusieurs mots de 32 bits)

Données (optionnelles)

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 7


En-tête TCP

 Longueur de l’en-tête TCP : combien de mots de 32 bits


contient l’en-tête
 Longueur variable (à cause du champ Options)
 Mesuré en mots de 4 octets

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 8


Numéro de port
 Port source, port destination : identifient les extrémités
de la connexion
 les adresses IP se retrouvent dans l’en-tête IP !
 Ports disponibles : 65536
 Les ports 0-1023 : réservés
 http : 80
 ftp : 20, 21

 Internet Assigned Numbers Authority (IANA)


http://www.iana.org/assignments/port-numbers

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 9


Somme de contrôle

 Somme de contrôle : assure la fiabilité


 Émetteur
 Met à 0 le champ somme de contrôle
 Additionne tous les mots de 16 bits en complément à 1
 Somme de contrôle = le complément à 1 de la somme obtenue
 Récepteur
 Effectue le calcul précèdent sur le segment en entier
 Le résultat doit être nul

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 10


Numéro de séquence
 C'est un nombre qui identifie la position des données à
transmettre par rapport au segment original.

 Au démarrage de chaque connexion, ce champ contient une


valeur non nulle et non facilement prévisible

 TCP numérote chaque octet transmis en incrémentant ce


nombre. Il repasse à 0 après avoir atteint 232 - 1.
 Pour chaque octet des données transmis ce nombre est incrémenté
(+1).

10 10 512 512
seq = x seq = x+10 seq = x+20 seq = x+532
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 11
Numéro d’accusé de réception
 Indique le prochain octet attendu
 Accompagne le drapeau ACK
 ACK = 1 => le champ Numéro d’accusé de réception doit être
exploité
S D
10 seq = x

ACK (AckNo = x+10)

10 seq = x+10
ACK (AckNo = x+20)

512 seq = x+20


ACK (AckNo = x+532)
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 12
Etablissement d’une connexion

S Information demandant la connexion S->D D

Information d’acceptation S->D

Information demandant la connexion D->S

Information d’acceptation D->S

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 13


Etablissement d’une connexion – initialisation en
trois étapes

S SYN=1; ACK=0; seq = x D

SYN=1; ACK=1; seq = y; AckNo = x+1

SYN=0; ACK=1; seq = x+1; AckNo = y+1

Note : le segment SYN est considéré comme un segment


contenant un octet!

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 14


Libération d’une connexion
 FIN = 1 : l’émetteur n’a plus des données à
transmettre
 Réinitialisation d’une connexion : RST
 pour rejeter une connexion
 signaler une erreur

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 15


Transfert des données
 Une machine a un espace limité pour la réception des
données
 Utilisation d’une fenêtre des données

S D
je peux recevoir 4k 4k
2k
2K
j’ai reçu 2k, je peux recevoir 2k

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 16


Transfert des données
S D
App -> 2k
4k - vide

App -> 2k

2k -> App

App -> 1k
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 17
Données urgentes
 Pointeur d’urgence : décalage en octets à partir du nombre de
séquence courant pour indiquer où on retrouvent les données
urgentes.
 + Drapeau URG

S D

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 18


Options TCP
 mss : La taille maximale du segment de données
applicatives que l'émetteur accepte de recevoir. Au
moment de l'établissement d'une connexion, chaque
partie annonce sa taille de MSS.
 RTT : utilisé pour calculer la durée d'un aller/retour
(round-trip time)
 wscale : pour spécifier des tailles de fenetre
supérieures à 64k (window_size = 64k*2wscale)
 …

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 19


Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

listen(80)

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 20


Communication TCP : exemple

Client Server

création (socket) création (socket)


Port source : 4983
Port dest : 80
bind bind
SEQ : 1763038791
AckNo : 0
SYN : 1 listen(80)
Options :
MSS : 1460

connect

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 21


Communication TCP : exemple

Client Server

création (socket) création (socket)


Port source : 80
Port dest : 4983
bind bind
SEQ : 4127728857
AckNo* : 1
SYN = 1; ACK = 1; listen(80)
Options :
MSS : 1460

connect
accept

* valeurs relatives
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 22
Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

SEQ* : 1 listen(80)
AckNo* : 1
ACK : 1
Options :

connect
accept

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 23


Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

SEQ* : 1
AckNo* : 1 accept
ACK : 1

send

7 octets
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 24
Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

SEQ* : 1
AckNo* : 8 accept
ACK : 1

send
recv

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 25


Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

SEQ* : 1
send AckNo* : 8 accept
ACK : 1
recv

send
recv
1460 octets
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 26
Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

SEQ : 1461
send AckNo : 8 accept
ACK : 1
recv

send
recv
1460 octets
Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 27
Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

SEQ* : 8
send AckNo* : 1461 accept
ACK : 1
recv

send
recv

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 28


Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

send SEQ* : 8
accept
AckNo* : 1461
recv ACK : 1; FIN = 1; recv

send

close

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 29


Communication TCP : exemple

Client Server

création (socket) création (socket)

bind bind

connect listen(80)

send SEQ* : 1461
accept
AckNo* : 8
recv ACK : 1 recv

send

close close

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 30


Outils pour la visualisation des connexions TCP

 netstat
 tcpdump
 Sniffers :
 Microsoft Network Monitor
 Ethereal (www.ethereal.com)

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 31


UDP
 User Datagram Protocol
 Protocole de transport sans connexion
 En-tête UDP :

4 octets

Port UDP source Port UDP destination


Longueur Somme de contrôle

Données

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 32


Utilisation des primitives UDP - client

 créer un socket
 associer le socket à une adresse locale : interface
réseau + port
 envoyer un message à une adresse - IP+port

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 33


Utilisation des primitives UDP - serveur

 créer un socket
 associer le socket à une interface réseau
 recevoir un message

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 34


UDP Correspondance client-serveur

Serveur Client

création (socket) création (socket)

Association Association (optionnel)

Envoi/réception Envoi/réception

close close

Prof. M. Achkari Begdouri - Dép. Informatique - FP Larache 35

Vous aimerez peut-être aussi