Cyril Pain-Barre
version du 16/9/2016
CM 1 (2 h) : Rappels et BOOTP
CM 2 (2 h) : Fin BOOTP et DHCP
TD 1 (4 h) : Analyse/Capture/Production de trames, Fragmentation IP
CM 3 (2 h) : NAT/PAT
TD 2 (4 h) : TELNET et SSH
CM 4 (2 h) : Parefeux
TD 3 (2 h) : FTP et DHCP
TP 1 (4 h) : NAT/PAT, parefeux
TP 2 (4 h) : Administration LAN et routeurs CISCO - noté
Examen (2 h)
6 Présentation 5
Session
message
5
OSI TCP/IP
FTP : File Transfer Protocol
IP : Internet Protocol SMTP : Simple Mail Transfer Protocol
ICMP : Internet Control and Error Message Protocol HTTP : HyperText Transfer Protocol
ARP : Address Resolution Protocol TELNET : Terminal Virtuel
TCP : Transmission Control Protocol DNS : Domain Name Service
UDP : User Datagram DHCP : Dynamic Host Configuration Protocol
TFTP : Trivial File Transfer Protocol
trame
Ethernet V2 données
OUI Id NIC
(Organizationally Unique Identifier) (Network Interface Controller)
3 octets 3 octets
Exemple : 00:24:9b:1d:3f:5b
plusieurs possibilités (d’adresse) de destination d’une trame :
unicast : seul l’hôte ayant cette adresse MAC est destinataire (s’il existe
et est actif) ;
multicast : un ensemble d’hôtes sont destinataires (ceux actifs et
paramétrés pour accepter cette adresse) ;
broadcast ff:ff:ff:ff:ff:ff : tous les hôtes (actifs) sont
destinataires (acceptent cette adresse).
Dans une adresse MAC, le bit de poids faible du premier octet est fixé
à 0 pour les adresses unicast et à 1 pour les adresses de multidiffusion
(multicast ou broadcast).
L’adresse en exemple est unicast.
Cyril Pain-Barre 1 - Rappels 5 / 98
Ethernet/IEEE 802.3 : partagé vs commuté
Évolutions d’Ethernet :
Ethernet partagé (obsolète) : bus ou hubs opérant au niveau bit
les hôtes se partagent le canal de communication −→ CSMA/CD
le domaine de collision est l’ensemble du réseau
les hôtes reçoivent toutes les trames
Ethernet commuté : commutateurs (switch) opérant au niveau trame
séparation des domaines de collision par les switchs
si que des switch et liaisons full-duplex : pas de collision donc pas de
CSMA/CD
auto-apprentissage :
les switchs observent les adresses sources des trames qui leur
parviennent et maintiennent une table MAC/port
un switch ne transmet une trame par inondation que si la destination
n’a pas de port associé
autres fonctionnalités : Spanning Tree Protocol, VLAN, priorités,
gestion à distance, etc.
Adresse IP Source
Options IP (éventuelles)
Bourrage
taille variable
Données
en−tête
Datagramme IP IP données IP
DHCP DHCP TFTP ... DNS ... FTP SMTP HTTP ...
(serveur) (client)
68 53 53 21 25
69 selon Port 80
67
UDP TCP
IP
Service rendu :
envoi/réception de messages entre applications (processus) à
travers Internet
adressage des applications par numéro de port
multiplexage/démultiplexage par numéros de port
contrôle facultatif de l’intégrité des données
bits :
0 1 1 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Port UDP Source Port UDP Destination
en−tête
Données
UDP
IP
les ports [1024, 49151] sont enregistrés (mais peuvent être utilisés)
les ports [49152, 65535] sont dits dynamiques et/ou à usage privé
Cyril Pain-Barre 1 - Rappels 18 / 98
Champs UDP : Checksum
Adresse IP Destination
ssize t sendto(int sock, const void *buf, size t len, int flags,
const struct sockaddr *to, socklen t tolen)
demande l’envoi de len octets contenus dans buf, à l’adresse to
A1 A2 AppliB C1
x y
69
Exemple
Envoi par un client DHCP d’un message à tous les serveurs
DHCP du réseau local. L’adresse destination du message DHCP est
(255.255.255.255, UDP, 67)
émission paquet 1
réception paquet 1
envoi d’un ACK
réception ACK
émission paquet 2
émission paquet 1
+ armement timer
timeout
émission paquet 1
envoi de l’ACK
émission paquet 2
envoi de l’ACK
émission paquet 3
émission paquet 1
+ armement timer
envoi de l’ACK
timeout
émission paquet 1
envoi de l’ACK
émission paquet 2
Les paquets et les ACK portent des numéros : résoud les problèmes
d’ACK perdu et d’alarme trop courte.
émission paquet 1
+ armement timer
timeout
émission paquet 1
ignore paquet 1
envoi de l’ACK n°1
émission paquet 2
Les paquets et les ACK portent des numéros : résoud les problèmes
d’ACK perdu et d’alarme trop courte.
émission paquet 1
+ armement timer
Principe :
émettre n paquets sans attendre d’ACK (n est la taille de la
fenêtre)
fenêtre initiale (taille 8)
1 2 3 4 5 6 7 8 9 10 11 ...
envoyés envoi autorisé envoi interdit
1 2 3 4 5 6 7 8 9 10 11 ...
acquittés envoyés envoi autorisé envoi interdit
émission paquet 1
émission paquet 2
émission paquet 3
envoi de l’ACK n°1
émission paquet 4
envoi de l’ACK n°2
émission paquet 5
envoi de l’ACK n°3
émission paquet 6
envoi de l’ACK n°4
émission paquet 7
envoi de l’ACK n°5
émission paquet 8
envoi de l’ACK n°6
émission paquet 9
envoi de l’ACK n°7
rejet sélectif
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
Plus complexe qu’UDP car un port peut être utilisé pour plusieurs
connexions simultanément :
un serveur peut accepter plusieurs clients à la fois : chaque appel
d’accept() retourne une nouvelle connexion utilisant le port du serveur
plus rare, un client peut aussi utiliser son port pour établir plusieurs
connexions (mais pas vers la même adresse serveur)
En dehors des SAP d’ouverture passive, TCP gère surtout des ”objets”
connexion
Une connexion est identifiée par le quadruplet formé avec l’adresse de
ses deux extrémités :
(adresse IP locale, port local, adresse IP distante, port distant)
Les connexions sont gérées indépendamment les unes des autres
Chaque connexion dispose de ses propres tampons en émission/
réception et de chaque côté
AppliB
(serveur)
Interface TCP
TCP
Hôte B
(139.124.187.4)
AppliB
(serveur) Ouverture passive
socket socket()
bind()
listen()
accept()
port 80
TCP
Hôte B
(139.124.187.4)
A1 AppliB
(client) (serveur)
port 80
TCP TCP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
A1 AppliB
(client) (serveur)
Ouverture active
port 80
TCP TCP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
A1 AppliB
(client) (serveur)
Ouverture active
connexion #1
TCP TCP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
A1 AppliB
(client) (serveur)
connexion #1
TCP TCP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
A1 AppliB C1
(client) (serveur) (client)
E R E R
connexion #1
A1 AppliB C1
(client) (serveur) (client)
E R E R E R E R
connexion #1 connexion #2
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
données à transmettre
send()
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
placement dans le
tampon d’émission
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
autres données à transmettre
send()
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
placement dans le
tampon d’émission
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
en−tête TCP
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
en−tête IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
traversée du réseau
(fragmentation possible)
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
traversée du réseau
(fragmentation possible)
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
placement dans le
connexion établie tampon de réception
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
lecture des données
recv()
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
AppliA AppliB
E R E R
connexion établie
TCP TCP
IP IP
Hôte A Hôte B
(32.128.54.97) (139.124.187.4)
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
octets transmis octets transmis mais octets non encore transmis octets qu’on n’est pas encore
et acquités non encore acquittés mais qui peuvent l’être autorisé à transmettre
Numéro de Séquence
Données
Numéro de Séquence
R C S S Y I
Options TCP (éventuelles)
G K H T N N
Bourrage
6 bits
taille variable
Données
Numéro de Séquence
premier octet
taille variable
Données
Données
Numéro de Séquence
Données
Obligatoire
Vérifie la totalité du segment + Pseudo en-tête TCP.
Comme pour UDP, permet de s’assurer :
que les données sont correctes
que les ports sont corrects
que les adresses IP sont correctes
Même calcul que IP/UDP (bourrage éventuel 1 octet à 0) +
pseudo en-tête TCP
Pseudo en-tête TCP (interaction avec IP) : (12 octets)
bits :
0 1 1 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Adresse IP Source
Adresse IP Destination
Valeur MSS
Chaque côté indique la taille max des données des segments qu’il veut
recevoir, appelée MSS (Maximum Segment Size) :
souvent MTU - 40 (en-têtes IP et TCP sans option)
dépendant de la taille des buffers de reception
par défaut 536 (576 octets pour le datagramme IP)
Difficile à choisir pour l’Internet :
si trop petit, perte d’efficacité
si trop grand, risque de fragmentation
L’idéal est le plus grand tel qu’aucun datagramme n’est fragmenté
flags (6 bits)
16 bits
U A P R S F
R C S S Y I Pointeur Urgent
G K H T N N
U A P R S F
R C S S Y I
G K H T N N
U A P R S F
R C S S Y I
G K H T N N
En 3 temps, avec bits SYN et ACK
Émetteur Réseau Récepteur
Réception SYN
Émission SYN séq=y, ACK x+1
Réception FIN
Émission ACK x+1
Réception FIN
Émission ACK y+1
Armement timer
Réception ACK
Armement timer
Bit RST à 1 :
U A P R S F
R C S S Y I
G K H T N N
source : TCP/IP
Architecture, protocoles,
applications. D. Comer,
Edts Dunod
T =γ×T
source : TCP/IP
Architecture, protocoles,
applications. D. Comer,
Edts Dunod
Soit une application qui ne lit les données qu’octet par octet
L’émetteur envoie suffisamment d’octets pour remplir le
tampon de réception
Le TCP récepteur envoie une taille de fenêtre nulle
Lorsque l’application lit un octet, TCP enverra une taille de
fenêtre de 1
L’émetteur peut alors envoyer 1 octet !
Puis taille de fenêtre 0
etc.
C’est pas mieux si c’est l’émetteur qui envoie de lui-même des petits
segments !
taille fenêtre
(nombre de segments)
17
non acquitté : nouvelle fenêtre (évitement à partir de 8)
16 + doublement temporisateur
15
14
13 non acquitté : nouvelle fenêtre
12 (évitement à partir de 6)
11 + doublement temporisateur
10
er
T et tim
9
8 er
er
tim
jour RT
tim
7
et
et
TT
TT
6
R
rR
mise à
ur
ou
jo
5
à
àj
e
is
se
m
mi
3
2
1
temps
Écoute
italiques : primitive
appelée par le SYN / SYN + ACK
exceptionnels Attente−2
FIN / ACK
sation