CMs Reseaux
CMs Reseaux
CMs Reseaux
Organisation
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
■ …
Introduction
Les topologies
En bus
Tous les ordinateurs sont reliés à une même ligne de transmission (bus)
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
3. Signal 1. Signal
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
faire de la réutilisation
Modèle de référence OSI
Emetteur Récepteur
Données
Couche Couche
H données TCP, UDP
Transport segment
Transport
IP IP IP
IP IP IP
IP
IP IP
IP
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
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
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
fanion données fanion
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
NET_ID SUBNET_ID HOST_ID
ET Logique ET Logique
Netmask Netmask
1…….1 1………….1 0………0 1…….1 1………….1 0………0
0………0
? 0………0
NET_1 SUBNET_1 = NET_2 SUBNET_2
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
17 -> UDP Checksum d'en-tête (16 bits) : code de contrôle d’erreur pour l’entête
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 :
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
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
■Inconvénients
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 IP 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”
o
n
Protocole UDP
■Pourquoi UDP?
■sans délai de connexion
■simple donc plus rapide (pas de délai, pas d'état entre émetteur/récepteur)
■Petit en-tête
■Souvent utilisé pour les applications multimédias (streaming multimedia)
■Tolérance aux pertes
■Sensible au débit
■Autre utilisation d’UDP
■DNS
■SNMP
■Transfert fiable sur UDP
■ajouter des mécanismes de compensation de pertes à niveau applicatif
■compensation de pertes adaptée à chaque appplication
Segment UDP
4 octets
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
temps temps
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
Timeout
X
perdu
Fiabilité des transferts
Les pertes de segment sont détectées par absence d'ack positif à expiration
d'un temporisateur sur l'emetteur
Timeout
É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
Temps
Transfert de données
A B
Envoi de
10 oct
Envoi de
20 oct
Envoi de
10 oct
Envoi de
2 oct
Fin de connexion
A B
Fermeture négociée
A demande la fin de connexion (FIN=1)
B acquitte la demande de A (ACK)
B envoie ses données en attente
A acquitte les données (ACK)
B accepte de la fin de connexion (FIN)
A acquitte de la fin de connexion (ACK)
Utilisation du réseau
Tampon de l'émetteur
Tampon du récepteur
■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
Tampon du
récepteur
Gestion de la fenêtage Application
écrit 2k 4K
X
Exemple : expiration du timeout
Hors seq.
Timeout
mémorisé
Hors seq.
mémorisé
Organisation
■ CM
Plan
Modèles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
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
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 dom aine
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
■LeUSER-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 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
Version du protocole :
Forme HTTP-Numéro de version. Par exemple HTTP/1.1
Protocole HTTP
Requête HTTP
2. Champs d'en-tête (facultatif)
■Informations
supplémentaire sur la requête et/ou le navigateur
■Syntaxe Type en-entête : valeur en-tête
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
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
1. 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) :
◆permet la diffusion,
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 Couc h e Transport (T CP, 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 S erveur
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
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
Programmation en C
Programmation en java
C a na u x b id irec tio n ne ls
C o m m u n ic atio en tre d eu x ap p lic atio n s
nd istan te s p ar d es c an au x d e b id irec tio n n e ls
(so ckets ).
d eu x typ e s d e so ckets en J a va:
S tream s ockets (TC P) : com m u nication en m o d e
con n ecté, car actéris é es p ar le c aractèr e con tin u du
flu x de d on n é es ( ordr e correct - d on n é es n on
corrom pu es).
D atagr am sock ets (U D P) : com m u n ication en m o d
n on -con n ect é : plu s gran d e ra pidité, m a is e fiabili
m oin dre (p erte, du p lic ation ou d és or dre p ossibles).
té
Classes de java.net
ContentHandler : base pour gérer contenus MIME
DatagramPacket
UDP
DatagramSocket
InetAddress : gestion des adresses
ServerSocket
Socket TCP
SocketImpl
URL
URLConnection
URL
URLEncoder
URLStreamHandler
InetAdress
public final class InetAddress {
2Echange 3Echange
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