You are on page 1of 181

Cours de Rseaux

Karim Sehaba
Matre de confrences

Universit Lumire Lyon 2


karim.sehaba@univ-lyon2.fr
http://liris.cnrs.fr/~ksehaba

Organisation
Supports de CM et TD ici :

http://liris.cnrs.fr/ksehaba/Reseaux

CM

5 sances d1h45
Examen

Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)

TD

7 sances d1h45
Projet

Programmation Rseaux

Plan
Modles en couches (OSI et TCP)
Installation et configuration dun serveur Web Apache
L'adressage et le routage IP
Programmation par sockets MiniTchat (3 sances)
valuation

Rfrences

Livres :

Rseaux de Andrew Tanenbaum


Les Rseaux (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 Glck (Lyon1)

Introduction
Qu'est-ce qu'un rseau ?
Un ensemble d'entits (objets, personnes, machines, etc.) interconnectes les unes
avec les autres
Exemples :

rseau de transport
rseau tlphonique
rseau de neurones

Rseaux informatique
Un ensemble d'ordinateurs relis entre eux grce des lignes physiques et
changeant des informations sous forme de donnes numriques

Intrts des rseaux informatique

communication (personnes, processus)


partage de ressources (fichiers, applications, matriels)
minimisation des cots

Introduction
Les topologies
En bus
Tous les ordinateurs sont relis une mme ligne de transmission (bus)

En toile
Tous les ordinateurs sont relis un concentrateur (hub)

En anneau
Les ordinateurs sont situs sur une boucle

Cblage en maille
Chaque machine est relie toutes les autres par un cble

Quels sont les avantages et inconvnients de chaque topologie ?

Introduction
Les types de rseaux
LAN (local area network - Rseau Local)
mme organisation dans une petite aire gographique,
dbit : [10 Mbps, 1 Gbps], utilisateurs : [100 1000]
MAN (Metropolitan Area Network Rseau mtropolitain)
interconnexion de plusieurs LAN gographiquement proches (dizaines de km)
WAN (Wide Area Network Rseau tendu)
interconnexion de plusieurs LAN travers de grandes distances gographiques

LAN
WAN
LAN

LAN

Introduction
Les techniques de transfert
La commutation de circuits
Circuit

entre les deux entits qui communiquent


Le circuit reste ouvert jusquau moment o lun des deux participants interrompt la
communication

Le transfert de paquets
Routage
Le paquet qui arrive doit possder ladresse complte du destinataire
Le routeur consulte sa table de routage pour choisir la meilleure ligne de sortie
Commutation
Les commutateurs acheminent les paquets vers le rcepteur en utilisant des rfrences, de
circuit
Les tables de commutation sont des tableaux, qui, une rfrence, font correspondre une
ligne de sortie
Seules les communications actives entre utilisateurs comportent une entre dans la table de
commutation.

Modles en couches
Notion de protocole
Modle de rfrence : OSI de ISO
Modle utilis sur Internet : TCP/IP

Problmatiques des rseaux


A

1. Donnes

Xyab lkd...

3. Donnes

Xyab lkd...

2. Code binaire

00110110001...

2. Code binaire

00110110001...

3. Signal

1. Signal

0 0 1 1 0 1 1

0 0 0

-numrique-

-analogique-

Protocole

Un ensemble de convention prtablies pour raliser un change de


donnes entre deux entits

Il dfinit le format des donnes et les rgles d'changes

syntaxes et smantique de message...

En particulier :

format des donnes et les rgles dchange

dlimitation des blocs de donnes changs

organisation et contrle de lchange

contrle de la liaison

Communication en rseau :
protocoles organiss en plusieurs couches

Modle de rfrence OSI


Open

Systems Interconnection (Interconnexion des Systmes Ouverts)

Dfinit

par International Standard Organisation

organisation non gouvernementale

centaine de pays membres

dite des normes dans tous les domaines

Ide fondamentale :

Modle en couches

une couche : un ensemble homogne destin accomplir une tche ou


rendre un service

Le dcoupage en couche permet de

dissocier des problmes de natures diffrentes


rendre l'architecture volutive
faire de la rutilisation

Modle de rfrence OSI


Emetteur

Donnes

Couche
application
Couche
prsentation
SH

Couche
transport

TH

Couche
rseau

Couche
physique

AH Donnes

Couche
application

Donnes

Couche
prsentation

PH

Couche
session

Couche
des donnes

Rcepteur

NH
DH

Couche
session

Donnes

Couche
transport

Donnes

Couche
rseau

Donnes
Donnes
bits

DT

Couche
des donnes
Couche
physique

Modle TCP/IP
Protocoles
Couche
Application

message

Couche
Transport

Couche
Internet
Couche
Rseaux

Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...

donnes

Couche
Transport

donnes
segment

donnes
datagramme

donnes
trame

bits

TCP, UDP

Couche
Internet

IP, ARP/RARP, ICMP

Couche
Rseaux

ETHERNET, ATM...

Modle TCP/IP
Les couches TCP/IP

Rseau

Acheminement des donnes sur la liaison

Coordination de la transmission de donnes (synchronisation)

Conversion des signaux (analogique/numrique)

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

m
ra
g
ta
da

IP

IP
IP
IP

IP

Modle TCP/IP
Les couches TCP/IP

Transport : communication entre applications

Protocole de transport de bout en bout

Prsent uniquement en extrmits

Transport fiable de segments (en mode connect)

Protocole complexe (transmission, gestion des erreurs, squencement)


IP

TCP
IP
IP

IP

IP
IP

IP

IP
TCP
IP

ta
da

am
gr

IP
TCP
IP

IP
IP

TCP
IP

Application

services de gestion (transfert) de fichier et d'impression


services de connexion au rseau
services de connexion distance
utilitaires Internet divers

Modle TCP/IP
Efficacit du transfert :
Efficacit du transfert = donnes utiles / donnes totales

Encapsulation
Serveur
FTP
en-tte
applicatif

donnes
message

en-tte
TCP

en-tte
applicatif

TCP

donnes

segment
en-tte
IP

en-tte
TCP

en-tte
applicatif

IP

donnes

datagramme
en-tte
ethernet

en-tte
IP

en-tte
TCP

en-tte
applicatif

trame

donnes

Pilote
ETHERNET
en-queue
ethernet

Modle TCP/IP
Efficacit du transfert :
A

B
en-tte
FTP

donnes
message

FTP

en-tte
TCP

en-tte
FTP

donnes
segment

TCP

en-tte
IP

en-tte
TCP

en-tte
FTP

en-tte
IP

en-tte
TCP

en-tte
FTP

FTP

TCP

IP

Pilote
ETHERNET

en-tte
ethernet

donnes
datagramme

trame

donnes

IP

en-queue
ethernet

Pilote
ETHERNET

A veut envoyer 1024 octets de donnes B en utilisant le protocole FTP. On suppose que :
- l'entte FTP a une taille de 70 octet
- l'entte TCP a une taille fixe de 20 octets
- l'entte IP a une taille fixe de 20 octets
- l'entte plus l'en-queue des trames ETHERNET est de 18 octets
- Taille max d'une trame Ethernet est de 1518 octets
Quelle est l'efficacit du transfert ?

Dlimitation des donnes


Notion de fanion
Notion de transparence

Notion de fanion
Lors

d'une transmission de donnes, il faut pouvoir reprrer le dbut


et la fin de la squence des donnes transmises

Fanion
Un

en transmission synchrone
caractre spcial

Une

squence de bits particuliers


fanion

donnes

fanion

Exemple de fanion : 01111110


Fonctions du fanion

dlimite les donnes

maintien de la synchronisation de l'horloge de rception


Quelles sont les problmes que pose le fanion ?

Notion de transparence

Les caractres spciaux comme le fanion ne sont pas dlivrs aux couches
suprieures, il sont interprts pour les besoins du protocole

Les caractres spciaux doivent pouvoir tre transmis en tant que donnes et
donc dlivrs en tant que tel

mcanisme de transparence

dfinition d'un autre caractre spciale ; le caractre d'chappement

Fonctionnement

ct mission : Insertion du caractre d'chappement devant le caractre


protger

ct rception : L'automate examine chaque caractre pour dcouvrir le fanion


de fin ; s'il rencontre le caractre d'chappement, il l'limine et n'interprte pas
le caractre suivant -> il le dlivre au systme

La technique du bit de bourrage

Seul le fanion (01111110) peut contenir plus de 5 bits conscutifs 1

Ct mission : si 5 bits conscutifs sont 1, lautomate insre un 0

Ct rception : si 5 bits conscutifs sont 1, lautomate regarde le bit suivant :

sil est 1, il sagit dun fanion

sil est 0, le 0 est enlev de la squence

Exemple
Fanion

01111110
Fanion

01111110

Squence originale

000111111001011111001101100

Squence transmise

00011111010010111110001101100

Fanion

01111110
Fanion

01111110

Organisation

CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux

Couche Internet (1)


Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6

Modle TCP/IP
Protocoles
Couche
Application

message

Couche
Transport

Couche
Internet
Couche
Rseaux

Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...

donnes

Couche
Transport

donnes
segment

Couche
Internet

donnes
datagramme

donnes
trame

bits

Couche
Rseaux

TCP, UDP

IP, ARP/RARP, ICMP

ETHERNET, ATM...

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 rseau

Distribues par ICANN -Internet Corporation for Assigned Names and Numbers

Adresse IP = 32 bits (4 octets)


4 octets

Reprsentation dcimale : W.X.Y.Z

Chaque adresse est compose de deux champs :

NET_ID : identifiant du rseau IP (utilis pour le routage)

HOST_ID : identifiant de la machine dans le rseau IP


NET_ID

HOST_ID

Adresse IP
Classes rseaux
4 octets

A 0 Net_ID
B 10
C 110
D 1110

HOST_ID

Net_ID
Net_ID

1.0.0.0 127.255.255.255

HOST_ID
HOST_ID

Adresse de transmission multiple

E 11110 Rserv pour une utilisation ultrieure

128.0.0.0 191.255.255.255
192.0.0.0 223.255.255.255
224.0.0.0 239.255.255.255
240.0.0.0 247.255.255.255

Quel est le nombre d'ordinateurs support pour chaque classe ?

Adresse IP spciales
Diffusion locale et distante
255.255.255.255 : adresse de broadcast sur le rseau IP local
<NET_ID><111111> : adresse de broadcast dirige vers le rseau de
numro NET_ID
Rebouclage local : 127.y.x.z
Gnralement 127.0.0.1 (localhost)
Permet de tester la pile TCP/IP locale sans passer par une interface
matrielle
Adresse 0.0.0.0
Utilise par le protocole RARP
Adresse de la route par dfaut dans les routeurs

Sous-rseaux
Comment diviser un rseau IP en plusieurs sous-rseaux ?
Prendre quelques bits de la partie <HOST_ID> de l'@IP pour le sous-rseau

NET_ID
NET_ID

HOST_ID
SUBNET_ID

HOST_ID

Utilisation des masques Netmask


Lacheminement se fait en fonction de <NET_ID> et <SUBNET_ID>
Mais la taille de <SUBNET_ID> est inconnue !
Information donne par le netmask ; tous les bits 1 correspond
<NET_ID><SUBNET_ID>

Sous-rseaux
Comment dterminer l'adresse de sous-rseau ?
Adresse destination

Adresse source
NET_1

Netmask

SUBNET_1

HOST_ID

NET_2

ET Logique

Netmask

1.1 1.1 00

NET_1

SUBNET_1

00

SUBNET_2

HOST_2

ET Logique

1.1 1.1 00

?
=

NET_2

SUBNET_2

00

Le netmask permet de savoir si la machine source et destination sont sur


le mme sous-rseau

La classe dadressage permet de savoir si elles sont sur le mme rseau

Sous-rseaux
Un rseau de classe B dispose du masque de sous-rseau 255.255.240.0
Les machines 159.84.146.236, 159.87.178.23 et 159.84.158.23 trouventelles sur le mme sous-rseaux ?

Netmask 255.255.240.0 =
11111111.11111111.11110000.00000000
IP1 : 159.84.146.236 = 10011111.01010100.10010010.11101100
IP2 : 159.87.178.23 = 10011111.01010111.10110010.00010111
IP3 : 159.84.158.23 = 10011111.01010100.10011110.00010111

Couche Internet (1)


Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6

Format d'un datagramme IP


4 octets

Version

LET

Type service

Identification
Dure de vie

Longueur totale
Flag

Protocole

Dplacement

Somme de contrle en-tte

Adresse source

En-tte

Adresse destination
Options (0 ou plusieurs mots)

Bourrage

donnes
Version (4 bits): la version d'IP utilise
LET (4 bits) : Longueur d'En-Tte en nombre de mots de 32 bits
Type de service (8 bits) : qualit de service
Longueur Totale (16 bits) : taille (entte + donnes) en octet
Identification (16bits) : id des fragments d'un mme paquet

Flags (3 bits):
Bit 0: rserv, doit tre zro ;
Bit 1: (AF) 0 = Fragmentation possible, 1 = Non fractionnable
Bit 2: (DF) 0 = Dernier fragment, 1 = Fragment intermdiaire

Format d'un datagramme IP


4 octets

Version

LET

Type service

Identification
Dure de vie

Longueur totale
Flag

Protocole

Dplacement

Somme de contrle en-tte

Adresse source

En-tte

Adresse destination
Options (0 ou plusieurs mots)

Bourrage

donnes
Dplacement (13 bits) : Position du fragment par rapport au paquet de dpart, en nombre de mots de 8 octets
Dure de vie (TTL) 8 bits: pour que le paquet peut rester dans le rseau
Protocole (8 bits) : type du protocole de niveau suprieur
1
-> ICMP
Checksum d'en-tte (16 bits) : code de contrle derreur pour lentte
17 -> UDP
Adresse source (32 bits) : IP de la machine source
6
-> TCP
Adresse destination (32 bits) : IP de la machine destination

Format d'un datagramme IP


4 octets

Version

LET

Type service

Identification
Dure de vie

Longueur totale
Flag

Protocole

Dplacement

Somme de contrle en-tte

Adresse source

En-tte

Adresse destination
Options (0 ou plusieurs mots)

Bourrage

donnes

Quel est la taille maximale d'un datagramme ?

Fragmentation des datagrammes IP


Taille maxi dun datagramme : 216 - 1 = 65535 octet
Taille maximale d'une trame - MTU (Maximum Transfer Unit)
Type de rseau MTU(oct)
Arpanet

1000

Ethernet

1500

FDDI

4470

Problme : pas de capacit pour envoyer de si gros paquets


Solution : dcouper en fragements les trames ==> la fragmentation

Fragmentation des datagrammes IP

Se fait au niveau des routeurs

Fonctionnement

Dcouper en fragments de tailles infrieures au MTU du rseau et de


telle faon que la taille du fragment soit un multiple de 8 octets

Ajouter des informations afin que la machine de destination puisse


rassembler les fragments dans le bon ordre

Envoyer ces fragments de manire indpendante et les rencapsuler


de telle faon tenir compte de la nouvelle taille du fragment.

Fragmentation des datagrammes IP


Exemple
H 1400 octets

H 1400 octets

H 776 octets

MTU = 1500 octets

H 624 octets

H 1400 octets

MTU = 800 octets

H 1400 octets
H 776 octets

H 624 octets

(Dplacement 0)

(Dplacement 97)

MTU = 1500 octets

Fragmentation des datagrammes IP


Version

LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
Donnes (1400 oct)

MTU = 1500 octets


Version

LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination

MTU = 1500 octets

Donnes (1400 oct)

MTU = 800 octets


Version

LET
Type service
Longueur totale = 796
ID = 77
01
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source

Version

LET
Type service
Longueur totale = 644
ID = 77
00
Dplacement = 97
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source

Adresse destination

Adresse destination

Donnes (776 oct)

Donnes (624 oct)

Fragmentation des datagrammes IP


Version

LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination
Donnes (1400 oct)

Version

LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination

MTU = 1500 octets

Donnes (1400 oct)


Version

LET
Type service
Longueur totale = 1420
ID = 77
00
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source
Adresse destination

MTU = 1500 octets

Donnes (1400 oct)

MTU = 800 octets


Version

LET
Type service
Longueur totale = 796
ID = 77
01
Dplacement = 0
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source

Version

LET
Type service
Longueur totale = 644
ID = 77
00
Dplacement = 97
Dure de vie
Protocole
Somme de contrle en-tte
Adresse source

Adresse destination

Adresse destination

Donnes (776 oct)

Donnes (624 oct)

Couche Internet (1)


Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6

Protocole ARP

ARP (Address Resolution Protocol) Protocol de rsolution d'adresse

@MAC (adresse physique): 48 bits


fixe par le fabriquant
exemple :

@IP (adresse logique): 32 bits


fixe par ladministrateur rseau ou ICANN
exemple :

Rle du protocole ARP

Faire la correspondance entre une @IP et une @MAC.


Les applications ne manipulent que des @IP (pourquoi pas des @MAC?)
Le systme doit retrouver l'@ MAC correspondante.
Les systmes construisent une table de correspondance (cache ARP).

Protocole ARP
A

Table de
correspondance

@IP C @MAC C
-Cache ARP-

A veut envoyer un message C (A et C sur le mme rseau)


Principe du protocole

A consulte sa table de correspondance IP->MAC


A met une requte ARP (contenant l'@IP de C) en broadcast
B, C et D comparent cette adresse logique la leur
C rpond 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 contrler le bon droulement du protocole IP

Utilis par lutilitaire ping, traceroute

Utilitaire ping
Teste laccessibilit dune destination de bout en bout
valuation de performances (mesure de temps aller-retour)
La rponse doit parvenir avant 20 secondes
Exemple
Ping 127.0.0.1 : tester la pile TCP/IP locale
Ping mon@IP : vrifier la configuration rseau local
Ping @default-routeur : tester la configuration du sous-rseau et la passerelle
Ping @dest : tester un chemin de bout en bout

Protocole ICMP
Utilitaire Traceroute/Tracert
Permet

de trouver pas pas le chemin pour atteindre une destination

Envoie

dun paquet IP avec TTL = 1


Attend ICMP dlai expir
Envoi dun paquet IP avec TLL = 2
...
R1

src
TTL=1

TTL=2

R2

dest

Couche Internet (1)


Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6

Protocole IPv6
Pourquoi IPv6

La fin d'IPv4 est proche


Pnurie d'adresses IP et explosion des tables de routage
Besoin d'un nouveau protocole mais suppose de le dployer 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 ne de propositions combines (Deering et Francis)

Objectifs du protocole

Supporter des milliards d'htes

Rduire la taille des tables de routage

Simplifier encore le protocole pour un routage plus rapide des paquets

Offrir une meilleure scurit

Permettre au nouveau protocole et l'ancien de coexister pendant quelques


annes

Protocole IPv6
Caractristiques

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'entte (7 champs au lieu de 13 et une taille fixe des options


pour acclrer 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 rassembler les fragments (reprend les
champs de IPv4)

Destination Options Header


Informations additionnelles pour la destination

L'adressage

Adressage hirarchique pour allger les tables de routage

Un prfixe de localisation public 48 bits

Un champ de topologie locale (subnet) 16 bits

Un identifiant de dsignation de l'interface (bas sur l'@MAC) sur 64 bits (quivalent


HOST_ID qui garantie l'unicit de l'adresse

Organisation

CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux

Couche Internet (2)


Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)

Routage
Quel chemin empruntent les datagrammes pour arriver destination ?
Routage : mcanisme par lequel les donnes d'un quipement expditeur
sont achemines jusqu' leur destinataire

Routeur
dispositif permettant de choisir le chemin que les datagrammes vont
emprunter
possde plusieurs cartes rseau dont chacune est relie un
rseau diffrent
utilise la table de routage qui dfinit le chemin emprunter pour une
adresse donne

Routage
Table de routage
Dfinit la correspondance entre l'adresse de la machine vise et le noeud
suivant auquel le routeur doit dlivrer le message

Contenu de la table de routage


destination

IP d'une machine ou d'un rseau de destination

passerelle (gateway)

IP du prochain routeur vers lequel il faut envoyer le


datagramme
masque associ au rseau de destination

masque (mask)
interface
mtrique (cost)

interface physique par laquelle le datagramme doit


rellement tre expdi
utilis pour le calcul du meilleur chemin

Commandes pour afficher le contenu de la table


netstat -r , route print

Routage
Exemple
192.168.1.3

192.168.3.3
192.168.2.

192.168.1.
.1

.2

192.168.3.
.2

.1

R1

R2

192.168.2.3

192.168.3.4

Table de routage de A
Destination

Netmask

192.168.1.0

255.255.255.0

192.168.2.0

255.255.255.0

0.0.0.0

0.0.0.0

Gateway

Interface

Cost

192.168.1.3

192.168.1.1

192.168.1.3

192.168.1.1

192.168.1.3

Routage
Exemple
192.168.1.3

192.168.3.3
192.168.2.

192.168.1.
.1

.2

192.168.3.
.2

.1

R1

R2

192.168.2.3

192.168.3.4

Table de routage de B
Destination

Netmask

Gateway

Interface

Cost

192.168.1.0

255.255.255.0

192.168.2.2

192.168.2.3

192.168.3.0

255.255.255.0

192.168.2.1

192.168.2.3

192.168.2.0

255.255.255.0

192.168.2.3

Quelle doit tre la table de routage de C pour qu'il puisse


communiquer avec les autres rseaux ?

Routage
Exemple
192.168.1.3

192.168.3.3
192.168.2.

192.168.1.
.1

.2

192.168.3.
.2

.1

R1

R2

192.168.2.3

192.168.3.4

Table de routage de R1
Destination

Netmask

192.168.1.0

255.255.255.0

192.168.2.0

255.255.255.0

192.168.3.0

255.255.255.0

Gateway

Interface

Cost

192.168.1.1

192.168.2.2

192.168.2.2

192.168.2.1

Routage
Exemple
192.168.1.3

192.168.3.3
192.168.2.

192.168.1.
.1

.2

192.168.3.
.2

.1

R1

R2

192.168.2.3

192.168.3.4

Table de routage de R2
Destination

Netmask

192.168.2.0

255.255.255.0

192.168.3.0

255.255.255.0

Gateway

Interface

Cost

192.168.2.1

192.168.3.2

Modifier la table de routage de R2 pour que le rseau 192.168.3.0


puisse communiquer avec le rseau 192.168.1.0

Routage
Exemple
192.168.3.3

192.168.1.3
192.168.1.

192.168.2.
.1

.2

192.168.3.

.1

R1

.2

R2

192.168.2.3

192.168.3.4

Table de routage de R2
Destination

Netmask

192.168.2.0

255.255.255.0

192.168.3.0

255.255.255.0

192.168.1.0

255.255.255.0

Gateway

Interface

Cost

192.168.2.1

192.168.3.2

192.168.2.1

192.168.2.2

Routage
Mise jour de la table de routage
Manuelle
table

routage statique

de routage entre manuellement par l'administrateur

commande
langage

route des stations unix

de commande des routeurs (ip route...)

Automatique
table

dynamique

de routage mis jour dynamiquement par le routeur

processus
changes

sur les stations et les routeurs


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
La

commande route permet d'indiquer une route vers:


un

rseau (NET_ID)

une
ou

machine (HOST_ID)

une adresse par dfaut (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

Route vers un rseau


route add net 192.168.0.0 netmask 255.255.255.240 eth0 --------> ajouter
route del net 192.168.0.0 netmask 255.255.255.240 eth0

--------> supprimer

Route vers un rseau via une passerelle


route add net 192.168.0.0 netmask 255.255.255.240 gw 192.168.0.7 eth0 ---> ajouter
route del net 192.168.0.0 netmask 255.255.255.240 gw 192.168.0.7 eth0 --> supprimer

Routage statique
Exemple
192.168.3.3

192.168.1.3
192.168.1.

192.168.2.
.1

.2

192.168.3.

.1

R1

.2

R2

192.168.2.3

192.168.3.4

Configurer la table de routage des diffrentes machines

Routage statique
Exemple
192.168.3.3

192.168.1.3
192.168.1.

192.168.2.
.1

.2

192.168.3.

.1

R1

.2

R2

192.168.2.3

tape 1 : configuration des IP


A : ifconfig eth0 192.168.1.3 netmask 255.255.255.0
B : ifconfig eth0 192.168.2.3 netmask 255.255.255.0
C : ifconfig eth0 192.168.3.3 netmask 255.255.255.0
D : ifconfig eth0 192.168.3.4 netmask 255.255.255.0

192.168.3.4

Routage statique
Exemple
192.168.3.3

192.168.1.3
192.168.1.

192.168.2.
.1

.2

192.168.3.

.1

R1

.2

R2

192.168.2.3

tape 1 : configuration des IP


R1 :

ifconfig eth0 192.168.1.1 netmask 255.255.255.0


ifconfig eth1 192.168.2.2 netmask 255.255.255.0

R2 :

ifconfig eth0 192.168.2.1 netmask 255.255.255.0


ifconfig eth1 192.168.3.2 netmask 255.255.255.0

192.168.3.4

Routage statique
Exemple
192.168.3.3

192.168.1.3
192.168.1.

192.168.2.
.1

.2

192.168.3.

.1

R1

.2

R2

192.168.2.3

tape 2 : configuration des tables de routage


A : route add default gw 192.168.1.1
B : route add -net 192.168.3.0 gw 192.168.2.1
route add -net 192.168.1.0 gw 192.168.2.2

192.168.3.4

Routage statique
Exemple
192.168.3.3

192.168.1.3
192.168.1.

192.168.2.
.1

.2

192.168.3.

.1

R1

.2

R2

192.168.2.3

192.168.3.4

tape 2 : configuration des tables de routage


R1 :

route add -net 192.168.1.0 netmask 255.255.255.0 eth0

eth0 : 192.168.1.1

route add -net 192.168.2.0 netmask 255.255.255.0 eth1

eth1 : 192.168.2.2

route add -net 192.168.3.0 gw 192.168.2.1


R2 :

route add -net 192.168.2.0 netmask 255.255.255.0 eth0

eth0 : 192.168.2.1

route add -net 192.168.3.0 netmask 255.255.255.0 eth1

eth1 : 192.168.3.2

Couche Internet (2)


Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, EGP, BGP)

Routage Dynamique
Mise jour de la table de routage
Manuelle
table

routage statique

de routage entre manuellement par l'administrateur

commande
langage

route des stations unix

de commande des routeurs (ip route...)

Automatique
table

dynamique

de routage mis jour dynamiquement par le routeur

processus
changes

sur les stations et les routeurs


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
Distance =

contient la distance chacune d'entre elles


cot

Pr condition
Chaque noeud connat la distance vers tous ses voisins directs

tat des liens Dijkstra


Chaque noeud possde un carte complte du rseau
Contrairement

au"vecteur de distance", chaque noeud ne connat que


les tats voisins

Routage Dynamique
Types de routeurs
Routeurs noyaux
relient les rseaux

Routeurs externes
permettent une liaison des
rseaux autonomes entre eux
Protocoles : EGP (Exterior Gateway Protocol)
BGP (Border Gateway protocol)

Routeurs internes
routage l'intrieur d'un rseau autonome
Protocole : IGP (Interior Gateway Protocol)
RIP, OSPF, EIGRP

Rseau autonome

Rseau autonome

Protocoles de routages
RIP - Routing information protocol

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'intrieur de domaines peu tendus

Si aucun message pendant 180s, route inaccessible

un noeud construit sa table de routage en fonction des vecteurs de


distance reus de ses voisins

Protocoles de routages
RIP - Routing information protocol

Avantages
trs utilis et trs rpondu sur tous les quipements

s'adapte automatiquement (panne, ajout de rseau...)

Inconvnients

la distance ne tient pas compte de l'tat de la liaison (la charge,


dbit, cot 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


gnrant des faux messages RIP)
protocole trs efficace dans un petit rseau que l'on contrle
mais pas adapt aux grands domaines

