CMs Reseaux
CMs Reseaux
Karim Sehaba
Maître de conférences
Université Lumière Lyon 2
[email protected]
http://liris.cnrs.fr/~ksehaba
Organisation
Supports de CM et TD ici : http://liris.cnrs.fr/ksehaba/Reseaux
■ CM
5 séances Plan
Modèles en couches : OSI & TCP/IP
d’1h45 Couche internet (IP, ICMP, ARP/RARP)
Examen
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Réseaux
■ TD
■
7 séances Plan
Modèles en couches (OSI et TCP)
d’1h45 Installation et configuration d’un serveur Web –
Apache L'adressage et le routage IP
■
Projet Programmation par sockets – MiniTchat (3 séances)
Évaluation
Références
■ 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
LA
N WA
N
LA
LA N
N
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
■
Il définit le format des données et les règles d'échanges
■ syntaxes et sémantique de message...
■
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 H données T
Couche ETHERNET, ATM...
Réseaux trame
Réseaux
bits
Modèle TCP/IP
Les couches TCP/IP
■
Réseau
■
Acheminement des données sur la liaison
■
Coordination de la transmission de données (synchronisation)
■
Conversion des signaux (analogique/numérique)
■
Internet : communication entre machine
■
Adressage IP
■
Acheminement de datagrammes
■
Peu de fonctionnalité, pas de garanties
■
Gestion de la fragmentation et assemblage
IP IP IP
IP IP IP
IP
IP IP
IP
datagramme IP
IP IP IP
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 datagramme
TCP IP TCP
IP IP IP
■
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
en-tête en-tête en-tête en-tête en-queue
Pilote ethernet IP TCP FTP données ethernet Pilote
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
Fonctions du fanion
■
délimite les données
■
maintien de la synchronisation de l'horloge de
réception Quelles sont les problèmes que pose
le fanion ?
Notion de transparence
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
Fonctionnement
Côté réception : si 5 bits consécutifs sont à “1”, l’automate regarde le bit suivant :
■
Exemple
Fanion Séquence
Fanion
originale
01111110 000111111001011111001101100 01111110
Protocoles
Couche H données T
Couche ETHERNET, ATM...
Réseaux trame
Réseaux
bits
Couche internet
■ Fonctionalité : communication entre machines
■
Adressage IP
■
Acheminement de datagrammes (en mode non connecté)
■
Peu de fonctionnalité, pas de garanties
■
Gestion de la fragmentation et assemblage
■ 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
■
Chaque adresse est composée de deux champs :
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
?
NET_1 SUBNET_1 0………0 = NET_2 SUBNET_2 0………0
■
Le netmask permet de savoir si la machine source et destination sont sur
le même sous-réseau
■
La classe d’adressage permet de savoir si elles sont sur le même réseau
Sous-réseaux
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
Version (4 bits): la version d'IP utilisée Identification (16bits) : id des fragments d'un même
paquet
LET (4 bits) : Longueur d'En-Tête en nombre de mots de
32 bits
Type de service (8 bits) : qualité de service
Longueur Totale (16 bits) : taille (entête + données) en
octet
Format d'un datagramme IP
Flags (3 bits): 4 octets
Bit 0: réservé, doit être à zéro ;
Fragment intermédiaire
Format d'un datagramme IP
4 octets
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
17 -> UDP l’entête
6 -> TCP Adresse source (32 bits) : IP de la machine source
Format d'un datagramme IP
Adresse 4 octets
destination
(32 bits) : IP
de la
machine
destination
Format d'un datagramme IP
4 octets
données
■
Fonctionnement
■
Découper en fragments de tailles inférieures au MTU du réseau et de
telle façon que la taille du fragment soit un multiple de 8
octets
■
Ajouter des informations afin que la machine de destination puisse
réassembler les fragments dans le bon ordre
■
Envoyer ces fragments de manière indépendante et les
réencapsuler de telle façon à tenir compte de la nouvelle taille du
fragment.
Fragmentation des datagrammes
IP
Exemple
H 1400 H 1400
octets octets
H 776 H 624
octets 0)
(Déplacement octets 97)
(Déplacement
Fragmentation des datagrammes
IP
Version LET Type service Longueur totale = 1420
ID = 77 00 Déplacement = 0
Durée de vie Protocole Somme de contrôle en-tête
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
Fragmentation des datagrammes
IP Données (776 oct) Données (624 oct)
Fragmentation des datagrammes
IP
Version LET Type service Longueur totale = 1420
ID = 77 00 Déplacement = 0
Durée de vie Protocole Somme de contrôle en-tête
Adresse source
Version LET Type service Longueur totale = 1420
Adresse destination
ID = 77 00 Déplacement = 0
Données (1400 oct) Durée de vie Protocole Somme de contrôle en-tête
Adresse source
Adresse destination
MTU = 1500 octets
Données (1400 oct)
Version LET Type service Longueur totale = 1420
ID = 77 00 Déplacement = 0
Durée de vie Protocole Somme de contrôle en-tête
Adresse source
Adresse destination MTU = 1500 octets
Données (1400 oct)
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
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
■ 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
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
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)
Routag
e
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
Routag
Table de routage
e
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
Table de routage de B D
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
Routag
e
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
Table de routage de B D
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
Routag
e avec les autres réseaux ?
communiquer
Routag
e
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
Table de routage de B D
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
Routag
e
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
Table de routage de B D
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
Table de routage de B D
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
Routag
e
Mise à jour de la table de routage
■
Manuelle « routage statique »
■ table de routage entrée manuellement par l'administrateur
■
Automatique « dynamique »
■ table de routage mis à jour dynamiquement par le routeur
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)
Routage
statique
■
La commande route permet d'indiquer une route vers:
■ un réseau (NET_ID)
■ une machine (HOST_ID)
■ ou une adresse par défaut (default)
■
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
■
Ce vecteur contient la distance à chacune d'entre elles
■
Distance = coût
Pré condition
■
Chaque noeud connaît la distance vers tous ses voisins directs
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
Extrait de la table de R1
Réseau de destination Moyen de l'atteindre Coût
192.168.1.0 R2 22
Types de routeurs
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
■
Type vecteur de distance mais les paires s'échangent le chemin
complet correspondant à chaque destination (pas uniquement le coût)
■
Exemple : pour la destination D, F utilise actuellement FGCD et
apprend d'autres routes de ses voisins (il peut alors choisir celle qu'il
préfère selon la stratégie choisie)
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 Transport
Services de la
couche Protocole UDP
Protocole TCP
Modèle TCP/IP
Protocoles
Couche H données T
Couche ETHERNET, ATM...
Réseaux trame
Réseaux
bits
Couche
transport
Services et protocoles de la couche
■
Crée un circuit de communication logique entre des
applications s’exécutant sur des hôtes distants
■
Les protocoles de la couche transport ne s’exécutent qu’au extrémités
IP IP IP
TCP
IP IP IP
IP
TCP
IP IP
IP
TCP IP
datagramme TCP
IP IP IP
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”
■ Petit en-tête
■ Sensible au débit
■Autre utilisation d’UDP
■ DNS
■ SNMP
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
Port source Port destination
NS - Numéro de séquence
NR - Numéro de séquence acquitté
U A P R S F
Lg h. Réservé R C S S Y I Taille fenêtre
G K H T N N
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
Client Serveur Client Serveur
Notation :
(ACK = x) <=> (ACK = 1 et NR = x)
Fiabilité des
Les pertes de transferts
segment sont détectées par absence d'ack positif à expiration
d'un temporisateur sur l'emetteur
NS = 92, 8 oct
data
ACK =
Timeout
100
X
perdu
NS = 92, 8 oct
data
ACK =
100
Fiabilité des
Les pertes detransferts
segment sont détectées par absence d'ack positif à expiration
d'un temporisateur sur l'emetteur
Exemple :
Emetteur Récepteur
NS = 92, 8 oct
data
Timeout
ACK =
100
NS = 92, 8 oct
data
ACK =
100
É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
Temps
ACK = y+1, SYN = 0
Transfert de données
A B
Envoi de
10 oct NS = 56,
A
ACK B
=20
3 Envoi de
= 203, =6 20 oct
A6
NS BACK
Envoi de
10 oct
NS = 66,
A
ACK B
:
223
Envoi de
2 oct
NS : 223, =7
ACKB 6
A
Fin de connexion
A B
Fermeture négociée
FIN (seq =
x)
A demande la fin de connexion (FIN=1)
ACK (seq =
B acquitte la demande de A (ACK) x+1)
DAT
B envoie ses données en attente A
ACK (seq = 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
Principe
glissante
■
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
Paquet i
Paquet i+1
Paquet i+2
Paquet i+3
ACK (i)
Paquet i+4
■
Le nombre de séquence est stocké dans le champ fenêtre de l'en-tête TCP/IP
■
La taille de la fenêtre n'est pas fixe
■
Le serveur peut demander une augmentation de la taille de la fenêtre
Fenêtre
glissante
Gestion de la fenêtage Tampon du
récepteur
Application 4K
Seq = 0, 2k
écrit 2k
vide
Contrôle de flux TCP :
■
l'émetteur ne doit pas
en envoyer de données ACK = 2k, WIN = 2k
si le tampon de
2k
réception n'a pas Application
l'espace libre écrit 2k
correspondant
Quand l'émetteur est
bloqué, il peut : L'émetteur Plein
est bloqué Application
■
envoyer des données lit 2k
urgentes (interruption de
l'application réceptrice) 2K
■
envoyer des segments de
Application
1 octet pour obliger le écrit 1k Seq = 4096,1k
récepteur à envoyer
SEQa et WIN et maintenir
l'état actif de la
connexion
Fenêtre
glissante 1k 2K
Seq = 2048, 2k
WIN = 2k
Fenêtre
glissante
Gestion de la fenêtage
Fenêtre
glissante
Seq = X, 500 oct
Seq = X + 500, 200
X oct
Exemple : expiration du Seq = X + 700, 10 oct
timeout Hors seq.
Timeout
mémorisé
Hors seq.
=X mémorisé
ACK Seq A
=X
ACK Seq A
= X + 710 oct
ACK Seq A
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
Protocoles
Couche H données T
Couche ETHERNET, ATM...
Réseaux trame
Réseaux
bits
Protocole
■
DNS
Les adresses IP représentent une partie fondamentale de l’Internet
■
Adressage IP
■
Routage IP (le paquet est routé selon sa destination)
■
Les utilisateurs préfèrent des noms symboliques que des nombres
■
Comment joindre des sites Web (URL) ?
■
Comment échanger du courrier électronique ?
■
Comment mémoriser les adresses IP de tous les sites Internet à joindre ?
■
Comment gérer les changements d’adresses IP ?
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
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: [email protected]
– Cc: [email protected]
– Bcc: [email protected]
– From: [email protected]
– Reply-to: [email protected]
– User-Agent: Mozilla/5.0
– Return-Path:
– Date:
– Subject:
– …
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
Client Serveur 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
Requête
HTTP
HTTP
Exemples:
GET http://www.google.com HTTP/1.0
Ligne de requête Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
Champs d'en-tête 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 clx.anet.fr 80 $ telnet 10function.kicks-ass.org 80
GET /books/ruhacker.txt
GET / \n
\n \n
$ telnet liris.cnrs.fr 80
\n GET /ksehaba/Reseaux/Test.html
\n
\n
Protocole
Réponse HTTP
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
Réponse HTTP
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
◆permet la diffusion,
Client Serveur
n° port :2345 @ Ethernet
Couche Transport (TCP,
@ IP : UDP)
193.168.20.1 @
Couche Réseau (IP)
IP : 193.168.20.1
Couche Liaison
n° port :80
@ IP :
193.168.20.2 @
IP :
193.168.20.2
@ 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(...)
◆ modenon connecté : sendto(...), recvfrom(...),
sendmsg(...), recvmsg(...)
■Clôture du dialogue :
◆ close(...), shutdown(...)
Client/Serveur
en mode non connecté
Client Serveur
close()
réponse recvfrom()
Client Serveur
socket() Création de la socket socket()
bind()
listen()
accept()
établissement de la connexion
connect(
)
write() envoi read()
requête bloqué jusqu'à la réception de la
read() requête traitement de la
bloqué jusqu'à la réception de la
requête
write()
envoi
réponse traitement de la réponse
close()
réponse
Client/Serveur
close() Fermeture de la socket
La primitive socket()
int socket(int family, int type, int protocol)
■family :
int sd;
struct sockaddr_in serveur; // @IP, n° port, mode
int sd;
struct sockaddr_in serveur; // @IP, n° port, mode
Client Serveur
sc = Création de la socket ss =socket()
socket()
bind(ss)
listen(ss)
sa = accept(ss)
établissement de la connexion
connect(sc)
jusqu'à la réception de la
write(sc) envoi requête
requête traitement de la
read(sc) requête
bloqué jusqu'à la réception de la
envoi réponse
réponse traitement de la
read(sa)
bloqué
réponse
close(sc) Fermeture de la socket close(sa)
Les primitives d'envoi/réception
■ int write(int sock_desc, char *tampon, int lg_tampon);
■
int read(int sock_desc, char *tampon, int lg_tampon);
■
int send(int sock_desc, char *tampon, int lg_tampon, int drap);
■
int recv(int sock_desc, char *tampon, int lg_tampon, int drap);
■ int sendto(int sock_desc, char *tampon, int lg_tampon, int
drap, struct sockaddr *to, int lg_to);
■ int recvfrom(int sock_desc, char *tampon, int lg_tampon, int
drap, struct sockaddr *from, int lg_from);
2- Echange
OutputStream 3- Echange
InputStream InputStream
OutputStream
3- Fermeture (close())
4- Fermeture (close())
Exemple de code : Serveur (1)
import java.net.*;
import java.io.*;
Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, RGP, BGP)
Couche Transport
Services de la couche
Protocole UDP
Protocole TCP
Couche Applications