Reseaux
Reseaux
Reseaux
Est une structure informatique qui forme en cybersécurité, en programmation et en réseau informatique
Web : ccctechnologie.wuaze.com
Cours de Réseaux
Karim Sehaba
Maître de conférences
karim.sehaba@univ-lyon2.fr
http://liris.cnrs.fr/~ksehaba
Organisation
Supports de CM et TD ici : http://liris.cnrs.fr/ksehaba/Reseaux
CM
Plan
5 séances d’1h45 Modèles en couches : OSI & TCP/IP
TD
Plan
7 séances d’1h45 Modèles en couches (OSI et TCP)
Livres :
Réseaux de Andrew Tanenbaum
Les Réseaux (edition2005) de Guy Pujolle
TCP/IP : Architecture protocoles et applications de Douglas
Comer
TCP/IP pour les nuls de Candance Leiden et Marshall Wilensky
Net :
http://www.commentcamarche.net/
Certains transparents sont de Olivier Glück (Lyon1)
Introduction
Qu'est-ce qu'un réseau ?
Un ensemble d'entités (objets, personnes, machines, etc.) interconnectées les unes
avec les autres
Exemples :
réseau de transport
réseau téléphonique
réseau de neurones
…
Réseaux informatique
Un ensemble d'ordinateurs reliés entre eux grâce à des lignes physiques et
échangeant des informations sous forme de données numériques
En étoile
Tous les ordinateurs sont reliés à un concentrateur (hub)
En anneau
Les ordinateurs sont situés sur une boucle
Câblage en maille
Chaque machine est reliée à toutes les autres par un câble
LAN
WAN
LAN
LAN
Introduction
Les techniques de transfert
La commutation de circuits
Circuit entre les deux entités qui communiquent
Le circuit reste ouvert jusqu’au moment où l’un des deux participants interrompt la
communication
Le transfert de paquets
Routage
Le paquet qui arrive doit posséder l’adresse complète du destinataire
Le routeur consulte sa table de routage pour choisir la meilleure ligne de sortie
Commutation
Les commutateurs acheminent les paquets vers le récepteur en utilisant des références, de
circuit
Les tables de commutation sont des tableaux, qui, à une référence, font correspondre une
ligne de sortie
Seules les communications actives entre utilisateurs comportent une entrée dans la table de
commutation.
Modèles en couches
Notion de protocole
Modèle de référence : OSI de ISO
Modèle utilisé sur Internet : TCP/IP
Problématiques des réseaux
A B
0 0 1 1 0 1 1 0 0 0
-numérique-
0 0 1 1 0
-analogique-
Protocole
Un ensemble de convention préétablies pour réaliser un échange de
données entre deux entités
En particulier :
format des données et les règles d’échange
délimitation des blocs de données échangés
organisation et contrôle de l’échange
contrôle de la liaison
Communication en réseau :
protocoles organisés en plusieurs couches
Modèle de référence OSI
Open Systems Interconnection (Interconnexion des Systèmes Ouverts)
Définit par “International Standard Organisation”
organisation non gouvernementale
centaine de pays membres
édite des normes dans tous les domaines
Idée fondamentale :
Modèle en couches
Couche Couche
H données TCP, UDP
Transport segment
Transport
IP IP IP
IP IP IP
IP
IP IP
IP e
m IP
m
g ra
IP ta IP IP
da
Modèle TCP/IP
Les couches TCP/IP
Transport : communication entre applications
Protocole de transport de bout en bout
Présent uniquement en extrémités
Transport fiable de segments (en mode connecté)
Protocole complexe (transmission, gestion des erreurs, séquencement…)
IP IP IP
TCP
IP IP IP
IP
TCP
IP IP IP
e
TCP m IP TCP
am
IP gr IP IP
ta
da
Application
services de gestion (transfert) de fichier et d'impression
services de connexion au réseau
services de connexion à distance
utilitaires Internet divers
Modèle TCP/IP
Efficacité du transfert :
Efficacité du transfert = données utiles / données totales
Encapsulation
Serveur
FTP
en-tête
applicatif données
message
TCP
en-tête en-tête
TCP applicatif données
segment
IP
en-tête en-tête en-tête
IP TCP applicatif données
datagramme Pilote
ETHERNET
en-tête en-tête en-tête en-tête en-queue
ethernet IP TCP applicatif données ethernet
trame
Modèle TCP/IP
Efficacité du transfert :
A B
en-tête
FTP FTP données FTP
message
en-tête en-tête
TCP TCP FTP données TCP
segment
en-tête en-tête en-tête
IP IP TCP FTP données IP
datagramme
Pilote en-tête en-tête en-tête en-tête en-queue Pilote
ETHERNET ethernet IP TCP FTP données ethernet ETHERNET
trame
A veut envoyer 1024 octets de données à B en utilisant le protocole FTP. On suppose que :
- l'entête FTP a une taille de 70 octet
- l'entête TCP a une taille fixe de 20 octets
- l'entête IP a une taille fixe de 20 octets
- l'entête 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 ?
Délimitation des données
Notion de fanion
Notion de transparence
Notion de fanion
Lors d'une transmission de données, il faut pouvoir reprérer le début
et la fin de la séquence des données transmises
Fanion en transmission synchrone
Un caractère spécial
Une séquence de bits particuliers
Fonctions du fanion
délimite les données
maintien de la synchronisation de l'horloge de réception
Les caractères « spéciaux » doivent pouvoir être transmis en tant que données et
donc délivrés en tant que tel
mécanisme de transparence
définition d'un autre caractère spéciale ; le caractère d'échappement
Fonctionnement
côté émission : Insertion du caractère d'échappement devant le caractère à
protéger
côté réception : L'automate examine chaque caractère pour découvrir le fanion
de fin ; s'il rencontre le caractère d'échappement, il l'élimine et n'interprète pas
le caractère suivant -> il le délivre au système
La technique du bit de bourrage
Seul le fanion (01111110) peut contenir plus de 5 bits consécutifs à “1”
Côté réception : si 5 bits consécutifs sont à “1”, l’automate regarde le bit suivant :
Exemple
Couche Couche
H données TCP, UDP
Transport segment
Transport
Protocoles de la couche
IP - Internet Protocol
ARP - Address Resolution Protocol -
ICMP - Internet Control and error Message Protocol -
...
Adresse IP
Permet d'identifier les machines sur le réseau
Distribuées par ICANN -Internet Corporation for Assigned Names and Numbers
NET_ID HOST_ID
Adresse IP
Classes réseaux
4 octets
Adresse 0.0.0.0
– Utilisée par le protocole RARP
– Adresse de la route par défaut dans les routeurs
Sous-réseaux
Comment diviser un réseau IP en plusieurs sous-réseaux ?
NET_ID HOST_ID
ET Logique ET Logique
Netmask Netmask
1…….1 1………….1 0………0 1…….1 1………….1 0………0
?
NET_1 SUBNET_1 0………0 = NET_2 SUBNET_2 0………0
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
Couche Internet (1)
Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6
Format d'un datagramme IP
4 octets
données
données
Déplacement (13 bits) : Position du fragment par rapport au paquet de départ, en nombre de mots de 8 octets
Durée de vie (TTL) 8 bits: pour que le paquet peut rester dans le réseau
Protocole (8 bits) : type du protocole de niveau supérieur
1 -> ICMP Checksum d'en-tête (16 bits) : code de contrôle d’erreur pour l’entête
17 -> UDP
6 -> TCP Adresse source (32 bits) : IP de la machine source
Adresse destination (32 bits) : IP de la machine destination
Format d'un datagramme IP
4 octets
données
Fonctionnement
H 1400 octets
Version LET Type service Longueur totale = 796 Version LET Type service Longueur totale = 644
ID = 77 01 Déplacement = 0 ID = 77 00 Déplacement = 97
Durée de vie Protocole Somme de contrôle en-tête Durée de vie Protocole Somme de contrôle en-tête
Adresse source Adresse source
Adresse destination Adresse destination
Version LET Type service Longueur totale = 796 Version LET Type service Longueur totale = 644
ID = 77 01 Déplacement = 0 ID = 77 00 Déplacement = 97
Durée de vie Protocole Somme de contrôle en-tête Durée de vie Protocole Somme de contrôle en-tête
Adresse source Adresse source
Adresse destination Adresse destination
Données (776 oct) Données (624 oct)
Couche Internet (1)
Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6
Protocole ARP
ARP (Address Resolution Protocol) – Protocol de résolution d'adresse
@MAC (adresse physique): 48 bits
fixée par le fabriquant
exemple :
@IP (adresse logique): 32 bits
fixée par l’administrateur réseau ou ICANN
exemple :
Rôle du protocole ARP
Faire la correspondance entre une @IP et une @MAC.
Les applications ne manipulent que des @IP (pourquoi pas des @MAC?)
Le système doit retrouver l'@ MAC correspondante.
Les systèmes construisent une table de correspondance (cache ARP).
Protocole ARP
A B C D
Table de
correspondance
@IP C @MAC C
-Cache ARP-
Principe du protocole
A consulte sa table de correspondance IP->MAC
A émet une requête ARP (contenant l'@IP de C) en broadcast
B, C et D comparent cette adresse logique à la leur
C répond en envoyant son adresse MAC
A met à jour son cache ARP
A envoie le message
Protocole ICMP
ICMP - Internet Control and error Message Protocol
Encapsulé dans un datagramme IP (champ protocole = 1)
Sert à contrôler le bon déroulement du protocole IP
Utilisé par l’utilitaire ping, traceroute…
Utilitaire ping
Teste l’accessibilité d’une destination de bout en bout
Évaluation de performances (mesure de temps aller-retour)
La réponse doit parvenir avant 20 secondes
Exemple
Ping 127.0.0.1 : tester la pile TCP/IP locale
Ping mon@IP : vérifier la configuration réseau local
Ping @default-routeur : tester la configuration du sous-réseau et la passerelle
Ping @dest : tester un chemin de bout en bout
Protocole ICMP
Utilitaire Traceroute/Tracert
Permet de trouver pas à pas le chemin pour atteindre une destination
Envoie d’un paquet IP avec TTL = 1
Attend ICMP délai expiré
Envoi d’un paquet IP avec TLL = 2
...
R1 R2
src dest
TTL=1
TTL=2
Couche Internet (1)
Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6
Protocole IPv6
Pourquoi IPv6
La fin d'IPv4 est proche
Pénurie d'adresses IP et explosion des tables de routage
Besoin d'un nouveau protocole mais suppose de le déployer sur tous les
noeuds de l'Internet actuel !
L'IETF, en 1990, élabore les souhaits d'un nouveau protocole et fit un appel à
propositions
1993 : IPv6 est née de propositions combinées (Deering et Francis)
Objectifs du protocole
Supporter des milliards d'hôtes
Réduire la taille des tables de routage
Simplifier encore le protocole pour un routage plus rapide des paquets
Offrir une meilleure sécurité
Permettre au nouveau protocole et à l'ancien de coexister pendant quelques
années
Protocole IPv6
Caractéristiques
IPv6 est compatible avec IPv4, TCP, UDP, ICMP, DNS... (ou quelques modifications
mineures
Supporte un format d'adresses plus longues (16 octets au lieu de 4)
Simplification de l'entête (7 champs au lieu de 13 et une taille fixe des “options”
pour accélérer le traitement dans les routeurs)
Protocole IPv6
Protocole IPv6
Protocole IPv6
Exemples d'options
Routing Header
Liste de routeurs à traverser obligatoirement
Fragmentation Header
Pour permettre au destinataire de réassembler les fragments (reprend les
champs de IPv4)
Destination Options Header
Informations additionnelles pour la destination
L'adressage
Adressage hiérarchique pour alléger les tables de routage
Un préfixe de localisation – public – 48 bits
Un champ de topologie locale (subnet) – 16 bits
Un identifiant de désignation de l'interface (basé sur l'@MAC) sur 64 bits (équivalent
HOST_ID qui garantie l'unicité de l'adresse
Organisation
CM
Plan
Modèles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Réseaux
Couche Internet (2)
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)
Routage
Quel chemin empruntent les datagrammes pour arriver à destination ?
Routage : mécanisme par lequel les données d'un équipement expéditeur
sont acheminées jusqu'à leur destinataire
Routeur
dispositif permettant de choisir le chemin que les datagrammes vont
emprunter
possède plusieurs cartes réseau dont chacune est reliée à un
réseau différent
utilise la table de routage qui définit le chemin à emprunter pour une
adresse donnée
Routage
Table de routage
Définit la correspondance entre l'adresse de la machine visée et le noeud
suivant auquel le routeur doit délivrer le message
192.168.2.3 192.168.3.4
B D
Table de routage de A
Destination Netmask Gateway Interface Cost
192.168.1.0 255.255.255.0 - 192.168.1.3 0
192.168.2.0 255.255.255.0 192.168.1.1 192.168.1.3 1
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.3 0
Routage
Exemple
192.168.1.3 192.168.3.3
192.168.1. 192.168.2. 192.168.3.
.1 .2 .1 .2
A R1 R2 C
192.168.2.3 192.168.3.4
B D
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 1
192.168.3.0 255.255.255.0 192.168.2.1 192.168.2.3 1
192.168.2.0 255.255.255.0 - 192.168.2.3 0
Quelle doit être la table de routage de C pour qu'il puisse
communiquer avec les autres réseaux ?
Routage
Exemple
192.168.1.3 192.168.3.3
192.168.1. 192.168.2. 192.168.3.
.1 .2 .1 .2
A R1 R2 C
192.168.2.3 192.168.3.4
B D
Table de routage de R1
Destination Netmask Gateway Interface Cost
192.168.1.0 255.255.255.0 - 192.168.1.1 0
192.168.2.0 255.255.255.0 - 192.168.2.2 0
192.168.3.0 255.255.255.0 192.168.2.1 192.168.2.2 1
Routage
Exemple
192.168.1.3 192.168.3.3
192.168.1. 192.168.2. 192.168.3.
.1 .2 .1 .2
A R1 R2 C
192.168.2.3 192.168.3.4
B D
Table de routage de R2
Destination Netmask Gateway Interface Cost
192.168.2.0 255.255.255.0 - 192.168.2.1 0
192.168.3.0 255.255.255.0 - 192.168.3.2 0
192.168.2.3 192.168.3.4
B D
Table de routage de R2
Destination Netmask Gateway Interface Cost
192.168.2.0 255.255.255.0 - 192.168.2.1 0
192.168.3.0 255.255.255.0 - 192.168.3.2 0
192.168.1.0 255.255.255.0 192.168.2.2 192.168.2.1 1
Routage
Mise à jour de la table de routage
Manuelle « routage statique »
table de routage entrée manuellement par l'administrateur
commande « route » des stations unix
langage de commande des routeurs (ip route...)
Automatique « dynamique »
table de routage mis à jour dynamiquement par le routeur
processus sur les stations et les routeurs
échanges d'informations de routage : protocoles de routage
➢Routage basé sur un vecteur de distance
➢Routage basé sur l'état des liens
Couche Internet (2)
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)
Routage statique
Syntaxe :
route add | del [net | host] destination | netmask | gw | metric
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
192.168.2.3 192.168.3.4
B D
192.168.2.3 192.168.3.4
B D
192.168.2.3 192.168.3.4
B D
192.168.2.3 192.168.3.4
B D
192.168.2.3 192.168.3.4
B D
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)
Routage Dynamique
Mise à jour de la table de routage
Manuelle « routage statique »
table de routage entrée manuellement par l'administrateur
commande « route » des stations unix
langage de commande des routeurs (ip route...)
Automatique « dynamique »
table de routage mis à jour dynamiquement par le routeur
processus sur les stations et les routeurs
échanges d'informations de routage : protocoles de routage
➢Routage basé sur un vecteur de distance
➢Routage basé sur l'état des liens
Routage Dynamique
Deux algorithmes clefs
Vecteur de distance – Bellman-Ford
Chaque noeud stocke un "vecteur" pour toutes destinations
Routeurs noyaux
relient les réseaux
Routeurs externes
permettent une liaison des
réseaux autonomes entre eux
Protocoles : EGP (Exterior Gateway Protocol)
BGP (Border Gateway protocol)
Routeurs internes
routage à l'intérieur d'un réseau autonome
Protocole : IGP (Interior Gateway Protocol)
RIP, OSPF, EIGRP Réseau autonome Réseau autonome
Protocoles de routages
RIP - Routing information protocol
Protocole de type Vecteur de Distance
Chaque 30 seconde le routeur diffuse à ses voisins ses vecteurs de
distance
vecteur de distance : (destination, nombre de sauts)
nombre de sauts maximum = 16 (pour éviter les boucles)
utilisable uniquement à l'intérieur de domaines peu étendus
Si aucun message pendant 180s, route inaccessible
un noeud construit sa table de routage en fonction des vecteurs de
distance reçus de ses voisins
Protocoles de routages
RIP - Routing information protocol
Avantages
très utilisé et très répondu sur tous les équipements
s'adapte automatiquement (panne, ajout de réseau...)
Inconvénients
la distance ne tient pas compte de l'état de la liaison (la charge,
débit, coût des lignes...)
distance maximale = 15 (ne peut pas aller plus que 15 routeurs)
trafic important (toutes les 30s un message)
pas d'authentification des messages (attaques de routeurs en
générant des faux messages RIP)
Route de R1 à A ?
RIP : R1 -> R5 -> R4 -> A
Arc Coût
R1, R2 1
R1, R5 10
R2, R3 1
Base de données topologique R3, R4 10
R3, R5 1
R4, R5 10
R4, 192.168.1.0 10
Protocoles de routages
OSPF - Open Shortest Path First
Élection des meilleures routes
- Algorithme de Dijkstra -
Extrait de la table de R1
Réseau de destination Moyen de l'atteindre Coût
192.168.1.0 R2 22
Routeurs noyaux
relient les réseaux
Routeurs externes
permettent une liaison des
réseaux autonomes entre eux
Protocoles : EGP (Exterior Gateway Protocol)
BGP (Border Gateway protocol)
Routeurs internes
routage à l'intérieur d'un réseau autonome
Protocole : IGP (Interior Gateway Protocol)
RIP, OSPF, EIGRP Réseau autonome Réseau autonome
Protocoles de routages
EGP – Exterior Gateway Protocol
Premier protocole externe utilisé dans internet (désormé remplacé par BGP)
Echange entre routeurs déclarés comme «pairs »
deux routeurs de bordure s'échangent à l'intervalles réguliers la liste
des réseaux accessible dans leurs AS respectives
tout le trafic entre 2 AS passe par le même chemin physique
EGP
IGP IGP
Liaison inter AS
Couche Couche
H données TCP, UDP
Transport segment
Transport
IP IP IP
TCP
IP IP IP
IP
TCP
IP IP
IP
TCP m
e IP TCP
am
IP gr IP IP
ta
da
Flux TCP
Couche transport
Services de transport
Livraison fiable (TCP)
réception des segments dans l’ordre
contrôle de congestion
contrôle de flot
mise en place de connection
Multiplexage/demultiplexage
Fondé sur le port de réception, le port d’émission et les adresses IP
Les ports source et destination sont répétés dans chaque segment
Certaines applications utilisent des ports spécifiques
Couche transport
Couche transport
Le numéro de port est un entier de 16 bits [0, 65535]
Le port 0 n’est pas exploitable
Distribués par l'IANA “Internet Assigned Numbers Authority”
Données
Caractérisriques du protocole
Arrivée garantie des données
Récupération des erreurs par réémission
Re-assemblage des données dans le bon ordre
Vérification du flot de données afin d'éviter une saturation du réseau
Multiplexage/démultiplexage des données
Initialisation et fin d'une communication
Communication en mode connecté
✔ Ouverture d’un canal
✔ Communication Full-Duplex
✔ Fermeture du canal
Segment TCP
4 octets
Données
Données
Données
Taille fenêtre (2 oct) : nb d'octets que le récepteur peut recevoir sans acquittement
Somme de contrôle (2 oct) : permet de vérifier l'intégrité de l'en-tête
Pointeur d'urgence (2 oct): numéro d'ordre à partir duquel l'information devient urgente
Options (Taille variable): diverses options
Bourage (Taille variable) : bits à zéro pour avoir une longueur en-tête multiple de 32 bits
Fiabilité des transferts
Segme NS = 9
nt 2, 8 oc
1 t data
ACK 1 1, NR = 100
temps temps ACK =
Segme NS = 1
nt 2 00, 16
oct dat
a
ACK 2 1, NR = 1
16
ACK =
Notation :
(ACK = x) <=> (ACK = 1 et NR = x)
Fiabilité des transferts
Les pertes de segment sont détectées par absence d'ack positif à expiration
d'un temporisateur sur l'emetteur
NS = 9
2, 8 oc
t data
100
ACK =
Timeout
X
perdu
NS = 9
2, 8 oc
t data
100
ACK =
Fiabilité des transferts
Les pertes de segment sont détectées par absence d'ack positif à expiration
d'un temporisateur sur l'emetteur
NS = 9
2, 8 oc
t data
Timeout
0
= 10
K
AC
NS = 9
2, 8 oc
t data
100
ACK =
Établissement de connexion
Schéma de connexion
Ports TCP doivent être ouverts
Application sur le serveur à l'écoute (en attente d'une connexion)
Application sur le client fait une requête de connexion
Client Serveur
SYN=1
, A CK =
0, ISN
client =x
=y
eur
1, ISN serv
= x+
1, ACK
=
SYN
Temps
ACK =
y+1, SY
N=0
Transfert de données
A B
Envoi de NS = 5
10 oct A 6, ACK
B
=203
Envoi de
66 20 oct
20 3, ACK A =
NS B=
Envoi de
10 oct
NS = 6
A 6, ACK
:
B 223
Envoi de
2 oct
3, A CK A=76
2
NS B: 2
Fin de connexion
A B
Fermeture négociée
FIN (se
q = x)
A demande la fin de connexion (FIN=1)
)
seq = x+1
B acquitte la demande de A (ACK) AC K (
DATA
B envoie ses données en attente
A acquitte les données (ACK)
ACK (D
ATA)
B accepte de la fin de connexion (FIN)
A acquitte de la fin de connexion (ACK)
q = y)
FIN (se
ACK (s
eq = y
+ 1)
Utilisation du réseau
Gaspillage de bande passante !
Envoi de données
Attente
Envoi d’acknowledge
Attente
…
On peut faire mieux !
fenêtrage
Fenêtre glissante
Principe
prendre de l’avance sur les réponses --> fenêtre glissante
fixer un nombre de séquence au bout duquel un accusé de réception est nécessaire
Tampon de l'émetteur
Tampon du récepteur
Paqu
Paqu et i
et
Paqu i+1
et
Paqu i+2
et i+
3
(i )
ACK
Paqu
et i+
4
Seq
= X,
500
Seq oct X
=X
Exemple : expiration du timeout Seq
=X
+ 50
0, 2
00 o
ct
+ 70 Hors seq.
0, 1
Timeout
0 oc mémorisé
t
X Hors seq.
Se qA = mémorisé
ACK
X
Se qA =
ACK
Seq
= X,
500
oct
oct
710
= X+
Seq A
ACK
Organisation
CM
Plan
Modèles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Réseaux
Couche Applications
Couche Couche
H données TCP, UDP
Transport segment
Transport
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
Problèmes
collision des noms
déploiement à grande échelle
changements d’adresses et mise à jour
Nom de domaine
chaque noeud de l'arbre, ex : univ-lyon2, liris...
Domaine
ensemble des étiquettes de noeuds d'une arborescence à l'exception de l'hôte
Hôte
extrémité d'une branche, correspond à une machine ou une entité du réseau
Zone
ensemble de domaine (concerne un sous arbre du DNS)
Protocole DNS
Serveurs de noms
La hiérarchie du DNS est partagée en zone
L’information contenue dans une zone est implantée dans au moins deux
serveurs de nom
Serveur racine
serveur ayant autorité sur la racine de l’espace de nommage (TLD)
Actuellement il y a 13 serveurs de ce type
Protocole DNS
Résolution de noms de domaine
Resolver : un ensemble de fonctions qui font l'interface entre les applications et les
serveurs de noms.
Stratégie de fonctionnement
Interrogation locale
1.Le processus demande l'@ IP d’une machine. Le “ resolver ” envoie la demande au
serveur local
2.Le serveur local reçoit la demande et répond directement au “ resolver ”
Protocole DNS
Résolution de noms de domaine
Interrogation distante
1. Le processus demande l’adresse IP d’une
machine. Le “ resolver ” envoie sa
requête au serveur local.
2. Le serveur local reçoit la requête, il
interroge le serveur racine pour avoir
l’adresse d’un serveur qui a l'autorité sur
la zone demandée par le processus.
Commande telnet
telnet <nom ou adresse IP du serveur> <numéro de port>
Exemple : émulation d’un navigateur web :
telnet liris.univ-lyon2.fr 80
Protocole SSH
SERVER-PI :
chargé d'écouter les commandes provenant d'un USER-PI
d'établir la connexion pour le canal de contrôle
de recevoir sur celui-ci les commandes FTP de l'USER-PI
de répondre 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 réponses du SERVER-PI
de contrôler le USER-DTP si besoin
Protocole FTP
Types de commandes FTP :
Commandes de contrôle d'accès
USER, PASS, CWD… QUIT
Commandes du paramétrage de transfert
PORT, TYPE, PASV…
Commandes de service FTP
DELE, RMD, MKD, PWD...
Commandes SMTP
EHLO <machine> : présentation du client
MAIL FROM: <exp> : spécifie l’adresse de l’expéditeur
RCPT TO: <dest> : spécifie l’adresse du destinataire
DATA <message> : données à envoyer (terminées par .)
QUIT : termine la session SMTP
Protocole SMTP
Champs d’en-tête
– To: toto@wanadoo.fr
– Cc: titi@yahoo.fr
– Bcc: tata@gmail.com
– From: pmg@univ-lyon2.fr
– Reply-to: pmg@univ-lyon2.fr
– User-Agent: Mozilla/5.0
– Return-Path:
– Date:
– Subject:
–…
Commandes POP2
HELLO : Identification à l'aide de l'adresse IP de l'ordinateur expéditeur
FOLDER : Nom de la boîte à consulter
READ : Numéro du message à lire
RETRIEVE: Numéro du message à récupérer
SAVE : Numéro du message à sauvegarder
DELETE : Numéro du message à supprimer
QUIT : Sortie du serveur POP2
Commandes POP3
USER : nom de l'utilisateur, doit précéder la commande PASS.
PASS : mot de passe de l'utilisateur
STAT : Information sur les messages contenus sur le serveur
RETR : Numéro du message à récupérer
DELE : Numéro du message à supprimer
LIST : Numéro du message à afficher
QUIT : sortie du serveur POP3.
Protocole HTTP
HTTP : HyperText Transfer Protocol
Transfert de fichiers (essentiellement au format HTML)
Port 80
Version 1.0/1.1 : Modes de communication
HTTP 1.0 :
Pour chaque requête :
Réaliser une connexion TCP
Envoyer la requête
Recevoir la réponse
Libérer la connexion
Plusieurs requêtes par site Web
(par exemples, les fichiers images)
HTTP 1.1 : -> Problème de performances
Réaliser une connexion TCP
Pour chaque requête :
Envoyer la requête
Recevoir la réponse
Libérer la connexion
Protocole HTTP
Communication en deux temps :
Réponse HTTP
Exemple d'en-tête
User-Agent : informations sur le client (nom et la version du navigateur, système
d'exploitation...)
Accept-Language: Langage attendu par le navigateur
3. Corps
Lignes optionnelles séparées des lignes précédentes par une ligne vide
Permettent l'envoie des données au serveur (commande POST)
Protocole HTTP
Requête HTTP
Exemples:
Ligne de requête GET http://www.google.com HTTP/1.0
Accept : text/html
Champs d'en-tête If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
Renvoie le contenu du document par défaut Renvoie le document mentionné dans le chemin complet
$ telnet 10function.kicks-ass.org 80
$ telnet clx.anet.fr 80 GET /books/ruhacker.txt
\n
GET / \n
\n $ telnet liris.cnrs.fr 80
\n GET /ksehaba/Reseaux/Test.html
\n
\n
Protocole HTTP
Réponse HTTP
1. Ligne de statut
Version du protocole utilisé
HTTP-Numéro de version
Code de statut :
valeur numérique (xxx) qui décrit le statut de la réponse
1xx: N’est pas utilisé, “Futur Use”
2xx: Succès, l’action exécutée correctement
3xx: Redirection, reprendre l’interrogation avec une autre formulation
4xx: Erreur coté client, erreur de syntaxe ou ne peut être acceptée
5xx: Erreur coté serveur, erreur interne due à l’OS
Signification du code
2. En-tête
Informations supplémentaires sur la réponse et/ou le serveur
3. Corps
Le document demandé
Protocole HTTP
Réponse HTTP
Exemple :
$ telnet localhost 80
GET / HTTP/1.0
\n
\n
Organisation
CM
Plan
Modèles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Réseaux
Programmation Réseau
Applications Client/serveur
Mode connecté/mode non connecté
Programmation en C
Programmation en java
Modèle client-serveur définition
Application client/serveur
application qui fait appel à des services distants à travers d’un
échange de messages (les requêtes) plutôt que par un partage de
données (mémoire ou fichiers)
Serveur
• programme offrant un service sur un réseau (par extension,
machine offrant un service)
Client
• programme qui émet des requêtes (ou demandes de service). Il
est toujours l’initiateur du dialogue
Exemple de client/serveur
Un serveur de fichiers
Des clients qui demandent des fichiers
Comment gérer la concurrence ?
un processus serveur => un client servi
plusieurs clients => il va falloir faire des fork() !!!
Quel protocole utiliser ?
le client envoie le nom du fichier
le serveur renvoie la taille puis les données
comment gère-t-on les erreurs ?
Mode connecté/nom connecté
Mode connecté (TCP) :
problèmes de communications gérés automatiquement,
primitives simples d’émission et de réception,
gestion de la connexion coûteuse,
pas de délimitation des messages dans le tampon.
Mode non connecté (UDP) :
consomme moins de ressources systèmes,
permet la diffusion,
gestion
de toutes les erreurs à la main : il faut réécrire la couche
transport !!!
Programmation Réseau
Applications Client/serveur
Mode connecté/mode non connecté
Programmation en C
Programmation en java
Les sockets
Interface d’accès au réseau
développé dans Unix BSD (Berkeley Software Distribution)
n° port, @ IP, protocole (TCP, UDP, ...)
Client Serveur
n° port :2345 Couche Transport (TCP, UDP) n° port :80
@ IP : 193.168.20.1 @ IP : 193.168.20.2
Couche Liaison
@ Ethernet @ Ethernet
L'API socket
Création de socket : socket(family, type, protocol)
Ouverture de dialogue :
client : connect(...)
serveur : bind(..), listen(...), accept(...)
Transfert de données :
mode connecté : read(...), write(...), send(...), recv(...)
mode non connecté : sendto(...), recvfrom(...),
sendmsg(...), recvmsg(...)
Clôture du dialogue :
close(...), shutdown(...)
Client/Serveur
en mode non connecté
Client Serveur
traitement de la réponse
Client Serveur
socket() Création de la socket socket()
bind()
listen()
accept()
établissement de la connexion
connect()
traitement de la réponse
int sd;
struct sockaddr_in serveur; // @IP, n° port, mode
struct hostent remote_host; // nom et @IP
int sd;
struct sockaddr_in serveur; // @IP, n° port, mode
int sd;
struct sockaddr_in serveur; // @IP, n° port, mode
Client Serveur
sc = socket() Création de la socket ss =socket()
bind(ss)
listen(ss)
sa = accept(ss)
établissement de la connexion
connect(sc)
traitement de la réponse
2- Echange 3- Echange
OutputStream InputStream
InputStream OutputStream
3- Fermeture (close()) 4- Fermeture (close())
Exemple de code : Serveur (1)
import java.net.*;
import java.io.*;
public void go () {
try {
InputStream is = so.getInputStream ();
ObjectInputStream ois = new ObjectInputStream (is);
Object obj = ois.readObject();
String msg = (String) obj;
System.out.println(msg);
}catch (IOException e) {}
catch (ClassNotFoundException e){}
}
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, RGP, BGP)
Couche Transport
Services de la couche
Protocole UDP
Protocole TCP
Couche Applications