Protocoles de routages
R3

1
1

A
R2
1

R1

10
10
192.168.1.0

10

R5

10

R4

Route de R1 A ?
RIP : R1 -> R5 -> R4 -> A
Supposons deux types de liens
rapides et lents
RIP n'est plus pertinent !

Protocole de type tat des liens


OSPF -Open Shortest Path First

Protocoles de routages
OSPF - Open Shortest Path First
R3

1
1

A
R2
1

R1

10
10
192.168.1.0

10

R5

10

Base de donnes topologique

R4

Arc
R1, R2
R1, R5
R2, R3
R3, R4
R3, R5
R4, R5
R4, 192.168.1.0

Cot
1
10
1
10
1
10
10

Protocoles de routages
OSPF - Open Shortest Path First
lection des meilleures routes
- Algorithme de Dijkstra -

Meilleure routre entre R1 et A passe par R2, R3 et R4 pour un cot total de 1 + 1 + 10 + 10 = 22

Protocoles de routages
OSPF - Open Shortest Path First
Dtermination de la table de routage
Extrait de la table de R1
Rseau de destination

Moyen de l'atteindre

Cot

192.168.1.0

R2

22

Rseau de destination

Moyen de l'atteindre

Cot

192.168.1.0

R4

20

Extrait de la table R5:

