les protocoles de l ’internet
DESCRIPTION
Chapitre 1. Les protocoles de l ’Internet. 1 ère partie :. Le protocole IP. Architecture Internet. FTP (File Transfer Protocol) copie de fichier d’un système à l’autre Telnet : connexion à distance SMTP (Simple Mail Transfer Protocol) protocole de transfert de messages - PowerPoint PPT PresentationTRANSCRIPT
M. Jarraya, Institut Supérieur d'Informatique1
Les protocoles de l ’Internet
Chapitre 1
M. Jarraya, Institut Supérieur d'Informatique2
Le protocole IP
1ère partie :
3
Architecture Internet FTP (File Transfer Protocol) copie de
fichier d’un système à l’autre Telnet : connexion à distance SMTP (Simple Mail Transfer Protocol)
protocole de transfert de messages SNMP (Simple Network Management
Protocol) protocole de gestion réseau. TCP (Transmission Control Protocol)
Protocole de transport de données fiable.
UDP (User Datagram Protocol) protocole de transport sans connexion.
ARP (Address Resolution Protocol) protocole de résolution d’adresse.
IP (Internet Protocol) protocole réseau chargé de véhiculer les paquets sur les réseaux.
ICMP (Internet Control Message Protocol) protocole de surveillance de l’état des composants du réseau.
Application
Présentation
Session
Transport
réseau
Liaison de données
Physique
Modèle OSI
FTP, TelnetSMTP, SNMP
TCP, UDP
IP
HDLC, PPP, SLIP,..
Cuivre, Fibre optique, ondes
ICMP
ARP, RARP
Modèle Internet
4
Format du datagramme IP
ver length
32 bits
données (longueur variable
Typiquement un segment TCP ou UDP)
16-bit identifier
checksumtime tolive
Adresse IP source de 32 bits
Num de version de IP
Long d’en-tête (multiple de 4 Octets)
Durée de vie(décrémentée par
Chaque routeur)
Pour fragmentation/réassemblement
Longueurtotale (octets)
Num du protocole deCouche supérieure
head.len
type ofservice
Type de service flgsfragment
offsetupper layer
Adresse IP destination de 32 bits
Options (if any) E.g. enregistrerles adresses etLe temps de Passage des Routeurs(traceroute).
Avec TCP la charge (sans option)?
20 octets de TCP 20 octets de IP = 40 octets + la
taille du message applicatif
5
Le protocole IPv4
Le numéro de version sur 4 bits (la version 4) : permet de vérifier que la source, la destination et tout routeur intermédiaire sont en accord sur le format du datagramme.
Longueur d ’en-tête sur 4 bits : code la longueur de l'en-tête Internet en mots de 32 bits afin de savoir le début des données.
Le Type de Service donne une indication sur la qualité de service souhaitée :
Bits 0-2 : Priorité ; Bit 3 : 0 = Retard standard et 1 = Retard faible (Delay)Bits 4 : 0 = Débit standard et 1 = Haut débit. (Throughput)Bits 5 : 0 = Taux d'erreur standard et 1 = Taux d'erreur faible (Rate of Error)Bit 6-7 : Réservé.
0 1 0 0 0 1 0 1 Priorité D T R 0 0 Longueur totaleIdentification Drap Dép_fragment
Durée de vie Protocole Total de contrôle d ’entêteAdresse source
Adresse destination
32 bits
6
Le protocole IPv4 Le champ "Longueur Totale" sur 16 bits est la longueur du
datagramme entier y compris en-tête et données, mesurée en octets.
Une valeur d'identification sur 16 bits assignée par l'émetteur pour identifier les fragments d'un même datagramme.
Flags sur 3 bits.Bit 0 : réservé, doit être laissé à zéroBit 1: (AF) 0 = Fragmentation possible et 1 = Non fractionnable.Bit 2: (DF) 0 = Dernier fragment et 1 = Fragment intermédiaire.
Position relative (Dép_fragment) sur 13 bits qui indique le décalage du premier octet du fragment par rapport au datagramme complet mesurée en blocs de 8 octets (64 bits).
0 1 0 0 0 1 0 1 Priorité D T R 0 0 Longueur totaleIdentification 0 AF DF Dép_fragment
Durée de vie Protocole Total de contrôle d ’entêteAdresse source
Adresse destination
32 bits
7
Le protocole IPv4 Le champ durée de vie sur 8 bits permet de limiter le temps
pendant lequel un datagramme reste dans le réseau. Si ce champ prend la valeur zéro, le datagramme doit être détruit. Ce champ est modifié pendant le traitement de l'en-tête Internet.
Le champ Protocole sur 8 bits indique quel protocole de niveau supérieur est utilisé dans la section données du datagramme Internet.
Le Total de contrôle d'en-tête sur 16 bits vérifie exclusivement la validité de l'en-tête uniquement, car certains champs de l'en-tête sont susceptible d ’être modifiés (ex., durée de vie) pendant leur transit à travers le réseau. ce champ doit être recalculé et vérifié en chaque point du réseau où l'en-tête est réinterprétée.
0 1 0 0 0 1 0 1 Priorité D T R 0 0 Longueur totaleIdentification 0 AF DF Dép_fragment
Durée de vie Protocole Total de contrôle d ’entêteAdresse source
Adresse destination
32 bits
8
Les adresses IP Chaque ordinateur et chaque routeur du réseau Internet
possède une adresse IP sous forme (id_réseau,id_ordinateur).
La structure des champs d'adresse est codée de sorte à désigner un petit nombre de réseaux accueillant un très grand nombre
d ’ordinateurs,
adresse la plus basse : 1.0.0.1 et adresse la plus haute : 126.0.0.0Le nbre de réseau = 126 et le nbre d ’ordinateurs = 16777214
un nombre modéré de réseaux accueillant un nombre modéré d ’ordinateurs,
adresse la plus basse : 128.0.0.0 et adresse la plus haute : 191.255.0.0
Le nbre de réseau = 16384 et le nbre d ’ordinateurs = 65534
0 Id_reseau Id_ordinateur
32 bits
1 Id_reseau Id_ordinateur
32 bits
0
Classe A :
Classe B :
9
un grand nombre de réseaux accueillant un nombre restreint d ’ordinateurs,
adresse la plus basse : 192.0.1.0 et adresse la plus haute : 223.255.255.0
Le nbre de réseau = 2097153 et le nbre d ’ordinateurs = 254
adressage multidestinataire,
de plus, un encodage spécial permet de prévoir un mode d'adressage étendu futur.
1 Id_reseau Id_ordinateur
32 bits
1 0
1 Adresse multidestinataire
32 bits
1 1 0
1 Réservé pour usage ultérieur
32 bits
1 1 1 0
Les adresses IP
Classe C :
Classe D :
Classe E :
10
Exemple :
Les adresses IP
11
Le NIC (Network Information Center) est le seul organisme habilité à délivrer les numéros d ’identification des réseaux.
Certaines adresses sont absentes des plages des adresses IP et correspondent à des adresses réservées.
Elle sont autorisées uniquement au démarrage du système et ne constituent jamais des adresses valides.
Elles sont utilisées pour des diffusions dirigées et ne sont jamais des adresses valides.
Tout à zéro
Tout à 1
Tout à zéro Id_ord
Id_res Tout à 1
« cet » ordinateur
Un ordinateur sur« ce » réseau
Diffusion limitée au réseau d ’attachement
Diffusion dirigéevers « ce » réseau
Les adresses IP
12
Les adresses IP
13
Fragmentation et rassemblent de paquets IP
Les liaison réseaux ont des MTU (max.transfer size) différents- qui représentent la taille maximale de la trame de liaison de données.
Plusieurs types de liaison, différents MTUs
Plusieurs datagrammes IP sont divisés dans le réseau (“fragmenté”)
un datagramme devient plusieurs datagrammes
“rassemblement” uniquement à la destination finale
Des bits de l’en-tête servent à identifier et mettre dans l’ordre les différents fragments
fragmentation: in: un large datagrammeout: 3 petits datagrammes
rassemblement
14
Fragmentation et rassemblent de paquets IP
ID=x
offset=0
fragflag=0
length=4000
ID=x
offset=0
fragflag=1
length=1500
ID=x
offset=185
fragflag=1
length=1500
ID=x
offset=370
fragflag=0
length=1040
Un large datagramme devient Plusieurs petits datagrammes
Exemple Un datagramme de
4000 octets MTU = 1500 octets
1480 octets dans leChamp données de IP
offset =1480/8
15
Les sous-réseaux
Adresse IP: La partie sous-réseaux
(les bits de poids fort) La partie hôte (les bits de
poids faible) C’est quoi un sous-réseau
? Des interfaces
d’équipements réseaux avec la même partie sous-réseaux d’une adresse IP
Peut physiquement atteindre chacun des autres équipement du même sous-réseau sans intervenir un routeur
223.1.1.1
223.1.1.2
223.1.1.3
223.1.1.4 223.1.2.9
223.1.2.2
223.1.2.1
223.1.3.2223.1.3.1
223.1.3.27
Un réseau contenant 3 sous-réseaux
LAN
16
Sous-réseaux223.1.1.0/24
223.1.2.0/24
223.1.3.0/24
Méthode : Pour déterminer les sous-
réseaux: dissocier dans un
premier temps chaque interface du routeur ou hôte auquel elle appartient
Ceci engendre des parties de réseaux isolés limités par des interfaces
On appelle ensuite sous-réseau chacun des ces réseaux isolés. Masque sous-réseaux: /24
17
Sous-réseaux
Combien de sous-réseaux?
223.1.2.2223.1.2.1
223.1.2.6
223.1.3.2223.1.3.1
223.1.3.27
223.1.1.1
223.1.1.3
223.1.1.4
223.1.1.2
223.1.7.0
223.1.7.1223.1.8.0223.1.8.1
223.1.9.1
223.1.9.2
18
Adressage IP: CIDR
CIDR: Classless InterDomain Routing La portion d’adresse sous-réseau de longueur arbitraire
Format d’adresse: a.b.c.d/x, où x est le nombre de bits
dans la portion sous-réseau de l’adresse
11001000 00010111 00010000 00000000
partieSous-réseaux
partiehôte
200.23.16.0/23
19
Pour mettre en œuvre les sous-réseaux, les ordinateurs et
les routeurs utilisent un masque de sous-réseau qui permet
d ’extraire les différentes parties de l ’adresse IP.32 bits
10 Id-réseau Id-Sous-réseau Id-ordinateur
1 1 1 1 1 1 1 1 ..... 1 1 1 1 1 1 1 1 1 0 0 0 .... 0 0Masque desous-réseau
Le masque de sous-réseaux
1 0 0 0 1 1 0 0140
1 1 0 0 0 0 0 0192
0 0 1 1 1 0 0 056
0 0 1 0 1 1 0 145
1 1 1 1 1 1 1 1255
1 1 1 1 1 1 1 1255
1 1 1 1 1 1 1 1255
0 0 0 0 0 0 0 00
Adresse IP
Masque du sous-réseau
Id-réseau Id-sous-réseau Id-ordinateur
Le masque de sous-réseaux
21
Chaque fois que vous empruntez un bit supplémentaire au
champ d'hôte, le nombre de sous-réseaux créés augmente d'une
puissance de 2.
deux de ces sous-réseaux sont réservés ou inutilisables
Les huit sous-réseaux potentiels créés par l'emprunt de trois bits
= 23 (2 x 2 x 2 ) et en enlevant les deux sous-réseaux réservés
on obtient.
Question : Combien de sous-réseaux peuvent être créés avec
un champ de sous-réseau de quatre bits ?
Réponse : Un champ de sous-réseau de quatre bits permet donc
de créer 14 sous-réseaux utilisables (de 1 à 14)
Le calcul du masque de sous-réseau et de l'adresse IP
22
Plan d’adressage
Comment éviter que vos adresses internes entrent en conflit
avec celle de l’Internet?
La solution repose sur l’utilisation de la translation d’adresses
(NAT).
Cette technique permet de masquer votre plan d’adressage
privé vis-à-vis des utilisateurs situés sur l’Internet.
Un ensemble d’adresses privés seront non routées à l’Internet.Réseaux réservés (RFC 1918) Espace d’adressage
10.0.0.0 1 réseau de classe A
De 172.16.0.0 à 172.31.0.0 16 réseaux de classe B
De 192.168.0.0 à 192.168.255.0
256 réseaux de classe C
23
Utilisation d ’un nom symbolique plutôt qu ’une adresse
décimale
Exemple :
isiserver.isi.rnu.tn 192.168.1.2
www.yahoo.fr 10.25.123.68
L ’unicité des adresses unicité des noms
Il existe un "plan de nommage" hiérarchique mondial
(DNS)
Nommage des ressources
com edu org net tn fr
sun acm ieee rnu
isi
laas
générique géographique
24
Les domaines de haut niveau sont de deux types :
générique com : commercial
edu : institutions liées à l ’éducation
org : organisation
net: fournisseur d ’accès.
géographique tn : tunisie
fr : France
Chaque domaine gère les domaines qui sont situées sous
lui.
Le nommage est basé sur les organisations et pas sur les
réseaux
Nommage des ressources
25
Les noms sont plus faciles à utiliser que les adresses IP.
La résolution de noms peut se faire grâce à un fichier de
corrélation (nom, adresse IP) au niveau de chaque hôte.
Cette solution peut être pratique pour un réseau de faible
étendu
Elle devient fastidieuse si le réseau est grand, car la mise à
jour du fichier de corrélation devient une tâche très lourde
pour l ’administrateur réseau.
En pratique, une machine sera dédiée pour la résolution de
noms
Chaque station envoie une requête contenant le nom d ’un
hôte au serveur DNS afin de demander son adresse IP.
Pour minimiser le nombre de requêtes, chaque station doit
mémoriser cette association (nom, adresse IP) dans un cache.
Nommage des ressources
26
Principe de fonctionnement
Il existe plusieurs types de serveurs :
Les serveurs maîtres permettant de maintenir à jour la base de
données des machines relatives à la zone pour laquelle la machine
assure ce rôle de serveur maître. Il existe deux types de serveurs
maîtres :
Le serveur primaire (un seul par zone) qui maintient les données sur
disque.
Le serveur secondaire (un ou plusieurs par zone) qui reçoit
périodiquement ses données du serveur primaire pour assurer le rôle de
secours en cas de défaillance du serveur primaire.
Un serveur peut être serveur maître pour plusieurs domaines : Il est
primaire pour certains domaines et secondaire pour d ’autres.
27
Principe de fonctionnement
Les types de serveurs : (suite)
Les serveurs seulement caches :
Tous les serveurs DNS jouent le rôle de serveur cache.
Les serveurs DNS qui ne sont ni primaire ni secondaire sont dit seulement
cache.
Il récupèrent l ’information à partir de serveurs maîtres et la conserve
dans un cache pendant un temps déterminé par une variable temps de
vies (TTL).
Ils répondent à une requête s ’il possède l ’information dans son cache
sinon il la renvoie à un serveur maître.
Les serveurs du domaine racine ont une connaissance de tous
les domaines racines de l ’Internet.
28
Serveur DNS racine
Serveur DNS com Serveur DNS org Serveur DNS edu
poly.eduServeur DNS
umass.eduServeur DNS
yahoo.comServeur DNS
amazon.comServeur DNS
pbs.orgServeur DNS
Distribution hiérarchique de la base de noms
Il existe trois types de serveurs :
Les serveurs de noms locaux
Les serveurs de noms racine
Les serveurs de noms de source autorisée
29
Serveur de Noms local
Chaque fournisseur d’accès internet (Entreprise, Université, FAI
résientiel) dispose d’un serveur de nom local (par défaut)
N’appartient pas forcément à la hiérarchie DNS
Quand un hôte exécute une requête DNS, cette requête est
dirigée au serveur DNS local.
En cas de non résolution en local il agit comme proxy et
retransmet la requête à un autre serveur de nom de la hiérarchie.
30
Serveurs de noms racine
Contacté par les serveurs de noms locaux quand il n’arrive pas à faire la résolution
Le serveur de nom racine: Contacte les serveurs de noms de source autorisée si la
résolution est inconnu Demande la résolution auprès du serveur de noms de source
autorisée Ré-envoie la résolution au serveur de noms local
13 serveurs de noms racine dans le mondeb USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
e NASA Mt View, CAf Internet Software C. Palo Alto, CA (and 17 other locations)
i Autonomica, Stockholm (plus 3 other locations)
k RIPE London (also Amsterdam, Frankfurt)
m WIDE Tokyo
a Verisign, Dulles, VAc Cogent, Herndon, VA (also Los Angeles)d U Maryland College Park, MDg US DoD Vienna, VAh ARL Aberdeen, MDj Verisign, ( 11 locations)
31
Serveurs de noms de source autorisée (SA)
Serveurs SA de domaine haut niveau (TLD):
responsable pour com, org, net, edu, etc, et tous les
domaines de haut niveaux géographiques comme tn,
fr, uk, ca, jp.
E.g; edu : pour éducation
les serveurs DNS SA non TLD:
Tout serveur est enregistré auprès d’un serveur de nom
dit “de source autorisé”.
En régle générale, il s’agit tout simplement du serveur
de nom du fournisseur d’accès local
32
calmip.ult.rnu.tn
latour.rst.laas.fr
Serveur DNS racine
Serveur DNS localdns-cck.rnu.tn
1
23
4
5
6
Serveur DNS de source autoriséedns.laas.fr
78
Serveur DNS TLD
Exemple : Recherche itérative
Hôte à ult.rnu.tn veut l’adresse IP du hôte latour.rst.laas.fr
recherche itérative: Le serveur contacté
répond avec le nom d’un autre serveur à contacter
“Je ne connais pas ce nom mais demande auprès de ce serveur
33
calmip.ult.rnu.tn
latour.rst.laas.fr
Serveur DNS racine
Serveur DNS localdns-cck.rnu.tn
1
2
45
6
Serveur DNS de source autoriséedns.laas.fr
7
8
Serveur DNS TLD
3
Exemple : Recherche récurssive
Recherche récursive: Le serveur contacté
doit envoyer le résultat de résolution à la machine source au stade final
charge assez lourde pour le serveur DNS?
34
Le protocole de contrôle d ’Internet
Le protocole de contrôle d ’Internet (ICMP) permet aux routeurs
et aux ordinateurs d ’envoyer des informations de contrôle
réseau aux autres (ex.signaler une erreur de traitement du
datagramme).
De point de vu décomposition en couche, ICMP est un protocole
séparé qui appartient à la couche réseau mais qui utilise le
protocole IP pour transporter les messages.
Dans la pratique, ICMP fait partie de IP et
tous les modules de IP doivent supporter le
protocole ICMP.
Il existe environ une douzaine de types de
messages ICMP. Chaque type de message ICMP est encapsulé dans un
datagramme IP.
IP
TransportTCP/UDP
ICMP
35
Le protocole de contrôle d ’Internet
Version=4 Lg_entType de Service = 0 Longueur totale
Identification Drap Dép_fragment
Durée de vie Protocole=1 Total de contrôle d ’entête
Adresse source
Adresse destination
32 bits
type code Total de contrôle d ’en-tête ICMP
Généralement non utilisé
Message ICMP
En-tête IP
En-tête ICMP
36
Le protocole de contrôle d ’Internet
Message "destinataire non accessible " Dans le cas où le réseau indiqué dans le champ adresse de
destination de l'en-tête IP du datagramme reçu est inaccessible ou
inconnu (ex. la distance à ce réseau est marquée comme infinie) Le routeur émet en retour un message ICMP (type=3) pour spécifier
ce message. Message "durée de vie écoulée "
Lorsqu'un routeur traitant un datagramme est amené à mettre à jour le champ Durée de Vie de l'en-tête IP et que ce champ atteint une valeur zéro, le datagramme doit être détruit.
Le routeur prévient l ’ordinateur source de cette destruction par ce message.
Message "erreur de paramètre " Si le routeur où l ’ordinateur traitant le datagramme rencontre un
problème avec un paramètre. Le routeur ou l ’ordinateur détectant la faute peut alors en avertir la
source par un tel message.
37
Le protocole de contrôle d ’Internet
Message de "redirection" Un routeur peut rediriger un datagramme destiné à un ordinateur
dans les situations suivantes : Un routeur, G1, reçoit un datagramme Internet en provenance
d'un ordinateur situé sur le segment local de réseau où il se trouve.
Le routeur, G1, vérifie ses tables de routage et obtient l'adresse du routeur suivant, G2, situé sur le chemin d'acheminement de ce datagramme vers le réseau local destinataire X.
Si G2 et l ’ordinateur source se trouvent sur le même segment de réseau, un message de redirection est envoyé vers l ’ordinateur source.
Ce message permet d'avertir la source que le trafic vers le réseau X peut être directement adressé au routeur G2, diminuant ainsi le chemin d'acheminement.
Pour les datagrammes présentant une option IP de routage précisant l'adresse du routeur dans le champ de destination, aucun message de redirection ne sera émis.
38
Le protocole de contrôle d ’Internet
Message d'écho et de "réponse à écho" Les données reçues dans un message d'écho doivent être réémises
dans la réponse à l'écho.
L'identificateur et le numéro de séquence peuvent être utilisés par l'émetteur du message d'écho afin d'associer facilement l'écho et sa réponse.
Marqueur temporel ou réponse à marqueur temporel Ils sont semblables aux messages précédents avec une inscription
de l ’heure d ’arrivée de la demande et l ’heure de retour dans le message
Ils donnent une indication sur le temps d ’acheminement.
type code Total de contrôle d ’en-tête ICMP
Identificateur
Données...
Numéro de séquence
39
Le protocole ARP (Adress Resolution Protocol)
L ’adresse Physique de la carte réseau est différente de l ’adresse logique (adresse IP) fixée par l ’administrateur. Exemple : dans le cas d ’un réseau Ethernet, l ’adresse physique est
fixée par le constructeur et elle est unique (sur 48 bits). L ’adresse IP est utilisée par la couche réseau et l ’adresse physique
est utilisée par la couche liaison de données. Question : commet les adresses IP sont-elles interprétées au niveau
de la couche liaison de données. 1ère solution : Avoir un fichier de configuration contenant la
correspondance entre adresse IP et adresse physique: Cette solution ne peut être exploitée que pour des réseaux de faible taille.
2ème solution : Émission d ’un datagramme en mode diffusion générale demandant « qui possède l ’adresse IP ... »
• La station qui reconnaît son adresse retournera en réponse son adresse physique.
• Cette solution peut être optimisée en mémorisant les adresses retournées (utilisation de cache ARP).
3ème solution : Chaque ordinateur diffuse au démarrage son adresse physique aux autres ordinateurs actifs sur le réseau.
40
Le protocole ARP (Adress Resolution Protocol)
1 2 R1 R2 3 4
WANRouteur INFRouteur MAT
192.31.65.7192.31.65.5
192.31.65.1
192.31.60.4 192.31.60.7192.31.63.3
192.31.63.4192.31.63.5
Réseau Ethernet INF192.31.65.0 Réseau FDDI
192.31.60.0
Réseau Ethernet MAT192.31.63.0
E1 E2 E3 E4 E5 E6
Exemple : la station 1 veut émettre un datagramme à la station 2, mais elle ne connaît pas son adresse physique E2.
La station 1 émet un datagramme en mode diffusion générale demandant « qui possède l ’adresse IP 192.31.65.5 »
la station 2 reconnaît son adresse IP et envoie une réponse contenant l ’adresse Ethernet (E2).
41
Le protocole ARP (Adress Resolution Protocol)
La station ne peut utiliser le protocole ARP pour envoyer un datagramme à la station 4 que si le routeur INF est configuré pour répondre à une demande ARP sur le réseau Ethernet 192.31.63.0
Cette solution est appelé proxy ARP.
Le mécanisme du proxy ARP dans cet exemple est : La station 1 encapsule le datagramme IP dans la trame Ethernet
adressée à E3. Quand la trame Ethernet arrive au routeur INF, le datagramme IP est
analysé et son contenu comparé à la table de routage. Le routeur conclue alors que les datagrammes destinés au réseau
192.31.63.0 sont à transmettre au routeur MATet récupère l ’adresse Ethernet E6. Le routeur MAT élabore une trame Ethernet destinée à E6 dans laquelle il encapsule le datagramme et transmet cette trame sur le réseau MAT.
La station 4 récupère la trame et extrait le datagramme qui sera traité par le logiciel IP.
La communication avec un réseau distant à travers un WAN se fait de la même manière.
M. Jarraya, Institut Supérieur d'Informatique42
Le protocole TCP
2ème partie :
43
structure d’un segment TCP
port source port dest
32 bits
donnéesapplication
(longueur variable)
sequence number
acknowledgement numberFenêtre réception
Pointeur donn.URGchecksum
FSRPAUheadlen
notused
Options (longueur variable)
URG: données urgentes
ACK: séq de l’ACKpris en considération
PSH: passer donnée àla couche application
RST, SYN, FIN:pour établissement
et fermeture de connexion
Nombre d’octetspouvant être acceptés
Compte le nombred’octets de données(non du segment !)
ChecksumInternet
(comme pour UDP)
44
Port source (16 bits) : Le numéro de port de la source.
Port Destinataire (16 bits ) : Le numéro de port du destinataire.
Numéro de séquence (32 bits) : Le numéro du premier octet de
données par rapport au début de la transmission (sauf si SYN est
marqué). Si SYN est marqué, le numéro de séquence est le
numéro de séquence initial (ISN) et le premier octet a pour
numéro ISN+1.
Accusé de réception (32 bits) : Si ACK est marqué ce champ
contient le numéro de séquence du prochain octet que le
récepteur s'attend à recevoir.
Data Offset ou Header length (4 bits) : La taille de l'en-tête TCP
en nombre de mots de 32 bits. Il indique là ou commence les
données. L'en-tête TCP, dans tous les cas a une taille
correspondant à un nombre entier de mots de 32 bits.
structure d’un segment TCP
45
Réservé (6 bits) : Réservés pour usage futur et doivent être à 0.
Bits de contrôle (6 bits): URG: Pointeur de données urgentes significatif
ACK: Accusé de réception. Si ACK est positionné à 1, alors le numéro
de l ’accusé de réception est pris en compte.
PSH: Fonction Push qui signifie que les données doivent être
poussées à l ’application concernée dès leur arrivée.
RST: Réinitialisation d ’une connexion devenue incohérente à cause
de l ’arrêt brutal d ’un ordinateur ou de tout autre incident.
SYN: Synchronisation des numéros de séquence pour
l ’établissement d ’une connexion.
FIN: Fin de transmission
structure d’un segment TCP
46
Fenêtre (16 bits) : Le nombre d'octets à partir de la position
marquée dans l'accusé de réception que le récepteur est capable
de recevoir.
Total de contrôle d ’en-tête (16 bits) : semblable à celui de IP
Pointeur de données urgentes (16 bits) : Communique la position
d'une donnée urgente en donnant son décalage par rapport au
numéro de séquence. Le pointeur doit pointer sur l'octet suivant
la donnée urgente. Ce champs n'est interprété que lorsque URG
est marqué.
Options (variables) : semblables à celles de IP.
structure d’un segment TCP
47
Numéros de Sequence
Host A
Host B
TCP Data
TCP Data
TCP HDR
TCP HDR
ISN (initial sequence number)
numéro de Sequence =
1er octet Numéro de sequence Ack number = l’octet
qui suit le dernier
48
Numéro de séquence et d’accusé de réception TCP
Numéro de séquence:
Le numéro dans le
flux de données du
premier octets de
chaque segment
Numéro ACKs:
le num de seq du
prochain octet qu’il
attend de l’autre
côté
ACK cumulatif
Hôte A Hôte B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
Utilisateurtappe
‘C’Aquitte
‘C’, envoie ‘C’
tempsExemple de scénario Telnet
Aquitte‘C’,
envoie ‘C’
49
TCP: scénarios de retransmissionHôte A
Seq=100, 20 octets de données
ACK=100
tempsdéclanchement du Timeout
Hôte B
Seq=92, 8 octets de données
ACK=120
Seq=92, 8 octets de données
Seq=
92
tim
eout
ACK=120
Hôte A
Seq=92, 8 octets de données
ACK=100
lost
tim
eout
Perte d’un accusé
Hôte B
X
Seq=92, 8 octets de données
ACK=100
temps
Seq=
92
tim
eout
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
50
TCP: scénarios de retransmission
Hôte A
Seq=92, 8 octets de données
ACK=100
lost
tim
eout
Accusé de réception cumulatif
Hôte B
X
Seq=100, 20 octets de données
ACK=120
temps
SendBase= 120
51
Mécanisme de contrôle de flux
Le protocole TCP se base sur l ’attribution d ’un numéro de séquence à chaque octet de données.
Cette technique de "marquage" permet de confirmer chaque octet individuellement.
Le mécanisme d'acquittement est cumulatif et la confirmation de l'octet de numéro de séquence X indique que tous les octets précédents ont été bien reçus.
Ce mécanisme permet l'élimination de toute donnée reçue en double par le principe de retransmission de séquences en faute.
La technique de numération commence dès le premier octet de donnée, qui reçoit le numéro de séquence le plus faible et les autres octets sont numérotés en séquence par ordre croissant.
L ’espace de numérotation est codé sur 32 bits permettant le comptage de 0 à 232 - 1 octets modulo 232.
52
Gestion de la fenêtre de transmission
La fenêtre transmise dans chaque segment indique la plage de numéros de séquence que l'émetteur de la fenêtre (celui qui reçoit les données) est prêt à accepter.
La taille de cette fenêtre est en relation avec la taille disponible des tampons de données associés à cette connexion.
Généralement la taille de la fenêtre est entre 4k et 8k Octets quand la connexion est établie).
Données enattente d’ack
Données peuventêtre envoyées
Données non autoriséespour l’envoi
Ils doivent attendre quela fenêtre se déplace
Données envoyéeset acquittées
Taille de fenêtre offerte(fixée par le récepteur)
53
Le protocole TCP Exemple de gestion de fenêtre sous TCP :
Émetteur Récepteur
L ’application écrit 2K Vide
TamponRécepteur
4Ko
2Ko
1Ko
L ’application écrit 3K
L ’émetteur est bloqué
L ’application peutenvoyer jusqu ’à 2K
L ’application lit 2K
2Ko | SEQ =0
2Ko | SEQ =2048
1Ko | SEQ =4096
SeqACK = 2048; Fenêtre = 2048
SeqACK = 4096; Fenêtre = 0
SeqACK = 4096; Fenêtre = 2048
Plein
2Ko
2Ko
54
Numéros de séquence initiale
Etablissement de connexionen trois phases
Client Serveur
Syn +ISNA
Syn + Ack +ISNB
Ack
55
Protocole d ’établissement de connexion
Une connexion est demandée par activation de la commande
OPEN indiquant le port local et les paramètres de socket distant.
La trace de cette connexion est enregistrée dans une structure
de données appelée Transmission Control Block (TCB).
Il existe deux modes de connexion avec la commande OPEN :
Un mode actif où OPEN ouvre une connexion jusqu ’à son
terme : commande CONNECTER (CONNECT).
Un mode passif où le processus de connexion se met en
attente d ’une demande de connexion plutôt que de l ’initier
lui même : commande ÉCOUTER (LISTEN).
56
Protocole d ’établissement de connexion
Exemple : une connexion entre un client et un serveur. Une des extrémités est un serveur qui attend d ’une manière passive
l ’arrivée d ’une communication en exécutant la primitive LISTEN.
L ’autre extrémité est un client qui exécute la primitive CONNECT
indiquant l ’adresse IP du serveur, le numéro de port et la taille
maximum de segments TCP.
La primitive CONNECT envoie un segment TCP avec le bit SYN à 1 et
le bit ACK à 0.
Quand le segment CONNECT arrive au serveur, l ’entité TCP de
destination cherche à savoir s ’il existe une application à l ’écoute du
port indiqué.
Si oui, l ’application peut soit accepter soit refuser la connexion
et s ’elle l ’accepte, elle envoie un accusé de réception.
Si non, elle rejète la connexion et envoie un segment de non
acceptation avec le bit RST=1.
57
Protocole d ’établissement de connexion
Représentation de l ’ établissement d ’une connexion TCP par un automate à états fini : « coté client »
L ’état initial est l ’état FERMÉE : aucune connexion n ’est active
L ’envoi d ’une demande de connexion "CONNECT" par le client crée unenregistrement de connexion et envoiun segment SYN : SYN émis
Quand le "SYN + ACK" arrive, TCP envoie le ACK de l ’établissement deconnexion et passe à l ’état ÉTABLIE
Les données peuvent être échangées entre le client et le serveur
FERMÉE
SYNémis
ÉTABLIE
La commande CLOSE permet le retourà l ’état FERMÉE
C0NNECT/SYN
CLOSE/-
SYN+ACK/ACK
Transfert de données
EVENEMENT/ACTION
58
Protocole d ’établissement de connexion
Représentation de l ’ établissement d ’une connexion TCP par un automate à états fini : « coté serveur »
Le serveur exécute un LISTEN et attend l ’arrivée d ’un SYN.
Lorsqu ’un SYN arrive, le serveur envoieun accusé de réception et passe à l ’étatSYN reçu.
Les données peuvent être échangées entre le cliente et le serveur
FERMÉE
SYNreçu
ÉTABLIE
La commande CLOSE permet le retourà l ’état FERMEE ÉCOUTE
LISTEN/-
SYN/SYN+ACK
ACK/-
CLOSE/-
L ’arrivée de l ’accusé de réception duSYN, le serveur passe à l ’état ETABLIE
Transfert de données
59
Protocole de fermeture de connexion
La connexion TCP est bidirectionnelle, donc on peut la représenter par deux connexions différentes à l ’alternat.
Chaque connexion et libérée indépendamment de son homologue.
La libération d ’une connexion se fait par envoi d ’un segment TCP avec le bit FIN positionné à 1.
Lors de la fermeture d ’une des deux connexions le flot de données peut continuer à circuler dans l ’autre sens.
Lorsque les deux connexions sont fermées, la connexion est libérée entre le client et le serveur.
Il faut quatre segments TCP pour libérer une connexion, mais on peut économiser un si le premier ACK et le second FIN seront dans le même segment.
Un temporisateur est armé à deux fois la durée de vie maximum des paquets pour décider de la fermeture de la connexion sans retour d ’un accusé de réception.
60
Protocole de fermeture de connexion
Représentation de la fermeture d ’une connexion TCP par un automate à états fini : « coté client »
La commande close permet de terminer l ’application. L ’entité TCP envoie un segment FIN et attend un ACK.
Quand le serveur exécute aussi un CLOSEle client reçoit un FIN qui sera acquitté.L ’autre sens sera fermé aussi.
L ’arrivée d ’un ACK permet de passerà l ’état FIN ATTENTE 2 et ferme unsens de la connexion.
TCP attend l ’équivalent d ’une durée de viemaximale de segment afin de garantir quetous les paquets appartenant à la connexionont été bien disparus.
ÉTABLIE
FIN ATTENTE 1
CLOSE/FIN
FINATTENTE 2
ACK/-
FERMETUREEN COURS
ATTENTETEMPORISÉE
FIN/ACK
FIN+ACK/ACK
FIN/ACK
FERMEE
Expirationtemporisateur
ACK/-
61
Protocole de fermeture de connexion
Représentation de la fermeture d ’une connexion TCP par un automate à états fini : « coté serveur »
Si un FIN arrive du client, le serveurenvoie un ACK.
Lorsque le serveur réçoit l ’ACK du FIN envoyé, il libère la connexion et supprimel ’enregistrement de connexion.
Quand le serveur exécute la commandeCLOSE, l ’entité TCP envoie un FIN au client.
ETABLIE
ATTENTEFERMETURE
DernierACK
FERMÉE
FIN/ACK
CLOSE/FIN
ACK/-
62
synthèse Représentation d’une connexion TCP par un automate à états fini :
« schéma complet» C0NNECT/SYN
FERMÉE
SYNémis
ÉTABLIE
CLOSE/-
SYN+ACK/SYNTransfert de données
SYNreçu
ÉCOUTE
LISTEN/-SYN/SYN+ACK
ACK/-
CLOSE/-
FIN ATTENTE 1
CLOSE/FIN
FINATTENTE 2
ACK/-
FERMETUREEN COURS
ATTENTETEMPORISÉE
FIN/ACK
FIN+ACK/ACK
FIN/ACK
ATTENTEFERMETURE
DernierACK
FERMÉE
FIN/ACK
CLOSE/FIN
ACK/-
ACK/-
63
Exemple
Requête : <nom utilisateur> dans le serveur
Réponse : utilisateur reconnu ou non
Serveur Client
64
Les sockets : Exemple de tests
Utilisation de deux machines :
Un serveur d ’adresse 192.168.1.50
Un client d ’adresse 192.168.1.43
Exécution de l ’application client sur 192.168.1.43
Exécution de l ’application serveur sur 192.168.1.50
Exemples tests :
Envoi d ’une première requête par le client contenant le username
<jarraya>
Envoi d ’une deuxième requête par le client contenant le username
<toto>
Interprétation des résultats
Utilisation d ’un analyseur de protocoles « Agilent Advisor LAN » pour
analyser les trames échangées entre le client et le serveur
65
66
Analyse de la trame 1
------------ ETHER Header ------------00 30 F1 10 53 58 ETHER: Destination: 00-30-F1-10-53-5800 40 F4 71 B0 BE ETHER: Source: 00-40-F4-71-B0-BE08 00 ETHER: Protocol: IP ------------ IP Header ------------45 IP: Version = 4 IP: Header length = 2000 IP: Differentiated Services (DS) Field = 0x00 IP: 0000 00.. DS Codepoint = Default PHB (0) IP: .... ..00 Unused00 3C IP: Packet length = 6038 D0 IP: Id = 38d040 00 IP: Fragmentation Info = 0x4000 IP: 1.. .... Don't Fragment Bit = TRUE IP: 0. .... .More Fragments Bit = FALSE IP: 0 0000 0000 0000 Fragment offset = 040 IP: Time to live = 6406 IP: Protocol = TCP (6)7E 3E IP: Header checksum = 7E3EC0 A8 01 2B IP: Source address = 192.168.1.43C0 A8 01 32 IP: Destination address = 192.168.1.50
67
Analyse de la trame 1 (suite)
------------ TCP Header ------------04 06 TCP: Source port = 103013 8D TCP: Destination port = 5005D5 D3 E8 54 TCP: Sequence number = 358743458000 00 00 00 TCP: Ack number = 0A0 TCP: Data offset = 4002 TCP: Flags = 0x02 TCP: ..0. .... URGENT Flag = FALSE TCP: ...0 .... ACK Flag = FALSE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..1. SYN Flag = TRUE TCP: .... ...0 FIN Flag = FALSE16 D0 TCP: Window = 584007 49 TCP: Checksum = 074900 00 TCP: Urgent pointer = 0000000002 04 05 B4 04 02 08 0A TCP: Options = (mss 1460,opt-4:,
tsval = 53380 tsecr = 0,nop,ws = 0)00 00 D0 84 00 00 00 00 01 03 03 00
68
Analyse de la trame 2 ------------ TCP Header ------------13 8D TCP: Source port = 500504 06 TCP: Destination port = 1030DF 1D 6B 2D TCP: Sequence number = 3743247149D5 D3 E8 55 TCP: Ack number = 3587434581A0 TCP: Data offset = 4012 TCP: Flags = 0x12 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..1. SYN Flag = TRUE TCP: .... ...0 FIN Flag = FALSE16 A0 TCP: Window = 579238 6F TCP: Checksum = 386F00 00 TCP: Urgent pointer = 0000000002 04 05 B4 04 02 08 0A TCP: Options = (mss 1460,opt-4:,tsval =
427175 tsecr = 53380,nop,ws = 0)00 06 84 A7 00 00 D0 84 01 03 03 00
69
Analyse de la trame 3
------------ TCP Header ------------04 06 TCP: Source port = 103013 8D TCP: Destination port = 5005D5 D3 E8 55 TCP: Sequence number = 3587434581DF 1D 6B 2E TCP: Ack number = 374324715080 TCP: Data offset = 3210 TCP: Flags = 0x10 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...0 FIN Flag = FALSE16 D0 TCP: Window = 584067 04 TCP: Checksum = 670400 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 00 D0 84 TCP: Options = (nop,nop,tsval = 53380
tsecr = 427175)00 06 84 A7
70
Analyse de la trame 4
------------ TCP Header ------------04 06 TCP: Source port = 103013 8D TCP: Destination port = 5005D5 D3 E8 55 TCP: Sequence number = 3587434581DF 1D 6B 2E TCP: Ack number = 374324715080 TCP: Data offset = 3218 TCP: Flags = 0x18 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 1... PUSH Flag = TRUE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...0 FIN Flag = FALSE16 D0 TCP: Window = 5840C7 A7 TCP: Checksum = C7A700 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 00 D0 84 TCP: Options = (nop,nop,tsval = 53380
tsecr = 427175)00 06 84 A7 6A 61 72 72 61 79 61 TCP: 7 bytes of data
71
Analyse de la trame 5
------------ TCP Header ------------13 8D TCP: Source port = 500504 06 TCP: Destination port = 1030DF 1D 6B 2E TCP: Sequence number = 3743247150D5 D3 E8 5C TCP: Ack number = 358743458880 TCP: Data offset = 3210 TCP: Flags = 0x10 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...0 FIN Flag = FALSE16 A0 TCP: Window = 579267 2D TCP: Checksum = 672D00 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 06 84 A7 TCP: Options = (nop,nop,tsval =
427175 tsecr = 53380)00 00 D0 84
72
Analyse de la trame 6 ------------ TCP Header ------------13 8D TCP: Source port = 500504 06 TCP: Destination port = 1030DF 1D 6B 2E TCP: Sequence number = 3743247150D5 D3 E8 5C TCP: Ack number = 358743458880 TCP: Data offset = 3218 TCP: Flags = 0x18 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 1... PUSH Flag = TRUE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...0 FIN Flag = FALSE16 A0 TCP: Window = 579218 79 TCP: Checksum = 187900 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 06 84 A7 TCP: Options = (nop,nop,tsval = 427175
tsecr = 53380)00 00 D0 84 6A 61 72 72 61 79 61 20 TCP: 27 bytes of data3A 20 4D 6F 68 61 6D 65 64 20 4A 61 72 72 61 79 61 5F 6E
73
Analyse de la trame 7
------------ TCP Header ------------04 06 TCP: Source port = 103013 8D TCP: Destination port = 5005D5 D3 E8 5C TCP: Sequence number = 3587434588DF 1D 6B 49 TCP: Ack number = 374324717780 TCP: Data offset = 3210 TCP: Flags = 0x10 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...0 FIN Flag = FALSE16 D0 TCP: Window = 584066 E2 TCP: Checksum = 66E200 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 00 D0 84 TCP: Options = (nop,nop,tsval = 53380
tsecr = 427175)00 06 84 A7
74
Analyse de la trame 8
------------ TCP Header ------------04 06 TCP: Source port = 103013 8D TCP: Destination port = 5005D5 D3 E8 5C TCP: Sequence number = 3587434588DF 1D 6B 49 TCP: Ack number = 374324717780 TCP: Data offset = 3211 TCP: Flags = 0x11 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...1 FIN Flag = TRUE16 D0 TCP: Window = 584066 E1 TCP: Checksum = 66E100 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 00 D0 84 TCP: Options = (nop,nop,tsval = 53380
tsecr = 427175)00 06 84 A7
75
Analyse de la trame 9
------------ TCP Header ------------13 8D TCP: Source port = 500504 06 TCP: Destination port = 1030DF 1D 6B 49 TCP: Sequence number = 3743247177D5 D3 E8 5D TCP: Ack number = 358743458980 TCP: Data offset = 3211 TCP: Flags = 0x11 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...1 FIN Flag = TRUE16 A0 TCP: Window = 579267 10 TCP: Checksum = 671000 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 06 84 A7 TCP: Options = (nop,nop,tsval = 427175
tsecr = 53380)00 00 D0 84
76
Analyse de la trame 10
------------ TCP Header ------------04 06 TCP: Source port = 103013 8D TCP: Destination port = 5005D5 D3 E8 5D TCP: Sequence number = 3587434589DF 1D 6B 4A TCP: Ack number = 374324717880 TCP: Data offset = 3210 TCP: Flags = 0x10 TCP: ..0. .... URGENT Flag = FALSE TCP: ...1 .... ACK Flag = TRUE TCP: .... 0... PUSH Flag = FALSE TCP: .... .0.. RST Flag = FALSE TCP: .... ..0. SYN Flag = FALSE TCP: .... ...0 FIN Flag = FALSE16 D0 TCP: Window = 584066 E0 TCP: Checksum = 66E000 00 TCP: Urgent pointer = 0000000001 01 08 0A 00 00 D0 84 TCP: Options = (nop,nop,tsval = 53380
tsecr = 427175)00 06 84 A7