CMs Reseaux PDF
CMs Reseaux PDF
CMs Reseaux PDF
Karim Sehaba
Matre de confrences
Organisation
Supports de CM et TD ici :
http://liris.cnrs.fr/ksehaba/Reseaux
CM
5 sances d1h45
Examen
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
TD
7 sances d1h45
Projet
Programmation Rseaux
Plan
Modles en couches (OSI et TCP)
Installation et configuration dun serveur Web Apache
L'adressage et le routage IP
Programmation par sockets MiniTchat (3 sances)
valuation
Rfrences
Livres :
Net :
http://www.commentcamarche.net/
Certains transparents sont de Olivier Glck (Lyon1)
Introduction
Qu'est-ce qu'un rseau ?
Un ensemble d'entits (objets, personnes, machines, etc.) interconnectes les unes
avec les autres
Exemples :
rseau de transport
rseau tlphonique
rseau de neurones
Rseaux informatique
Un ensemble d'ordinateurs relis entre eux grce des lignes physiques et
changeant des informations sous forme de donnes numriques
Introduction
Les topologies
En bus
Tous les ordinateurs sont relis une mme ligne de transmission (bus)
En toile
Tous les ordinateurs sont relis un concentrateur (hub)
En anneau
Les ordinateurs sont situs sur une boucle
Cblage en maille
Chaque machine est relie toutes les autres par un cble
Introduction
Les types de rseaux
LAN (local area network - Rseau Local)
mme organisation dans une petite aire gographique,
dbit : [10 Mbps, 1 Gbps], utilisateurs : [100 1000]
MAN (Metropolitan Area Network Rseau mtropolitain)
interconnexion de plusieurs LAN gographiquement proches (dizaines de km)
WAN (Wide Area Network Rseau tendu)
interconnexion de plusieurs LAN travers de grandes distances gographiques
LAN
WAN
LAN
LAN
Introduction
Les techniques de transfert
La commutation de circuits
Circuit
Le transfert de paquets
Routage
Le paquet qui arrive doit possder ladresse complte du destinataire
Le routeur consulte sa table de routage pour choisir la meilleure ligne de sortie
Commutation
Les commutateurs acheminent les paquets vers le rcepteur en utilisant des rfrences, de
circuit
Les tables de commutation sont des tableaux, qui, une rfrence, font correspondre une
ligne de sortie
Seules les communications actives entre utilisateurs comportent une entre dans la table de
commutation.
Modles en couches
Notion de protocole
Modle de rfrence : OSI de ISO
Modle utilis sur Internet : TCP/IP
1. Donnes
Xyab lkd...
3. Donnes
Xyab lkd...
2. Code binaire
00110110001...
2. Code binaire
00110110001...
3. Signal
1. Signal
0 0 1 1 0 1 1
0 0 0
-numrique-
-analogique-
Protocole
En particulier :
contrle de la liaison
Communication en rseau :
protocoles organiss en plusieurs couches
Dfinit
Ide fondamentale :
Modle en couches
Donnes
Couche
application
Couche
prsentation
SH
Couche
transport
TH
Couche
rseau
Couche
physique
AH Donnes
Couche
application
Donnes
Couche
prsentation
PH
Couche
session
Couche
des donnes
Rcepteur
NH
DH
Couche
session
Donnes
Couche
transport
Donnes
Couche
rseau
Donnes
Donnes
bits
DT
Couche
des donnes
Couche
physique
Modle TCP/IP
Protocoles
Couche
Application
message
Couche
Transport
Couche
Internet
Couche
Rseaux
Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...
donnes
Couche
Transport
donnes
segment
donnes
datagramme
donnes
trame
bits
TCP, UDP
Couche
Internet
Couche
Rseaux
ETHERNET, ATM...
Modle TCP/IP
Les couches TCP/IP
Rseau
Adressage IP
Acheminement de datagrammes
IP
IP
IP
IP
IP
IP
IP
m
ra
g
ta
da
IP
IP
IP
IP
IP
Modle TCP/IP
Les couches TCP/IP
TCP
IP
IP
IP
IP
IP
IP
IP
TCP
IP
ta
da
am
gr
IP
TCP
IP
IP
IP
TCP
IP
Application
Modle TCP/IP
Efficacit du transfert :
Efficacit du transfert = donnes utiles / donnes totales
Encapsulation
Serveur
FTP
en-tte
applicatif
donnes
message
en-tte
TCP
en-tte
applicatif
TCP
donnes
segment
en-tte
IP
en-tte
TCP
en-tte
applicatif
IP
donnes
datagramme
en-tte
ethernet
en-tte
IP
en-tte
TCP
en-tte
applicatif
trame
donnes
Pilote
ETHERNET
en-queue
ethernet
Modle TCP/IP
Efficacit du transfert :
A
B
en-tte
FTP
donnes
message
FTP
en-tte
TCP
en-tte
FTP
donnes
segment
TCP
en-tte
IP
en-tte
TCP
en-tte
FTP
en-tte
IP
en-tte
TCP
en-tte
FTP
FTP
TCP
IP
Pilote
ETHERNET
en-tte
ethernet
donnes
datagramme
trame
donnes
IP
en-queue
ethernet
Pilote
ETHERNET
A veut envoyer 1024 octets de donnes B en utilisant le protocole FTP. On suppose que :
- l'entte FTP a une taille de 70 octet
- l'entte TCP a une taille fixe de 20 octets
- l'entte IP a une taille fixe de 20 octets
- l'entte plus l'en-queue des trames ETHERNET est de 18 octets
- Taille max d'une trame Ethernet est de 1518 octets
Quelle est l'efficacit du transfert ?
Notion de fanion
Lors
Fanion
Un
en transmission synchrone
caractre spcial
Une
donnes
fanion
Notion de transparence
Les caractres spciaux comme le fanion ne sont pas dlivrs aux couches
suprieures, il sont interprts pour les besoins du protocole
Les caractres spciaux doivent pouvoir tre transmis en tant que donnes et
donc dlivrs en tant que tel
mcanisme de transparence
Fonctionnement
Exemple
Fanion
01111110
Fanion
01111110
Squence originale
000111111001011111001101100
Squence transmise
00011111010010111110001101100
Fanion
01111110
Fanion
01111110
Organisation
CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux
Modle TCP/IP
Protocoles
Couche
Application
message
Couche
Transport
Couche
Internet
Couche
Rseaux
Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...
donnes
Couche
Transport
donnes
segment
Couche
Internet
donnes
datagramme
donnes
trame
bits
Couche
Rseaux
TCP, UDP
ETHERNET, ATM...
Couche internet
Adressage IP
Protocoles de la couche
IP - Internet Protocol
...
Adresse IP
Distribues par ICANN -Internet Corporation for Assigned Names and Numbers
HOST_ID
Adresse IP
Classes rseaux
4 octets
A 0 Net_ID
B 10
C 110
D 1110
HOST_ID
Net_ID
Net_ID
1.0.0.0 127.255.255.255
HOST_ID
HOST_ID
128.0.0.0 191.255.255.255
192.0.0.0 223.255.255.255
224.0.0.0 239.255.255.255
240.0.0.0 247.255.255.255
Adresse IP spciales
Diffusion locale et distante
255.255.255.255 : adresse de broadcast sur le rseau IP local
<NET_ID><111111> : adresse de broadcast dirige vers le rseau de
numro NET_ID
Rebouclage local : 127.y.x.z
Gnralement 127.0.0.1 (localhost)
Permet de tester la pile TCP/IP locale sans passer par une interface
matrielle
Adresse 0.0.0.0
Utilise par le protocole RARP
Adresse de la route par dfaut dans les routeurs
Sous-rseaux
Comment diviser un rseau IP en plusieurs sous-rseaux ?
Prendre quelques bits de la partie <HOST_ID> de l'@IP pour le sous-rseau
NET_ID
NET_ID
HOST_ID
SUBNET_ID
HOST_ID
Sous-rseaux
Comment dterminer l'adresse de sous-rseau ?
Adresse destination
Adresse source
NET_1
Netmask
SUBNET_1
HOST_ID
NET_2
ET Logique
Netmask
1.1 1.1 00
NET_1
SUBNET_1
00
SUBNET_2
HOST_2
ET Logique
1.1 1.1 00
?
=
NET_2
SUBNET_2
00
Sous-rseaux
Un rseau de classe B dispose du masque de sous-rseau 255.255.240.0
Les machines 159.84.146.236, 159.87.178.23 et 159.84.158.23 trouventelles sur le mme sous-rseaux ?
Netmask 255.255.240.0 =
11111111.11111111.11110000.00000000
IP1 : 159.84.146.236 = 10011111.01010100.10010010.11101100
IP2 : 159.87.178.23 = 10011111.01010111.10110010.00010111
IP3 : 159.84.158.23 = 10011111.01010100.10011110.00010111
Version
LET
Type service
Identification
Dure de vie
Longueur totale
Flag
Protocole
Dplacement
Adresse source
En-tte
Adresse destination
Options (0 ou plusieurs mots)
Bourrage
donnes
Version (4 bits): la version d'IP utilise
LET (4 bits) : Longueur d'En-Tte en nombre de mots de 32 bits
Type de service (8 bits) : qualit de service
Longueur Totale (16 bits) : taille (entte + donnes) en octet
Identification (16bits) : id des fragments d'un mme paquet
Flags (3 bits):
Bit 0: rserv, doit tre zro ;
Bit 1: (AF) 0 = Fragmentation possible, 1 = Non fractionnable
Bit 2: (DF) 0 = Dernier fragment, 1 = Fragment intermdiaire
Version
LET
Type service
Identification
Dure de vie
Longueur totale
Flag
Protocole
Dplacement
Adresse source
En-tte
Adresse destination
Options (0 ou plusieurs mots)
Bourrage
donnes
Dplacement (13 bits) : Position du fragment par rapport au paquet de dpart, en nombre de mots de 8 octets
Dure de vie (TTL) 8 bits: pour que le paquet peut rester dans le rseau
Protocole (8 bits) : type du protocole de niveau suprieur
1
-> ICMP
Checksum d'en-tte (16 bits) : code de contrle derreur pour lentte
17 -> UDP
Adresse source (32 bits) : IP de la machine source
6
-> TCP
Adresse destination (32 bits) : IP de la machine destination
Version
LET
Type service
Identification
Dure de vie
Longueur totale
Flag
Protocole
Dplacement
Adresse source
En-tte
Adresse destination
Options (0 ou plusieurs mots)
Bourrage
donnes
1000
Ethernet
1500
FDDI
4470
Fonctionnement
H 1400 octets
H 776 octets
H 624 octets
H 1400 octets
H 1400 octets
H 776 octets
H 624 octets
(Dplacement 0)
(Dplacement 97)
LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
Donnes (1400 oct)
LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
LET
Type service
Longueur totale = 796
ID = 77
01
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Version
LET
Type service
Longueur totale = 644
ID = 77
00
Dplacement = 97
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
Adresse destination
LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
Donnes (1400 oct)
Version
LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
LET
Type service
Longueur totale = 796
ID = 77
01
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Version
LET
Type service
Longueur totale = 644
ID = 77
00
Dplacement = 97
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
Adresse destination
Protocole ARP
Protocole ARP
A
Table de
correspondance
@IP C @MAC C
-Cache ARP-
Protocole ICMP
Utilitaire ping
Teste laccessibilit dune destination de bout en bout
valuation de performances (mesure de temps aller-retour)
La rponse doit parvenir avant 20 secondes
Exemple
Ping 127.0.0.1 : tester la pile TCP/IP locale
Ping mon@IP : vrifier la configuration rseau local
Ping @default-routeur : tester la configuration du sous-rseau et la passerelle
Ping @dest : tester un chemin de bout en bout
Protocole ICMP
Utilitaire Traceroute/Tracert
Permet
Envoie
src
TTL=1
TTL=2
R2
dest
Protocole IPv6
Pourquoi IPv6
L'IETF, en 1990, labore les souhaits d'un nouveau protocole et fit un appel
propositions
Objectifs du protocole
Protocole IPv6
Caractristiques
IPv6 est compatible avec IPv4, TCP, UDP, ICMP, DNS... (ou quelques modifications
mineures
Protocole IPv6
Protocole IPv6
Protocole IPv6
Exemples d'options
Routing Header
Liste de routeurs traverser obligatoirement
Fragmentation Header
Pour permettre au destinataire de rassembler les fragments (reprend les
champs de IPv4)
L'adressage
Organisation
CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux
Routage
Quel chemin empruntent les datagrammes pour arriver destination ?
Routage : mcanisme par lequel les donnes d'un quipement expditeur
sont achemines jusqu' leur destinataire
Routeur
dispositif permettant de choisir le chemin que les datagrammes vont
emprunter
possde plusieurs cartes rseau dont chacune est relie un
rseau diffrent
utilise la table de routage qui dfinit le chemin emprunter pour une
adresse donne
Routage
Table de routage
Dfinit la correspondance entre l'adresse de la machine vise et le noeud
suivant auquel le routeur doit dlivrer le message
passerelle (gateway)
masque (mask)
interface
mtrique (cost)
Routage
Exemple
192.168.1.3
192.168.3.3
192.168.2.
192.168.1.
.1
.2
192.168.3.
.2
.1
R1
R2
192.168.2.3
192.168.3.4
Table de routage de A
Destination
Netmask
192.168.1.0
255.255.255.0
192.168.2.0
255.255.255.0
0.0.0.0
0.0.0.0
Gateway
Interface
Cost
192.168.1.3
192.168.1.1
192.168.1.3
192.168.1.1
192.168.1.3
Routage
Exemple
192.168.1.3
192.168.3.3
192.168.2.
192.168.1.
.1
.2
192.168.3.
.2
.1
R1
R2
192.168.2.3
192.168.3.4
Table de routage de B
Destination
Netmask
Gateway
Interface
Cost
192.168.1.0
255.255.255.0
192.168.2.2
192.168.2.3
192.168.3.0
255.255.255.0
192.168.2.1
192.168.2.3
192.168.2.0
255.255.255.0
192.168.2.3
Routage
Exemple
192.168.1.3
192.168.3.3
192.168.2.
192.168.1.
.1
.2
192.168.3.
.2
.1
R1
R2
192.168.2.3
192.168.3.4
Table de routage de R1
Destination
Netmask
192.168.1.0
255.255.255.0
192.168.2.0
255.255.255.0
192.168.3.0
255.255.255.0
Gateway
Interface
Cost
192.168.1.1
192.168.2.2
192.168.2.2
192.168.2.1
Routage
Exemple
192.168.1.3
192.168.3.3
192.168.2.
192.168.1.
.1
.2
192.168.3.
.2
.1
R1
R2
192.168.2.3
192.168.3.4
Table de routage de R2
Destination
Netmask
192.168.2.0
255.255.255.0
192.168.3.0
255.255.255.0
Gateway
Interface
Cost
192.168.2.1
192.168.3.2
Routage
Exemple
192.168.3.3
192.168.1.3
192.168.1.
192.168.2.
.1
.2
192.168.3.
.1
R1
.2
R2
192.168.2.3
192.168.3.4
Table de routage de R2
Destination
Netmask
192.168.2.0
255.255.255.0
192.168.3.0
255.255.255.0
192.168.1.0
255.255.255.0
Gateway
Interface
Cost
192.168.2.1
192.168.3.2
192.168.2.1
192.168.2.2
Routage
Mise jour de la table de routage
Manuelle
table
routage statique
commande
langage
Automatique
table
dynamique
processus
changes
Routage
Routage
Routage statique
La
rseau (NET_ID)
une
ou
machine (HOST_ID)
Syntaxe
Routage statique
Route vers une machine
route add 192.168.0.36 netmask 255.255.255.240 eth0 --------> ajouter
route del 192.168.0.36 netmask 255.255.255.240 eth0
--------> supprimer
--------> supprimer
Routage statique
Exemple
192.168.3.3
192.168.1.3
192.168.1.
192.168.2.
.1
.2
192.168.3.
.1
R1
.2
R2
192.168.2.3
192.168.3.4
Routage statique
Exemple
192.168.3.3
192.168.1.3
192.168.1.
192.168.2.
.1
.2
192.168.3.
.1
R1
.2
R2
192.168.2.3
192.168.3.4
Routage statique
Exemple
192.168.3.3
192.168.1.3
192.168.1.
192.168.2.
.1
.2
192.168.3.
.1
R1
.2
R2
192.168.2.3
R2 :
192.168.3.4
Routage statique
Exemple
192.168.3.3
192.168.1.3
192.168.1.
192.168.2.
.1
.2
192.168.3.
.1
R1
.2
R2
192.168.2.3
192.168.3.4
Routage statique
Exemple
192.168.3.3
192.168.1.3
192.168.1.
192.168.2.
.1
.2
192.168.3.
.1
R1
.2
R2
192.168.2.3
192.168.3.4
eth0 : 192.168.1.1
eth1 : 192.168.2.2
eth0 : 192.168.2.1
eth1 : 192.168.3.2
Routage Dynamique
Mise jour de la table de routage
Manuelle
table
routage statique
commande
langage
Automatique
table
dynamique
processus
changes
Routage
Routage
Routage Dynamique
Deux algorithmes clefs
Vecteur de distance Bellman-Ford
Chaque noeud stocke un "vecteur" pour toutes destinations
Ce vecteur
Distance =
Pr condition
Chaque noeud connat la distance vers tous ses voisins directs
Routage Dynamique
Types de routeurs
Routeurs noyaux
relient les rseaux
Routeurs externes
permettent une liaison des
rseaux autonomes entre eux
Protocoles : EGP (Exterior Gateway Protocol)
BGP (Border Gateway protocol)
Routeurs internes
routage l'intrieur d'un rseau autonome
Protocole : IGP (Interior Gateway Protocol)
RIP, OSPF, EIGRP
Rseau autonome
Rseau autonome
Protocoles de routages
RIP - Routing information protocol
Protocoles de routages
RIP - Routing information protocol
Avantages
trs utilis et trs rpondu sur tous les quipements
Inconvnients
Protocoles de routages
R3
1
1
A
R2
1
R1
10
10
192.168.1.0
10
R5
10
R4
Route de R1 A ?
RIP : R1 -> R5 -> R4 -> A
Supposons deux types de liens
rapides et lents
RIP n'est plus pertinent !
Protocoles de routages
OSPF - Open Shortest Path First
R3
1
1
A
R2
1
R1
10
10
192.168.1.0
10
R5
10
R4
Arc
R1, R2
R1, R5
R2, R3
R3, R4
R3, R5
R4, R5
R4, 192.168.1.0
Cot
1
10
1
10
1
10
10
Protocoles de routages
OSPF - Open Shortest Path First
lection des meilleures routes
- Algorithme de Dijkstra -
Protocoles de routages
OSPF - Open Shortest Path First
Dtermination de la table de routage
Extrait de la table de R1
Rseau de destination
Moyen de l'atteindre
Cot
192.168.1.0
R2
22
Rseau de destination
Moyen de l'atteindre
Cot
192.168.1.0
R4
20
Protocoles de routages
OSPF - Open Shortest Path First
Recherche du plus court chemin
Protocoles de routages
OSPF - Open Shortest Path First
Recherche du plus court chemin
Calculez les plus courts chemins de A destination de H, puis de G en utilisant
lalgorithme de Dijkstra
Protocoles de routages
OSPF - Open Shortest Path First
Recherche du plus court chemin
Calculez les plus courts chemins de A destination de H, puis de G en utilisant
lalgorithme de Dijkstra
Protocoles de routages
OSPF - Fonctionnement
1. tat initial
Le
Les
L'metteur
Protocoles de routages
OSPF - Fonctionnement
3. lire le routeur dsign (DR) et le routeur dsign de secours (BDR)
- DR
- BRG
Si
les donnes des routeurs sont plus rcentes, ils demandent une information
plus complte
Le
Les
Protocoles de routages
OSPF - Fonctionnement
5. lire les routes utiliser
Cration
Le
Ces
Toute
Protocoles de routages
OSPF - Rsum
Protocole
chaque
noeud value le cot pour rejoindre ses voisins selon une certaine
mtrique (plusieurs mtrique peuvent tre utilises simultanment)
construit
le
calcule
rseau
ensuite,
chaque
Protocoles de routages
OSPF - Conclusion
temps de convergence
Routage Dynamique
Types de routeurs
Routeurs noyaux
relient les rseaux
Routeurs externes
permettent une liaison des
rseaux autonomes entre eux
Protocoles : EGP (Exterior Gateway Protocol)
BGP (Border Gateway protocol)
Routeurs internes
routage l'intrieur d'un rseau autonome
Protocole : IGP (Interior Gateway Protocol)
RIP, OSPF, EIGRP
Rseau autonome
Rseau autonome
Protocoles de routages
EGP Exterior Gateway Protocol
Premier protocole externe utilis dans internet (dsorm remplac par BGP)
IGP
Rseau autonome
Liaison inter AS
IGP
Rseau autonome
Protocoles de routages
BGP Border Gateway Protocol
Stratgie de routage
Besoin
de
AS
conomique
La
Protocoles de routages
BGP Border Gateway Protocol
Principe de routage
Deux routeurs BGP tablissent une connexion TCP pour s'changer des infos
de routage:
numro de l'AS
liste des sous-rseaux de l'AS
distance relative vers chacun des sous-rseaux de l'AS
adresse IP du routeur (interne) d'accs ces rseaux
Protocoles de routages
BGP Border Gateway Protocol
Principe de routage
Organisation
CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux
Couche Transport
Services de la couche
Protocole UDP
Protocole TCP
Modle TCP/IP
Protocoles
Couche
Application
message
Couche
Transport
Couche
Internet
Couche
Rseaux
Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...
donnes
Couche
Transport
donnes
segment
donnes
datagramme
donnes
trame
bits
TCP, UDP
Couche
Internet
Couche
Rseaux
ETHERNET, ATM...
Couche transport
Services et protocoles de la couche
Cre un circuit de communication logique entre des applications
sexcutant sur des htes distants
Les protocoles de la couche transport ne sexcutent quau extrmits
Services transport vs rseau :
Couche rseau : Transfert de donnes entre machines
Couche transport : Transfert de donnes entre applications
Se fonde sur les services de la couche rseau et les amliore
IP
IP
IP
TCP
IP
IP
IP
IP
IP
IP
TCP
IP
ta
da
am
gr
Flux TCP
TCP
IP
IP
TCP
IP
IP
Couche transport
Services de transport
Livraison fiable (TCP)
rception des segments dans lordre
contrle de congestion
contrle de flot
mise en place de connection
Livraison non fiable (UDP)
sans garantie dordre
peut stendre au multicast
Services non disponibles
temps-rel, garantie de dlai
garantie de bande passante
multicast fiable
Couche transport
Multiplexage
Encapsuler les donnes de plusieurs applications
dans un mme segment avec un en-tte qui
permettra le dmultiplexage
Demultiplexage
Distribuer chaque segment
lapplication laquelle il est destin
Multiplexage/demultiplexage
Fond
Couche transport
Couche transport
Le numro de port est un entier de 16 bits [0, 65535]
Le port 0 nest pas exploitable
Distribus par l'IANA Internet Assigned Numbers Authority
Couche transport
Visualisation
des services
Unix : /etc/services
Windows : C:\Winnt\System32\drivers\etc\services
Couche Transport
Services de la couche
Protocole UDP
Protocole TCP
M
Protocole UDP
Protocole simple
o
d
e
a
n
s
Perdus
c
Mode sans connexion
o
Sans handshaking entre lmetteur et le rcepteur
n
n
Chaque segment UDP est trait indpendamment
des autres
e
Sans contrle de congestion
x
UDP peut mettre aussi rapidement quil le souhaite
i
o
n
Protocole UDP
Pourquoi UDP?
simple donc plus rapide (pas de dlai, pas d'tat entre metteur/rcepteur)
Petit en-tte
Sensible au dbit
DNS
SNMP
Segment UDP
4 octets
Port source
Port destination
Longueur
Somme de contrle
Donnes
Couche Transport
Services de la couche
Protocole UDP
Protocole TCP
Protocole TCP
Caractrisriques du protocole
Communication Full-Duplex
Fermeture du canal
Segment TCP
4 octets
Port source
Port destination
NS - Numro de squence
NR - Numro de squence acquitt
Lg h.
Rserv
U
R
G
A
C
K
P
S
H
R
S
T
S F
Y I
N N
Somme de contrle
Taille fentre
Pointeur d'urgence
Segment TCP
4 octets
Port source
Port destination
NS - Numro de squence
NR - Numro de squence acquitt
Lg h.
Rserv
U
R
G
A
C
K
P
S
H
R
S
T
S F
Y I
N N
Somme de contrle
Taille fentre
Pointeur d'urgence
Segment TCP
4 octets
Port source
Port destination
NS - Numro de squence
NR - Numro de squence acquitt
Lg h.
Rserv
U
R
G
A
C
K
P
S
H
R
S
T
S F
Y I
N N
Somme de contrle
Taille fentre
Pointeur d'urgence
Serveur
Segme
nt
temps
Segme
nt
ACK 2
NS = 9
2, 8 oc
t
ACK 1
temps
2
Serveur
Client
data
= 100
1, NR
ACK =
NS = 1
00, 16
oct dat
a
1,
ACK =
16
NR = 1
Notation :
(ACK = x) <=> (ACK = 1 et NR = x)
Emetteur
Rcepteur
NS = 9
2, 8 oc
t
Timeout
data
100
ACK =
perdu
NS = 9
2, 8 oc
t
100
ACK =
data
Emetteur
Rcepteur
NS = 9
2, 8 oc
t
Timeout
Exemple :
AC
data
0
10
=
K
NS = 9
2, 8 oc
t
100
ACK =
data
tablissement de connexion
Schma de connexion
tablissement de connexion
Client
Serveur
SYN=1
,
A CK =
0, ISN
client
ACK
,
1
=
SYN
1,
= x+
ISN
=x
eur
serv
ACK =
y+1, SY
N=0
=y
Temps
Transfert de donnes
A
Envoi de
10 oct
B
NS = 5
6, ACK
A
=203
66
ACK A =
,
3
0
2
NS B=
Envoi de
10 oct
Envoi de
20 oct
NS = 6
6, ACK
A
:
B 223
K A=76
C
A
,
3
2
NS B: 2
Envoi de
2 oct
Fin de connexion
A
Fermeture ngocie
A demande la fin de connexion (FIN=1)
B acquitte la demande de A (ACK)
B envoie ses donnes en attente
FIN (se
q
= x)
)
q = x+1
e
s
(
K
AC
DATA
ACK (D
ATA)
1)
Utilisation du rseau
Fentre glissante
Principe
Tampon du rcepteur
Paqu
Paqu et i
et
Paqu i+1
et
Paqu i+2
et i+
3
(i )
ACK
Paqu
et i+
4
Fentre glissante
Gestion de la fentage Application
crit 2k
Contrle de flux TCP :
l'metteur
ne doit pas en
envoyer de donnes si le
tampon de rception n'a
pas l'espace libre
correspondant
des donnes
urgentes (interruption de
l'application rceptrice)
envoyer des segments de
1 octet pour obliger le
rcepteur envoyer SEQa
et WIN et maintenir l'tat
actif de la connexion
Application
crit 2k
L'metteur
est bloqu
Tampon du
rcepteur
Seq
= 0,
2k
2k
N=
I
W
,
= 2k
K
C
A
Seq
= 20
48,
2k
0
IN =
W
,
= 4k
ACK
= 2k
WIN
Application
crit 1k
4K
Seq
vide
2k
Plein
Application
lit 2k
2K
= 40
96,1
k
1k
2K
Fentre glissante
Gestion de la fentage
Fentre glissante
Timeout
Seq
= X,
500
oct X
Seq
=X
+ 50
0, 2
Seq
00 o
=X
ct
+ 70
0, 1
0 oc
t
Hors seq.
mmoris
X
qA =
e
S
ACK
X
qA =
e
S
ACK
Seq
= X,
500
oct
710
X+
=
Seq A
ACK
Hors seq.
mmoris
oct
Organisation
CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux
Couche Applications
Protocoles dns, telnet, shh, ftp, smtp, pop et http
Modle TCP/IP
Protocoles
Couche
Application
message
Couche
Transport
Couche
Internet
Couche
Rseaux
Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...
donnes
Couche
Transport
donnes
segment
donnes
datagramme
donnes
trame
bits
TCP, UDP
Couche
Internet
Couche
Rseaux
ETHERNET, ATM...
Protocole DNS
Adressage IP
Comment
Comment
Comment
Comment
Solution
Fichier /etc/hosts pour faire la correspondance noms/adresses
# Exemple de fichier /etc/hosts
# This file should contain the addresses and aliases
# for local hosts that share this file.
132.214.1.3 routerquebec
132.212.1.5 routermontreal
Protocole DNS
Fichier /etc/hosts pour faire la correspondance noms/adresses
Problmes
collision des noms
dploiement grande chelle
changements dadresses et mise jour
DNS - Domain Name System (rsolution de noms de domaines)
Protocole DNS
Le DNS est constitu de
Espace de noms de domaines
base de donnes qui associe de manire structure des noms des @IP
Serveurs de noms
Resolvers
Protocole DNS
Espace de noms
Protocole DNS
Serveurs de noms
La hirarchie du DNS est partage en zone
Linformation contenue dans une zone est implante dans au moins deux
serveurs de nom
Serveur racine
serveur
Protocole DNS
Rsolution de noms de domaine
Resolver : un ensemble de fonctions qui font l'interface entre les applications et les
serveurs de noms.
Stratgie de fonctionnement
Interrogation locale
1.Le processus demande l'@ IP dune machine. Le resolver envoie la demande au
serveur local
2.Le serveur local reoit la demande et rpond directement au resolver
Protocole DNS
Rsolution de noms de domaine
Interrogation distante
1. Le processus demande ladresse IP dune
machine. Le resolver envoie sa
requte au serveur local.
2. Le serveur local reoit la requte, il
interroge le serveur racine pour avoir
ladresse dun serveur qui a l'autorit sur
la zone demande par le processus.
3.
4.
5.
6.
Le
Le
Le
Le
serveur
serveur
serveur
serveur
Protocole Telnet
Connexion TCP
Commande telnet
telnet <nom ou adresse IP du serveur> <numro de port>
Exemple : mulation dun navigateur web :
telnet liris.univ-lyon2.fr 80
Protocole SSH
Port 22
Commande :
ssh -l <login> <nom ou adresse IP du serveur>
Connexion au serveur : ssh -l ksehaba liris.cnrs.fr
Protocole FTP
Port 21
Notations :
Processus ct client :
Processus ct serveur :
USER-PI, USER-DTP
SERVER-PI , SERVER-DTP
Protocole FTP
DTP
PI
SERVER-PI
:
charg d'couter les commandes provenant d'un USER-PI
d'tablir la connexion pour le canal de contrle
de recevoir sur celui-ci les commandes FTP de l'USER-PI
de rpondre et de piloter le SERVER-DTP
Le
USER-PI
charg d'tablir la connexion avec le serveur FTP
d'envoyer les commandes FTP
de recevoir les rponses du SERVER-PI
de contrler le USER-DTP si besoin
Protocole FTP
Types de commandes FTP :
Commandes de contrle d'accs
USER, PASS, CWD QUIT
Rponses FTP
Protocole SMTP
SMTP
Service
Port
25
Commandes SMTP
EHLO <machine> :
MAIL FROM: <exp> :
RCPT TO: <dest> :
DATA <message> :
QUIT :
prsentation du client
spcifie ladresse de lexpditeur
spcifie ladresse du destinataire
donnes envoyer (termines par .)
termine la session SMTP
Protocole SMTP
Champs den-tte
To: [email protected]
Cc: [email protected]
Bcc: [email protected]
From: [email protected]
Reply-to: [email protected]
User-Agent: Mozilla/5.0
Return-Path:
Date:
Subject:
Protocole POP
permet de rcuprer les courriers sur un serveur distant (le serveur POP)
Commandes POP2
HELLO :
FOLDER :
READ :
RETRIEVE:
SAVE :
DELETE :
QUIT :
Commandes POP3
USER :
PASS :
STAT :
RETR :
DELE :
LIST :
QUIT :
Protocole HTTP
Port 80
Protocole HTTP
Requte
En-tte HTTP
Dcode
Rponse HTTP
Client
Serveur HTTP
Protocole HTTP
Requte HTTP
1. Ligne de requte
Mthodes
GET :
HEAD:
POST :
DELETE:
Version du protocole :
Forme HTTP-Numro de version. Par exemple HTTP/1.1
Protocole HTTP
Requte HTTP
2. Champs d'en-tte (facultatif)
Informations supplmentaire sur la requte et/ou le navigateur
Syntaxe Type en-entte : valeur en-tte
Exemple d'en-tte
User-Agent :
3. Corps
Lignes optionnelles spares des lignes prcdentes par une ligne vide
Protocole HTTP
Requte HTTP
Exemples:
Ligne de requte
Champs d'en-tte
Protocole HTTP
Rponse HTTP
1. Ligne de statut
Code
de statut :
valeur numrique (xxx) qui dcrit le statut de la rponse
1xx:
2xx:
3xx:
4xx:
5xx:
Signification
du code
2. En-tte
Informations supplmentaires sur la rponse et/ou le serveur
3. Corps
Le document demand
Protocole HTTP
Rponse HTTP
Exemple :
$ telnet localhost 80
GET / HTTP/1.0
\n
\n
Organisation
CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux
Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java
Serveur
programme offrant un service sur un rseau (par extension,
machine offrant un service)
Client
programme qui met des requtes (ou demandes de service). Il
est toujours linitiateur du dialogue
Exemple de client/serveur
Un
serveur de fichiers
Des
Comment
un
grer la concurrence ?
plusieurs
Quel
protocole utiliser ?
le
le
comment
connect (TCP) :
problmes
primitives
gestion
pas
Mode
de la connexion coteuse,
consomme
permet
gestion
la diffusion,
Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java
Les sockets
Interface
daccs au rseau
dvelopp
n
Client
n port :2345
@ IP : 193.168.20.1
@ IP : 193.168.20.1
@ Ethernet
Serveur
Couche Transport (TCP, UDP)
n port :80
@ IP : 193.168.20.2
@ IP : 193.168.20.2
@ Ethernet
L'API socket
Cration
Ouverture
client
de dialogue :
: connect(...)
serveur
Transfert
mode
de donnes :
connect : read(...), write(...), send(...), recv(...)
mode
Clture
du dialogue :
close(...),
shutdown(...)
Client/Serveur
en mode non connect
Client
socket()
bind()
sendto()
Serveur
Cration de la socket
Assignation nport - @ IP
envoi requte
socket()
bind()
recvfrom()
bloqu jusqu' la rception de la requte
recvfrom()
bloqu jusqu' la rception de la rponse
traitement de la requte
envoi rponse
sendto()
traitement de la rponse
close()
Fermeture de la socket
close()
Client/Serveur
en mode connect
Serveur
Client
socket()
socket()
Cration de la socket
bind()
listen()
accept()
connect()
write()
tablissement de la connexion
envoi requte
read()
bloqu jusqu' la rception de la requte
read()
bloqu jusqu' la rception de la rponse
traitement de la requte
envoi rponse
write()
traitement de la rponse
close()
Fermeture de la socket
close()
La primitive socket()
int socket(int family, int type, int protocol)
family
AF_INET
AF_UNIX
type
ou mode de fonctionnement :
SOCK_STREAM
SOCK_DGRAM
SOCK_RAW
protocol
IPPROTO_UDP
IPPROTO_TCP
IPPROTO_ICMP
IPPROTO_RAW
La primitive connect()
int connect(int sock_desc, struct sockaddr * @_serveur, int lg_@)
sock_desc : descripteur de socket retourn par socket()
@_serveur : adresse IP et n de port du serveur distant
Exemple de client :
int sd;
struct sockaddr_in serveur; // @IP, n port, mode
struct hostent
remote_host; // nom et @IP
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
serveur.sin_family = AF_INET;
serveur.sin_port = htons(13);
remote_host = gethostbyname(brassens.upmf-grenoble.fr);
bcopy(remote_host->h_addr, (char *)&serveur.sin_addr,
remote_host->hlength); // Recopie de ladresse
connect(sd, (struct sockaddr *)&serveur, sizeof(serveur));
La primitive bind()
int bind(int sock_desc, struct sockaddr *my_@, int lg_@)
sock_desc : descripteur de socket retourn par socket()
my_@ : adresse IP et n de port auxquels le serveur veut rpondre
Exemple de serveur :
int sd;
struct sockaddr_in serveur; // @IP, n port, mode
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
serveur.sin_family = AF_INET;
serveur.sin_port = 0; // Laisse le systme choisir un port
serveur.sin_addr.s_addr = INADDR_ANY;
// Autorise des connexions de nimporte o
bind(sd, (struct sockaddr *)&serveur, sizeof(serveur));
La primitive listen()
int listen(int sock_desc, int backlog)
sock_desc : descripteur de socket retourn par socket()
backlog : nombre maximum de connexions en attente dtre acceptes
Exemple de serveur :
int sd;
struct sockaddr_in serveur; // @IP, n port, mode
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
serveur.sin_family = AF_INET;
serveur.sin_port = 0; // Laisse le systme choisir un port
serveur.sin_addr.s_addr = INADDR_ANY;
// Autorise des connexions de nimporte o
bind(sd, (struct sockaddr *)&serveur, sizeof(serveur));
listen(sd, 5);
La primitive accept()
int accept(int sock_desc, struct sockaddr *client, int lg_@)
sock_desc : descripteur de socket retourn par socket()
client : identit du client demandant la connexion
accept renvoie le descripteur de la nouvelle socket cre
Serveur
Client
sc = socket()
ss =socket()
Cration de la socket
bind(ss)
listen(ss)
sa = accept(ss)
connect(sc)
write(sc)
tablissement de la connexion
envoi requte
read(sa)
bloqu jusqu' la rception de la requte
read(sc)
bloqu jusqu' la rception de la rponse
traitement de la requte
envoi rponse
write(sa)
traitement de la rponse
close(sc)
Fermeture de la socket
close(sa)
Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java
C a n a u x b id ir e c t io n n e ls
C o m m u n ic a t io n
e n tr e
deu x
a p p l ic a t io n s
d i s t a n t e s p a r d e s c a n a u x d e b id ir e c t io n n e l s
(s o c k e ts ).
d e u x ty p e s d e s o c k e ts e n J a v a :
S t r e a m s o c k e t s ( T C P ) : c o m m u n ic a t io n e n m o d e
c o n n e c t , c a r a c t r is e s p a r le c a r a c t r e c o n t in u d u
f lu x d e d o n n e s ( o r d r e c o r r e c t - d o n n e s n o n
c o rro m p u e s ).
D a t a g r a m s o c k e t s ( U D P ) : c o m m u n ic a t io n e n m o d e
n o n - c o n n e c t : p lu s g r a n d e r a p id it , m a is f ia b ilit
m o in d r e ( p e r t e , d u p lic a t io n o u d s o r d r e p o s s ib le s ) .
C la s s e s d e ja v a .n e t
C o n t e n t H a n d le r
D a ta g ra m P a c k e t
D a ta g ra m S o c k e t
In e tA d d re s s
S e rv e rS o c k e t
S ocket
S o c k e tIm p l
U R L
U R L C o n n e c t io n
U R LE ncoder
U R L S tr e a m H a n d le r
: b a s e p o u r g r e r c o n t e n u s M IM E
U D P
: g e s tio n d e s a d re s s e s
TC P
U R L
In e tA d r e s s
public final class InetAddress {
public String getHostName()
public byte[] getAddress()
public String getHostAddress()
public int hashCode()
public boolean equals(Object obj)
public String toString()
public static synchronized InetAddress
getByName(String host) throws UnknownHostException
public static synchronized InetAddress
getAllByName(String host)[] throwsUnknownHostException
public static InetAddress
getLocalHost() throws UnknownHostException
}
S e rv e rS o c k e t
public final class ServerSocket {
public ServerSocket(int port)
throws IOException
public ServerSocket(int port, int backlog)
throws IOException
public InetAddress getInetAddress()
public int getLocalPort()
public Socket accept()
throws IOException
public void close()
throws IOException
public String toString()
public static synchronized void
setSocketFactory(SocketImplFactory fac)
throws IOException
}
S ocket
public final class Soc ket {
public Sock et(String host, int port)
throws UnknownHostException , IOException
public Sock et(String host, int port, boolean stream )
throws IOException
public Sock et(InetAddress address , int port)
throws IOException
public Sock et(InetAddress address , int port, boolean stream )
throws IOException
public InetAddress getInetAddress()
public int getPort()
public int getLocalPort()
public InputStream getInputStream() throws IOException
public Outp utStr eam getOutputStream () throws IOException
public synchronized void close() thr ows IOException
public String toString()
public static synchronized void
setSocketImplFactory(SocketImplFactory fac)
throws IOException
}
Serveur
2- Echange
OutputStream
InputStream
3- Echange
InputStream
OutputStream
3- Fermeture (close())
4- Fermeture (close())
E x e m p le d e c o d e : S e r v e u r ( 2 )
public static void main (String args [])
throws IOException {
Serveur s = new Serveur (Integer.parseInt (args[0]));
s.go ();
}
}
Bilan
Modles en couches
Notion de protocole
Modle de rfrence : OSI de ISO
Modle utilis sur Internet : TCP/IP
Couche Transport
Services de la couche
Protocole UDP
Protocole TCP
Couche Applications
Protocoles dns, telnet, shh, ftp, smtp, pop et http
Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java