Protocoles de routages
OSPF - Open Shortest Path First
Recherche du plus court chemin

Protocoles de routages
OSPF - Open Shortest Path First
Recherche du plus court chemin
Calculez les plus courts chemins de A destination de H, puis de G en utilisant
lalgorithme de Dijkstra

Protocoles de routages
OSPF - Open Shortest Path First
Recherche du plus court chemin
Calculez les plus courts chemins de A destination de H, puis de G en utilisant
lalgorithme de Dijkstra

Protocoles de routages
OSPF - Fonctionnement
1. tat initial
Le

processus de routage OSPF est inactif sur tous les routeurs

2. tablir la liste des routeurs voisins


Chaque

routeur se prsente et fait connaissance avec ses voisins

message HELLO, my name is R1 and I'm an OSPF router


Les

voisins sauvegardent l'@IP de l'metteur dans leurs bases d'adjacences

Les

voisins rpondent en envoyant leurs IP l'metteur

L'metteur

ajoute les adresses IP de ses voisins dans sa base d'adjacence

Protocoles de routages
OSPF - Fonctionnement
3. lire le routeur dsign (DR) et le routeur dsign de secours (BDR)
- DR

routeur avec la plus grande priorit (=1 par dfaut)

routeur avec la plus grande adresse IP en cas de conflit

- BRG

routeur avec plus grande priorit juste aprs le DR

4. Dcouvrir les routes


Le

DR transmet aux routeurs un rsum de sa base de donnes topologique

Si

les donnes des routeurs sont plus rcentes, ils demandent une information
plus complte

Le

DR envoie l'intgralit de l'information demande

Les

routeurs (non DR ou BDR) transmettent les routes meilleures ou les routes


inconnues du DR.

Protocoles de routages
OSPF - Fonctionnement
5. lire les routes utiliser
Cration

de la table de routage -> Algorithme de Dijkstra

6. Maintenir la base topologique


Chaque

routeur envoie ses tats de liens au routeur dsign avec des


messages mises jour d'tat de lien

Le

DR et le BDR intgrent cette information leur base topologique

Ces

messages sont acquitts pour plus de fiabilit

Toute

modification de la topologie dclenche une nouvelle excution


de l'algorithme Dijkstra et une nouvelle table de routage est
constitue

Protocoles de routages
OSPF - Rsum
Protocole

de type tat des liens

chaque

noeud value le cot pour rejoindre ses voisins selon une certaine
mtrique (plusieurs mtrique peuvent tre utilises simultanment)
construit

un paquet contenant les informations relatives chacun de


ses liens (voisins)

le

diffuse tout le monde (par inondation)

calcule

rseau

la route de moindre cot pour atteindre chaque entit du

ensuite,

les routeurs s'changent uniquement les changements


dtects dans la topologie

chaque

noeud a une vision globale de la cartographie du rseau

Protocoles de routages
OSPF - Conclusion

Protocole complexe encore peu mis en oeuvre mais

remdie aux inconvnient de RIP

temps de convergence

OSPF adapt aux grands domaines

OSPF prend en compte plusieurs mtriques

autres avantages d'OSPF

permet de router les sous-rseaux

permet l'quilibrage de charge entre diffrentes routes de mme cot

inclut un systme d'authentification des messages

Routage Dynamique
Types de routeurs
Routeurs noyaux
relient les rseaux

Routeurs externes
permettent une liaison des
rseaux autonomes entre eux
Protocoles : EGP (Exterior Gateway Protocol)
BGP (Border Gateway protocol)

Routeurs internes
routage l'intrieur d'un rseau autonome
Protocole : IGP (Interior Gateway Protocol)
RIP, OSPF, EIGRP

Rseau autonome

Rseau autonome

Protocoles de routages
EGP Exterior Gateway Protocol

Premier protocole externe utilis dans internet (dsorm remplac par BGP)

Echange entre routeurs dclars comme pairs

deux routeurs de bordure s'changent l'intervalles rguliers la liste


des rseaux accessible dans leurs AS respectives
tout le trafic entre 2 AS passe par le mme chemin physique
EGP

IGP

Rseau autonome

Liaison inter AS

IGP

Rseau autonome

Protocoles de routages
BGP Border Gateway Protocol
Stratgie de routage
Besoin

de prendre en compte dans les stratgies de routage des


considrations d'ordres
politique

: certain AS peuvent refuser de faire transiter du trafic externe


ou le trafic sortant de tel AS prfre transiter par tel AS que tel autre...

de

AS

scurit : trafic en provenance de tel AS ne doit pas transiter par tel

conomique
La

: la traverse d'une AS peut tre payante...

prise en compte de ces stratgies ne fait pas partie du protocole


(configuration manuelle des routeurs l'aide de scripts)

Protocoles de routages
BGP Border Gateway Protocol
Principe de routage
Deux routeurs BGP tablissent une connexion TCP pour s'changer des infos
de routage:
numro de l'AS
liste des sous-rseaux de l'AS
distance relative vers chacun des sous-rseaux de l'AS
adresse IP du routeur (interne) d'accs ces rseaux

Quatre types de messages


message d'ouverture : ouverture d'une session BGP entre deux routeurs
message de mise jour : signaler un peer router le changement d'tat d'une
route interne l'AS
message de notification : clore une session BGP
message hello message signalant que tout va bien au routeur voisin (keep
Alive)

Protocoles de routages
BGP Border Gateway Protocol
Principe de routage

Type vecteur de distance mais les paires s'changent le chemin complet


correspondant chaque destination (pas uniquement le cot)

Exemple : pour la destination D, F utilise actuellement FGCD et


apprend d'autres routes de ses voisins (il peut alors choisir celle qu'il
prfre selon la stratgie choisie)

Organisation

CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux

Couche Transport
Services de la couche
Protocole UDP
Protocole TCP

Modle TCP/IP
Protocoles
Couche
Application

message

Couche
Transport

Couche
Internet
Couche
Rseaux

Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...

donnes

Couche
Transport

donnes
segment

donnes
datagramme

donnes
trame

bits

TCP, UDP

Couche
Internet

IP, ARP/RARP, ICMP

Couche
Rseaux

ETHERNET, ATM...

Couche transport
Services et protocoles de la couche
Cre un circuit de communication logique entre des applications
sexcutant sur des htes distants
Les protocoles de la couche transport ne sexcutent quau extrmits
Services transport vs rseau :
Couche rseau : Transfert de donnes entre machines
Couche transport : Transfert de donnes entre applications
Se fonde sur les services de la couche rseau et les amliore
IP

IP

IP

TCP
IP

IP

IP
IP
IP

IP
TCP
IP

ta
da

am
gr

Flux TCP

TCP
IP

IP

TCP
IP

IP

Couche transport
Services de transport
Livraison fiable (TCP)
rception des segments dans lordre
contrle de congestion
contrle de flot
mise en place de connection
Livraison non fiable (UDP)
sans garantie dordre
peut stendre au multicast
Services non disponibles
temps-rel, garantie de dlai
garantie de bande passante
multicast fiable

Couche transport
Multiplexage
Encapsuler les donnes de plusieurs applications
dans un mme segment avec un en-tte qui
permettra le dmultiplexage

Demultiplexage
Distribuer chaque segment
lapplication laquelle il est destin

Multiplexage/demultiplexage
Fond

sur le port de rception, le port dmission et les adresses IP


Les ports source et destination sont rpts dans chaque segment
Certaines applications utilisent des ports spcifiques

Couche transport

Couche transport
Le numro de port est un entier de 16 bits [0, 65535]
Le port 0 nest pas exploitable
Distribus par l'IANA Internet Assigned Numbers Authority

Cathgories des ports


1. Le segment [1, 1023]
rservs aux services bien connus
dsigns par l'IANA
mis en oeuvre par des applications avec des droits privilgis
2. Le segment [1024, 49151]
services enregistrs
numrs par lIANA
peuvent tre employs par des processus ayant des droits ordinaires
3. Le segment [49152, 65535]
attributions dynamiques

Couche transport
Visualisation

des services

Unix : /etc/services
Windows : C:\Winnt\System32\drivers\etc\services

Couche Transport
Services de la couche
Protocole UDP
Protocole TCP

M
Protocole UDP

UDP User Datagram Protocol

Protocole simple

o
d
e

Service au mieux, les segments UDP peuvents tre:

a
n
s

Perdus

Delivrs dans le dsordre

Aucun contrle de flux ou de rcupration derreurs

c
Mode sans connexion
o
Sans handshaking entre lmetteur et le rcepteur
n
n
Chaque segment UDP est trait indpendamment
des autres
e
Sans contrle de congestion
x
UDP peut mettre aussi rapidement quil le souhaite
i
o
n

Protocole UDP

Pourquoi UDP?

sans dlai de connexion

simple donc plus rapide (pas de dlai, pas d'tat entre metteur/rcepteur)

Petit en-tte

Souvent utilis pour les applications multimdias (streaming multimedia)

Tolrance aux pertes

Sensible au dbit

Autre utilisation dUDP

DNS

SNMP

Transfert fiable sur UDP

ajouter des mcanismes de compensation de pertes niveau applicatif

compensation de pertes adapte chaque appplication

Segment UDP
4 octets

Port source

Port destination

Longueur

Somme de contrle
Donnes

Port source : numro de port de lapplication mettrice du segment


Port destination : numro de port de l'application destinataire
Longueur : longueur de len-tte + donnes
La longueur minimal est 8
La longueur maximale est 65 535
Somme de contrle : code de contrle d'erreurs

Couche Transport
Services de la couche
Protocole UDP
Protocole TCP

Protocole TCP

TCP - Transport Control Protocol (Protocole de Contrle de Transmission)

Caractrisriques du protocole

Arrive garantie des donnes

Rcupration des erreurs par rmission

Re-assemblage des donnes dans le bon ordre

Vrification du flot de donnes afin d'viter une saturation du rseau

Multiplexage/dmultiplexage des donnes

Initialisation et fin d'une communication

Communication en mode connect

Ouverture dun canal

Communication Full-Duplex

Fermeture du canal

Segment TCP
4 octets

Port source

Port destination

NS - Numro de squence
NR - Numro de squence acquitt
Lg h.

Rserv

U
R
G

A
C
K

P
S
H

R
S
T

S F
Y I
N N

Somme de contrle

Taille fentre
Pointeur d'urgence

Options (0 ou plusieurs mots) + bourrage


Donnes
Port Source (2 oct) : numro de port de l'application mettrice
Port Destination (2 oct) : numro de port de l'application distante
NS (4 oct) : position du premier octet du segment transmettre
Si SYN = 1, NS = ISN (Initial Sequence Number)
NR (4 oct) : numro du prochain octet attendu
Lg h. (4 bits) : longueur de l'en-tte en multiple de 4 octets

Segment TCP
4 octets

Port source

Port destination

NS - Numro de squence
NR - Numro de squence acquitt
Lg h.

Rserv

U
R
G

A
C
K

P
S
H

R
S
T

S F
Y I
N N

Somme de contrle

Taille fentre
Pointeur d'urgence

Options (0 ou plusieurs mots) + bourrage


Donnes
Rserv (6 bits) : champ inutilis actuellement
CODE (6 bits) URG: si 1 le paquet doit tre trait de faon urgente
ACK: si 1 le paquet est un accus de rception
PSH (PUSH): si 1 les donnes collectes doivent tre transmises
lapplication sans attendre les donnes qui suivent
RST: si 1 la connexion est rinitialise
SYN: si 1 indique une demande d'tablissement de connexion
FIN: si 1 la connexion s'interrompt

Segment TCP
4 octets

Port source

Port destination

NS - Numro de squence
NR - Numro de squence acquitt
Lg h.

Rserv

U
R
G

A
C
K

P
S
H

R
S
T

S F
Y I
N N

Somme de contrle

Taille fentre
Pointeur d'urgence

Options (0 ou plusieurs mots) + bourrage


Donnes
Taille fentre (2 oct) :

nb d'octets que le rcepteur peut recevoir sans acquittement

Somme de contrle (2 oct) : permet de vrifier l'intgrit de l'en-tte


Pointeur d'urgence (2 oct):
Options (Taille variable):
Bourage (Taille variable) :

numro d'ordre partir duquel l'information devient urgente


diverses options
bits zro pour avoir une longueur en-tte multiple de 32 bits

Fiabilit des transferts


Client

Serveur
Segme
nt

temps

Segme
nt

ACK 2

NS = 9
2, 8 oc
t

ACK 1

temps
2

Serveur

Client
data
= 100

1, NR
ACK =
NS = 1
00, 16
oct dat
a
1,
ACK =

16
NR = 1

Notation :
(ACK = x) <=> (ACK = 1 et NR = x)

Fiabilit des transferts


Les pertes de segment sont dtectes par absence d'ack positif expiration
d'un temporisateur sur l'emetteur

Emetteur

Rcepteur
NS = 9
2, 8 oc
t

Timeout

Exemple : Perte d'ACK

data

100
ACK =

perdu

NS = 9
2, 8 oc
t

100
ACK =

data

Fiabilit des transferts


Les pertes de segment sont dtectes par absence d'ack positif expiration
d'un temporisateur sur l'emetteur

Emetteur

Rcepteur
NS = 9
2, 8 oc
t

Timeout

Exemple :

AC

data

0
10
=
K

NS = 9
2, 8 oc
t

100
ACK =

data

tablissement de connexion
Schma de connexion

Ports TCP doivent tre ouverts

Application sur le serveur l'coute (en attente d'une connexion)

Application sur le client fait une requte de connexion

Les paquets pour ouvrir la connexion


1. Client : Demande de connexion
SYN=1, ACK =0, ISNclient = x (squence initiale du client)
2. Serveur : Acceptation de connexion
SYN= 1, ACK= x+1, ISNserveur = y (squence initiale du serveur)
Options possibles (Taille maximale des paquets, convention pour le contrle
de flux sur rseau haut dbit... )

3. Client : Accus de rception ACK = y+1, SYN = 0

tablissement de connexion

Client

Serveur
SYN=1
,

A CK =

0, ISN

client

ACK
,
1
=
SYN

1,
= x+

ISN

=x

eur
serv

ACK =
y+1, SY
N=0

=y

Temps

Transfert de donnes
A
Envoi de
10 oct

B
NS = 5
6, ACK
A

=203

66
ACK A =
,
3
0
2
NS B=

Envoi de
10 oct

Envoi de
20 oct

NS = 6
6, ACK
A
:
B 223

K A=76
C
A
,
3
2
NS B: 2

Envoi de
2 oct

Fin de connexion
A

Fermeture ngocie
A demande la fin de connexion (FIN=1)
B acquitte la demande de A (ACK)
B envoie ses donnes en attente

FIN (se
q

= x)

)
q = x+1
e
s
(
K
AC
DATA

A acquitte les donnes (ACK)


B accepte de la fin de connexion (FIN)

ACK (D
ATA)

A acquitte de la fin de connexion (ACK)


q = y)
FIN (se
ACK (s
eq = y
+

1)

Utilisation du rseau

Gaspillage de bande passante !


Envoi de donnes
Attente
Envoi dacknowledge
Attente

On peut faire mieux !
fentrage

Fentre glissante
Principe

prendre de lavance sur les rponses --> fentre glissante

fixer un nombre de squence au bout duquel un accus de rception est ncessaire


Tampon de l'metteur

Tampon du rcepteur
Paqu
Paqu et i
et
Paqu i+1
et
Paqu i+2
et i+
3
(i )
ACK

Paqu
et i+
4

Le nombre de squence est stock dans le champ fentre de l'en-tte TCP/IP


La taille de la fentre n'est pas fixe
Le serveur peut demander une augmentation de la taille de la fentre

Fentre glissante
Gestion de la fentage Application
crit 2k
Contrle de flux TCP :
l'metteur

ne doit pas en
envoyer de donnes si le
tampon de rception n'a
pas l'espace libre
correspondant

Quand l'metteur est


bloqu, il peut :
envoyer

des donnes
urgentes (interruption de
l'application rceptrice)
envoyer des segments de
1 octet pour obliger le
rcepteur envoyer SEQa
et WIN et maintenir l'tat
actif de la connexion

Application
crit 2k

L'metteur
est bloqu

Tampon du
rcepteur

Seq

= 0,
2k

2k
N=
I
W
,
= 2k
K
C
A
Seq
= 20
48,
2k
0
IN =
W
,
= 4k
ACK
= 2k
WIN

Application
crit 1k

4K

Seq

vide
2k

Plein
Application
lit 2k

2K

= 40
96,1
k

1k

2K

Fentre glissante
Gestion de la fentage

Fentre glissante

Timeout

Exemple : expiration du timeout

Seq
= X,
500
oct X
Seq
=X
+ 50
0, 2
Seq
00 o
=X
ct
+ 70
0, 1
0 oc
t

Hors seq.
mmoris

X
qA =
e
S
ACK
X
qA =
e
S
ACK

Seq
= X,
500
oct
710
X+
=
Seq A
ACK

Hors seq.
mmoris

oct

Organisation

CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux

Couche Applications
Protocoles dns, telnet, shh, ftp, smtp, pop et http

Modle TCP/IP
Protocoles
Couche
Application

message

Couche
Transport

Couche
Internet
Couche
Rseaux

Couche
TELNET, HTTP, FTP,
Application DNS, SMTP...

donnes

Couche
Transport

donnes
segment

donnes
datagramme

donnes
trame

bits

TCP, UDP

Couche
Internet

IP, ARP/RARP, ICMP

Couche
Rseaux

ETHERNET, ATM...

Protocole DNS

Les adresses IP reprsentent une partie fondamentale de lInternet

Adressage IP

Routage IP (le paquet est rout selon sa destination)

Les utilisateurs prfrent des noms symboliques que des nombres

Comment
Comment
Comment
Comment

joindre des sites Web (URL) ?


changer du courrier lectronique ?
mmoriser les adresses IP de tous les sites Internet joindre ?
grer les changements dadresses 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
Problmes
collision des noms
dploiement grande chelle
changements dadresses et mise jour
DNS - Domain Name System (rsolution de noms de domaines)

Base de donnes hirarchique et distribue dans Internet

Contient des correspondances entre :

Nom ordinateur -> adresse IP

Passerelle de courrier dun domaine -> adresse IP

Traduction inverse : IP -> nom ordinateur

..., bien plus que seulement nom/adresse IP

Protocole DNS
Le DNS est constitu de
Espace de noms de domaines

base de donnes qui associe de manire structure des noms des @IP

Serveurs de noms

htes sur lesquels tournent un daemon (port 53)

Htes comptents pour rpondre sur une ou plusieurs zones

Resolvers

fonctions applicatives qui sollicitent la rsolution dune information (nom,


adresse) auprs dun serveur de nom

Protocole DNS
Espace de noms

Domaines de plus haut niveau (TLD - Top Level Domains)


rattachs un noeud racine reprsent par un point
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'hte
Hte
extrmit d'une branche, correspond une machine ou une entit du rseau
Adresse FQDN (Fully Qualified Domain Name) :
ensemble des tiquettes des noeuds d'une arborescence
Zone
ensemble de domaine (concerne un sous arbre du DNS)

Protocole DNS
Serveurs de noms
La hirarchie du DNS est partage en zone
Linformation contenue dans une zone est implante dans au moins deux
serveurs de nom

DNS Serveur Primaire


dfinit

une zone, ensemble de domaines sur lequel le serveur a autorit


il est mis jour par ladministrateur systme/rseaux

DNS Serveur Secondaire


Pour

des raisons de fiabilit


Il recopie priodiquement ses informations d'un serveur primaire
Recommandation: serveur primaire et secondaire sur des sites diffrents

Serveur racine
serveur

ayant autorit sur la racine de lespace de nommage (TLD)


Actuellement il y a 13 serveurs de ce type

Protocole DNS
Rsolution de noms de domaine
Resolver : un ensemble de fonctions qui font l'interface entre les applications et les
serveurs de noms.

Stratgie de fonctionnement
Interrogation locale
1.Le processus demande l'@ IP dune machine. Le resolver envoie la demande au
serveur local
2.Le serveur local reoit la demande et rpond directement au resolver

Protocole DNS
Rsolution de noms de domaine
Interrogation distante
1. Le processus demande ladresse IP dune
machine. Le resolver envoie sa
requte au serveur local.
2. Le serveur local reoit la requte, il
interroge le serveur racine pour avoir
ladresse dun serveur qui a l'autorit sur
la zone demande par le processus.
3.
4.
5.
6.

Le
Le
Le
Le

serveur
serveur
serveur
serveur

racine renvoie ladresse du serveur qui a lautorit sur la zone.


local interroge ce nouveau serveur distant.
distant renvoie linformation demande au serveur local.
local retourne la rponse au resolver.

Utilisation des caches


Si un processus redemande la mme machine distante, le serveur local interroge alors
directement le serveur distant sans passer par le serveur racine

Protocole Telnet

TELetypewrite Network Protocol

Systme de terminal virtuel (Travailler sur un systme distant comme sur un


systme local)

Connexion TCP

Utiliser pour ouvrir un mulateur de terminal distance et pour communiquer


avec dautres services rseau (HTTP, SMTP, FTP)

Attention : donnes transmises en clair !

Commande telnet
telnet <nom ou adresse IP du serveur> <numro de port>
Exemple : mulation dun navigateur web :
telnet liris.univ-lyon2.fr 80

Protocole SSH

SSH - Secure SHell

Port 22

Remplace Telnet pour lmulation de terminal

Comme Telnet, protocole et logiciel

Utilise un chiffrement asymtrique

Commande :
ssh -l <login> <nom ou adresse IP du serveur>
Connexion au serveur : ssh -l ksehaba liris.cnrs.fr

Protocole FTP

FTP - File Transfer Protocol (protocole de transfert de fichier)

Port 21

permet un partage de fichiers entre machines distantes

permet une indpendance aux systmes de fichiers des machines


clientes et serveur

permet de transfrer des donnes de manire efficace

Transmission sur deux canaux :

Un canal pour les commandes (canal de contrle), gr par


l'interprteur de commandes (PI : Protocol Interpreter)

Un canal pour les donnes, gr par un processus de


transfert de donnes (DTP : Data Transfer Process)

Notations :
Processus ct client :
Processus ct serveur :

USER-PI, USER-DTP
SERVER-PI , SERVER-DTP

Protocole FTP
DTP
PI

(Data Transfer Process): charg d'tablir la connexion et de grer le canal de donnes

(Protocol Interpreter): interprteur de protocole permettant de commander le DTP

SERVER-PI

:
charg d'couter les commandes provenant d'un USER-PI
d'tablir la connexion pour le canal de contrle
de recevoir sur celui-ci les commandes FTP de l'USER-PI
de rpondre et de piloter le SERVER-DTP

Le

USER-PI
charg d'tablir la connexion avec le serveur FTP
d'envoyer les commandes FTP
de recevoir les rponses du SERVER-PI
de contrler le USER-DTP si besoin

Protocole FTP
Types de commandes FTP :
Commandes de contrle d'accs
USER, PASS, CWD QUIT

Commandes du paramtrage de transfert


PORT, TYPE, PASV

Commandes de service FTP


DELE, RMD, MKD, PWD...

Rponses FTP

Connexion au serveur : ftp liris.cnrs.fr 21

Code 3 chiffres accompagn d'un texte


1yz : Rponse prliminaire positive
2yz : Rponse positive de ralisation
3yz : Rponse intermdiaire positive
4yz : Rponse ngative de ralisation
5yz : Rponse ngative permanente

Protocole SMTP
SMTP

- Simple Mail Transfert Protocol (Protocole Simple de Transfert de Courrier)

Service
Port

denvoie de courrier lectronique

25

Commandes SMTP
EHLO <machine> :
MAIL FROM: <exp> :
RCPT TO: <dest> :
DATA <message> :
QUIT :

prsentation du client
spcifie ladresse de lexpditeur
spcifie ladresse du destinataire
donnes envoyer (termines par .)
termine la session SMTP

Protocole SMTP
Champs den-tte
To: 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:

Envoyez-vous un email en vous connectant via telnet


au serveur mail de Lyon 2 (smtp.univ-lyon2.fr)
et en utilisant les commandes du protocole SMTP.

Protocole POP

POP - Post Office Protocol (protocole de bureau de poste)

permet de rcuprer les courriers sur un serveur distant (le serveur POP)

deux versions du protocole (POP2 port 109 et POP3 port 110)

Commandes POP2
HELLO :
FOLDER :
READ :
RETRIEVE:
SAVE :
DELETE :
QUIT :

Identification l'aide de l'adresse IP de l'ordinateur expditeur


Nom de la bote consulter
Numro du message lire
Numro du message rcuprer
Numro du message sauvegarder
Numro du message supprimer
Sortie du serveur POP2

Commandes POP3
USER :
PASS :
STAT :
RETR :
DELE :
LIST :
QUIT :

nom de l'utilisateur, doit prcder la commande PASS.


mot de passe de l'utilisateur
Information sur les messages contenus sur le serveur
Numro du message rcuprer
Numro du message supprimer
Numro du message afficher
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 requte :
Raliser une connexion TCP
Envoyer la requte
Recevoir la rponse
Librer la connexion
HTTP 1.1 :
Raliser une connexion TCP
Pour chaque requte :
Envoyer la requte
Recevoir la rponse
Librer la connexion

Plusieurs requtes par site Web


(par exemples, les fichiers images)
-> Problme de performances

Protocole HTTP

Communication en deux temps :

Requte

En-tte HTTP

Dcode

Rponse HTTP
Client

Serveur HTTP

Structure des Requtes/Rponses


1. Ligne de statut :

prcise le type de document demand

2. Lignes d'en-tte : informations supplmentaires sur la requte


et/ou le client
3. Lignes de Corps

Protocole HTTP
Requte HTTP
1. Ligne de requte
Mthodes
GET :
HEAD:
POST :
DELETE:

Requte de la ressource situe l'URL spcifie


Requte de l'en-tte de la ressource situe l'URL spcifie
Envoi de donnes au programme situ l'URL spcifie
Suppression de la ressource situe l'URL spcifie

URL - Uniform Resource Locator


Syntaxe url avec http : http ://<host> :<port>/<path>?<searchpath>
host : nom de machine ou une adresse IP
Port : numro de port (80 par dfaut)
path : slecteur au sens du protocole http
Searchpath : la chane dinterrogation

Version du protocole :
Forme HTTP-Numro de version. Par exemple HTTP/1.1

Protocole HTTP
Requte HTTP
2. Champs d'en-tte (facultatif)
Informations supplmentaire sur la requte et/ou le navigateur
Syntaxe Type en-entte : valeur en-tte

Exemple d'en-tte
User-Agent :

informations sur le client (nom et la version du navigateur, systme


d'exploitation...)
Accept-Language: Langage attendu par le navigateur

3. Corps

Lignes optionnelles spares des lignes prcdentes par une ligne vide

Permettent l'envoie des donnes au serveur (commande POST)

Protocole HTTP
Requte HTTP
Exemples:
Ligne de requte

GET http://www.google.com HTTP/1.0


Accept : text/html

Champs d'en-tte

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 dfaut


$ telnet clx.anet.fr 80
GET /
\n
\n

Renvoie le document mentionn dans le chemin complet


$ telnet 10function.kicks-ass.org 80
GET /books/ruhacker.txt
\n
\n
$ telnet liris.cnrs.fr 80
GET /ksehaba/Reseaux/Test.html
\n
\n

Protocole HTTP
Rponse HTTP
1. Ligne de statut

Version du protocole utilis


HTTP-Numro de version

Code

de statut :
valeur numrique (xxx) qui dcrit le statut de la rponse
1xx:
2xx:
3xx:
4xx:
5xx:

Nest pas utilis, Futur Use


Succs, laction excute correctement
Redirection, reprendre linterrogation avec une autre formulation
Erreur cot client, erreur de syntaxe ou ne peut tre accepte
Erreur cot serveur, erreur interne due lOS

Signification

du code

2. En-tte
Informations supplmentaires sur la rponse et/ou le serveur

3. Corps

Le document demand

Protocole HTTP
Rponse HTTP
Exemple :
$ telnet localhost 80
GET / HTTP/1.0
\n
\n

Organisation

CM
Plan
Modles en couches : OSI & TCP/IP
Couche internet (IP, ICMP, ARP/RARP)
Couche transport (TCP, UDP)
Couche application (HTTP, DNS, SMTP, FTP...)
Programmation Rseaux

Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java

Modle client-serveur dfinition


Application client/serveur

application qui fait appel des services distants travers dun


change de messages (les requtes) plutt que par un partage de
donnes (mmoire ou fichiers)

Serveur
programme offrant un service sur un rseau (par extension,
machine offrant un service)

Client
programme qui met des requtes (ou demandes de service). Il
est toujours linitiateur du dialogue

Exemple de client/serveur
Un

serveur de fichiers

Des

clients qui demandent des fichiers

Comment
un

grer la concurrence ?

processus serveur => un client servi

plusieurs
Quel

clients => il va falloir faire des fork() !!!

protocole utiliser ?

le

client envoie le nom du fichier

le

serveur renvoie la taille puis les donnes

comment

gre-t-on les erreurs ?

Mode connect/nom connect


Mode

connect (TCP) :

problmes
primitives
gestion
pas
Mode

de communications grs automatiquement,


simples dmission et de rception,

de la connexion coteuse,

de dlimitation des messages dans le tampon.

non connect (UDP) :

consomme
permet
gestion

moins de ressources systmes,

la diffusion,

de toutes les erreurs la main : il faut rcrire la couche


transport !!!

Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java

Les sockets
Interface

daccs au rseau

dvelopp
n

dans Unix BSD (Berkeley Software Distribution)

port, @ IP, protocole (TCP, UDP, ...)

Couches Session Application

Client
n port :2345
@ IP : 193.168.20.1
@ IP : 193.168.20.1
@ Ethernet

Serveur
Couche Transport (TCP, UDP)

Couche Rseau (IP)


Couche Liaison

n port :80
@ IP : 193.168.20.2
@ IP : 193.168.20.2
@ Ethernet

L'API socket
Cration

de socket : socket(family, type, protocol)

Ouverture
client

de dialogue :

: connect(...)

serveur
Transfert
mode

: bind(..), listen(...), accept(...)

de donnes :
connect : read(...), write(...), send(...), recv(...)

mode

non connect : sendto(...), recvfrom(...),


sendmsg(...), recvmsg(...)

Clture

du dialogue :

close(...),

shutdown(...)

Client/Serveur
en mode non connect
Client
socket()
bind()
sendto()

Serveur
Cration de la socket
Assignation nport - @ IP

envoi requte

socket()
bind()
recvfrom()
bloqu jusqu' la rception de la requte

recvfrom()
bloqu jusqu' la rception de la rponse

traitement de la requte
envoi rponse

sendto()

traitement de la rponse
close()

Fermeture de la socket

close()

Client/Serveur
en mode connect
Serveur

Client
socket()

socket()

Cration de la socket

bind()
listen()
accept()
connect()
write()

tablissement de la connexion

envoi requte

read()
bloqu jusqu' la rception de la requte

read()
bloqu jusqu' la rception de la rponse

traitement de la requte
envoi rponse

write()

traitement de la rponse
close()

Fermeture de la socket

close()

La primitive socket()
int socket(int family, int type, int protocol)
family

AF_INET

: pour des communications Internet

AF_UNIX

: pour des communications locales

type

ou mode de fonctionnement :

SOCK_STREAM
SOCK_DGRAM
SOCK_RAW
protocol

: mode connect (TCP)

: mode dconnect (UDP)

: accs direct aux couches basses (IP)

IPPROTO_UDP

(protocole UDP avec SOCK_DGRAM)

IPPROTO_TCP

(protocole TCP avec SOCK_STREAM)

IPPROTO_ICMP

(protocole ICMP avec SOCK_RAW)

IPPROTO_RAW

(accs direct IP avec SOCK_RAW)

La primitive connect()
int connect(int sock_desc, struct sockaddr * @_serveur, int lg_@)
sock_desc : descripteur de socket retourn par socket()
@_serveur : adresse IP et n de port du serveur distant
Exemple de client :
int sd;
struct sockaddr_in serveur; // @IP, n port, mode
struct hostent
remote_host; // nom et @IP
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
serveur.sin_family = AF_INET;
serveur.sin_port = htons(13);
remote_host = gethostbyname(brassens.upmf-grenoble.fr);
bcopy(remote_host->h_addr, (char *)&serveur.sin_addr,
remote_host->hlength); // Recopie de ladresse
connect(sd, (struct sockaddr *)&serveur, sizeof(serveur));

La primitive bind()
int bind(int sock_desc, struct sockaddr *my_@, int lg_@)
sock_desc : descripteur de socket retourn par socket()
my_@ : adresse IP et n de port auxquels le serveur veut rpondre
Exemple de serveur :
int sd;
struct sockaddr_in serveur; // @IP, n port, mode
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
serveur.sin_family = AF_INET;
serveur.sin_port = 0; // Laisse le systme choisir un port
serveur.sin_addr.s_addr = INADDR_ANY;
// Autorise des connexions de nimporte o
bind(sd, (struct sockaddr *)&serveur, sizeof(serveur));

La primitive listen()
int listen(int sock_desc, int backlog)
sock_desc : descripteur de socket retourn par socket()
backlog : nombre maximum de connexions en attente dtre acceptes
Exemple de serveur :
int sd;
struct sockaddr_in serveur; // @IP, n port, mode
sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
serveur.sin_family = AF_INET;
serveur.sin_port = 0; // Laisse le systme choisir un port
serveur.sin_addr.s_addr = INADDR_ANY;
// Autorise des connexions de nimporte o
bind(sd, (struct sockaddr *)&serveur, sizeof(serveur));
listen(sd, 5);

La primitive accept()
int accept(int sock_desc, struct sockaddr *client, int lg_@)
sock_desc : descripteur de socket retourn par socket()
client : identit du client demandant la connexion
accept renvoie le descripteur de la nouvelle socket cre

Serveur

Client
sc = socket()

ss =socket()

Cration de la socket

bind(ss)
listen(ss)
sa = accept(ss)
connect(sc)
write(sc)

tablissement de la connexion

envoi requte

read(sa)
bloqu jusqu' la rception de la requte

read(sc)
bloqu jusqu' la rception de la rponse

traitement de la requte
envoi rponse

write(sa)

traitement de la rponse
close(sc)

Fermeture de la socket

close(sa)

Les primitives d'envoi/rception


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);

drap : options de contrle de la transmission (consulter le man)

Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java

C a n a u x b id ir e c t io n n e ls

C o m m u n ic a t io n
e n tr e
deu x
a p p l ic a t io n s
d i s t a n t e s p a r d e s c a n a u x d e b id ir e c t io n n e l s
(s o c k e ts ).
d e u x ty p e s d e s o c k e ts e n J a v a :

S t r e a m s o c k e t s ( T C P ) : c o m m u n ic a t io n e n m o d e
c o n n e c t , c a r a c t r is e s p a r le c a r a c t r e c o n t in u d u
f lu x d e d o n n e s ( o r d r e c o r r e c t - d o n n e s n o n
c o rro m p u e s ).
D a t a g r a m s o c k e t s ( U D P ) : c o m m u n ic a t io n e n m o d e
n o n - c o n n e c t : p lu s g r a n d e r a p id it , m a is f ia b ilit
m o in d r e ( p e r t e , d u p lic a t io n o u d s o r d r e p o s s ib le s ) .

C la s s e s d e ja v a .n e t

C o n t e n t H a n d le r
D a ta g ra m P a c k e t
D a ta g ra m S o c k e t
In e tA d d re s s
S e rv e rS o c k e t
S ocket
S o c k e tIm p l
U R L
U R L C o n n e c t io n
U R LE ncoder
U R L S tr e a m H a n d le r

: b a s e p o u r g r e r c o n t e n u s M IM E
U D P
: g e s tio n d e s a d re s s e s
TC P

U R L

In e tA d r e s s
public final class InetAddress {
public String getHostName()
public byte[] getAddress()
public String getHostAddress()
public int hashCode()
public boolean equals(Object obj)
public String toString()
public static synchronized InetAddress
getByName(String host) throws UnknownHostException
public static synchronized InetAddress
getAllByName(String host)[] throwsUnknownHostException
public static InetAddress
getLocalHost() throws UnknownHostException
}

S e rv e rS o c k e t
public final class ServerSocket {
public ServerSocket(int port)
throws IOException
public ServerSocket(int port, int backlog)
throws IOException
public InetAddress getInetAddress()
public int getLocalPort()
public Socket accept()
throws IOException
public void close()
throws IOException
public String toString()
public static synchronized void
setSocketFactory(SocketImplFactory fac)
throws IOException
}

S ocket
public final class Soc ket {
public Sock et(String host, int port)
throws UnknownHostException , IOException
public Sock et(String host, int port, boolean stream )
throws IOException
public Sock et(InetAddress address , int port)
throws IOException
public Sock et(InetAddress address , int port, boolean stream )
throws IOException
public InetAddress getInetAddress()
public int getPort()
public int getLocalPort()
public InputStream getInputStream() throws IOException
public Outp utStr eam getOutputStream () throws IOException
public synchronized void close() thr ows IOException
public String toString()
public static synchronized void
setSocketImplFactory(SocketImplFactory fac)
throws IOException
}

Utilisation des sockets TCP / IP


Client

Serveur

1- Cration d'un client et tentative de


connexion
Construction d'un objet de type Socket
(paramtres : hte et n de port)

1- Enregistrement du service Construction


d'un objet de type ServerSocket (paramtres
: n de port et nombre connexions)

2- Echange
OutputStream
InputStream

3- Echange
InputStream
OutputStream

3- Fermeture (close())

4- Fermeture (close())

2- Attente d'une demande de connexion du


client
accept() retourne, lorsqu'une connexion est
accepte, un objet de type Socket

Exemple de code : Serveur (1)


import java.net.*;
import java.io.*;
public class Serveur {
ServerSocket srvk;
public Serveur (int port) throws IOException {
srvk = new ServerSocket (port);
}
public void go (){
while (true){
try {
Socket sck = srvk.accept ();
OutputStream os = sck.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
String msg = "REPONSE DE SERVEUR";
Object obj = (Object) msg;
oos.writeObject(obj);
sck.close ();
}
catch (IOException e) {}
}
}

E x e m p le d e c o d e : S e r v e u r ( 2 )
public static void main (String args [])
throws IOException {
Serveur s = new Serveur (Integer.parseInt (args[0]));
s.go ();
}
}

Exemple de code : Client (1)


import java.net.*;
import java.io.*;
public class Client {
Socket so;
public Client (String host, int port) throws IOException {
so = new Socket (host, port);
}
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){}
}
public void stop (){
try { so.close ();}
catch (IOException e) { }
}

Exemple de code : Client (2)

public static void main (String args [])


throws IOException {
Client c = new Client (args[0], Integer.parseInt (args[1]));
c.go ();
c.stop ();
}

Bilan

Modles en couches
Notion de protocole
Modle de rfrence : OSI de ISO
Modle utilis sur Internet : TCP/IP

Dlimitation des donnes


Notion de fanion
Notion de transparence

Couche Internet (1)


Protocole IP
Gestion de la fragmentation
ARP, ICMP
IPv6

Couche Internet (2)


Routage
Routage statique (Commandes)
Routage dynamique (Protocoles RIP, OSPF, RGP, BGP)

Couche Transport
Services de la couche
Protocole UDP
Protocole TCP

Couche Applications
Protocoles dns, telnet, shh, ftp, smtp, pop et http

Programmation Rseau
Applications Client/serveur
Mode connect/mode non connect
Programmation en C
Programmation en java