Sie sind auf Seite 1von 57

Programmation

Rseau

Jean-Baptiste.Yunes@univ-paris-diderot.fr
!
UFR Informatique
!
2013-2014
1

Programmation Rseau

Introduction

Ce cours nest pas un cours de rseau

on y dtaillera pas de protocoles de basniveau (mais on en parlera)

Ce cours est un cours de programmation


rseau

on y apprend crire des applications


ncessitant de la communication

2

Introduction

Pour le programmeur, quest-ce quun


rseau?

un ensemble de services

un moyen de communication (ensemble de


machines/applications atteignables)

3

Introduction

Il existe au moins deux grands modes de


communication :

par paquet (datagram) : la poste en est un


bon exemple

dans ce mode on est pas connect


(encore que), on est juste atteignable

en flux (stream) : la tlphonie en est un


bon exemple

dans ce mode on est connect


4

Introduction

dans le mode paquet :

il nexiste pas dordre dans la dlivrance des


paquets

il nexiste pas non plus de fiabilit

un paquet post en premier peut arriver


en dernier

un paquet envoy peut tre perdu

intrt : souple et lger...


5

Introduction

dans le mode flux :

les informations sont reues dans lordre


exact de leur mission

il ny a pas de perte

inconvnient : ncessite ltablissement dune


connexion et consomme donc des ressources
pour sa gestion

6

Introduction

Comment ceci fonctionne-t-il dans la ralit ?

le service de base est un mode paquet non fiable

la perte peut tre compense par des rmissions

la dgradation peut tre compense par des


codages

Comment passe-ton dun tel service des services


fiables ?

en superposant des couches logicielles


agrmentant les couches infrieures de proprits
attendues
7

Introduction

le modle de rfrence est le modle ISO/OSI


(Open System Interconnection) en 7 couches

2010 escotal.com

8

Introduction

Couche

Protocoles

Application

FTP, HTTP, SMTP, POP, SSH,


TELNET, IMAP

Prsentation

SSL, WEP, WPA, Kerberos

Session

Ports

Transport

TCP, UDP, SPX

Rseau

IPv4, IPv6, ARP, IPX

Liaison

802.11, WiFi, ATM,


Ethernet, ISDN

Physique

Fibre, Cble, Radio


9

Introduction

Le modle Internet est 4 couches

skokberg.eu

10

Introduction

Couche

Protocoles

Application

FTP, HTTP, IMAP, POP

Transport

TCP, UDP

Internet

IPv4, IPv6, IPsec, ICMP

Liaison

ARP, PPP, DSL, Ethernet

11

Introduction

Wikipedia

12

Introduction

Rappelons que dans le monde Internet la


normalisation est disponible sous la forme de
RFCs (Request For Comments)

documents officiels recouvrant tous les


aspects de lInternet

http://www.ietf.org/rfc.html

13

Introduction

Les deux couches qui nous intressent seront


donc:

la couche transport :

UDP (User Datagram Protocol), RFC768

TCP (Transmission Control Protocol),


RFC793

la couche application :

trs varie
14

Introduction

Le couche transport fournit un ou plusieurs services de


communication entre applications (par exemple TCP ou UDP)

pour communiquer, ces applications doivent se connatre

il existe donc un mcanisme de nommage

une application fournit un service particulier sur une


machine donne

le service est identifi par un port

la machine est identifie par une adresse

ces informations sont similaires celles joues par un


numro de bureau (port) dans une administration
donne (machine)
15

Introduction

un couple (adresse,port) est un point de


communication

toute communication ne peut seffectuer


quentre au moins deux points de
communications

lmetteur

le (ou les) receveur(s)

16

Introduction

une machine peut-tre identifie par :

un nom Internet (pas strictement ncessaire)

par exemple : www.samsung.com


une machine peut possder plusieurs noms

par une adresse Internet (toute machine


connecte au rseau en possde une)

en ralit il sagit de ladresse dun dispositif


rseau sur une machine (ex : 211.45.27.202)

une adresse par dispositif


mais possiblement plusieurs dispositifs
pour une machine
17

Introduction

Les adresses correspondent une organisation


structurelle du rseau

Les noms correspondent une organisation


logique

Les machines prfrent les nombres

Les humains prfrent les noms

Pensez la situation des liens et des inuds


dans les systmes de fichiers de la famille
Unix inudstructure disque,
lienstructure logique
18

Introduction

Le nom entirement qualifi dune machine


est une reprsentation hirarchique de la
structure logique laquelle elle appartient

Le nom est constitu de deux parties


www.informatique.univ-paris-diderot.fr

machine

domaine

19

Introduction

La spcification du domaine reprsente la


hirarchie des responsabilits

exemple : lufr dinformatique de luniversit


paris diderot situe dans le domaine franais

le domaine le plus droite est appel domaine


de premier niveau (top-level domain)

en gros, deux types :

gnriques (ex. : .com, .edu, )

nationaux (ex. : .fr, .tz, )


20

Introduction

pour www.informatique.univ-parisdiderot.fr

fr est le domaine national attribu par lICANN la


france avec dlgation lAFNIC

univ-paris-diderot est le sous-domaine


attribu par lAFNIC luniversit paris diderot avec
dlgation la DSI de luniversit

informatique est le sous-domaine attribu par la


DSI lUFR avec dlgation au service informatique
de lUFR dinformatique

www est le nom dune des machines sous la


responsabilit de lUFR dinformatique
21

Introduction

Les adresses aussi sont structures

mais la structure est un reflet de la


structure physique du rseau, du moins en
thorie

dans ce cours la structure des adresses ne


nous intresse pas

cela relve du domaine pur des rseaux

22

Introduction

Le service permettant de faire la translation dun nom


en une adresse sappelle le service de nom, cest un
annuaire

le systme aujourdhui le plus rpandu est le DNS


(RFC882) qui est un service dannuaire distribu

Important : les communications ncessitent la


connaissance des adresses Internet des machines
concernes

On notera au passage quil existe aujourdhui deux


types dadresses : IPv4 et IPv6 (respectivement 4 et 8
octets)

deux rseaux qui cohabitent


23

Introduction

le service dannuaire distribu peut tre


interrog laide doutils (des APIs sont
disponibles comme on le verra plus tard)

Outils :

dig

nslookup (souvent considr comme


obsolte)

24

Introduction

25

Introduction

26

Introduction

27

Introduction

Dautre part, sur une machine donne plusieurs


communications peuvent prendre place
simultanment

par consquent il doit tre possible de les


distinguer, comme pour diffrencier les
tlphones fixes dans une entreprise, il existe la
notion de port

toute communication ncessite lutilisation


dun port

les ports sont donc utiliss pour assurer le


multiplexage, un flux est identifi par deux
couples (adresse,port)

Les ports UDP et TCP sont distincts (deux espaces)


28

Introduction

Il existe essentiellement trois types de ports :

les ports reconnus, de numro compris


entre 0 et 1023

les ports rservs, de numro compris


entre 1024 et 49151

les ports libres, de numro compris entre


49152 et 65535

29

Introduction

Les ports reconnus (Well-known ports) sont


utiliss par des services rseau dusage
gnral et commun :

20 et 21 pour FTP

25 pour SMTP

80 pour HTTP

ce qui signifie que pour tablir une connexion


avec un serveur web, il faut sadresser au port
80 de la machine concerne
30

Introduction

Les ports rservs (Registered ports) :

certains correspondent des services dusage


moins gnral (souvent des services propritaires)

17500 pour Dropbox

nimporte quelle application peut en faire lusage


quelle dsire

Les ports libres (Dynamic, private or ephemeral


ports)

normalement utiliss pour des dures limites


31

Introduction

Extrait du fichier /etc/services


32

Introduction

sur les machines de la famille Unix, la


configuration rseau (dune interface) peuttre obtenue par la commande ifconfig

ifconfig : configuration des interfaces

une machine peut possder plusieurs


interfaces

33

Introduction
boucle locale

tunnel

ethernet

WiFi
Firewire

Virtual Box

VMWare

34

Introduction

Pour communiquer entre deux machines


distantes spares par des appareillages de
relais, il est ncessaire de trouver un chemin
(on dit une route)

il existe donc sur le rseau de quoi


permettre le guidage (on dit le routage)
des paquets

la consultation (sous Unix) des tables locales


de routage seffectuent laide de la
commande netstat
35

Introduction

36

Introduction

On peut observer les routes suivies par des paquets


sur le rseau par lintermdiaire de la commande
traceroute [-P protocole] machine

Attention traceroute ne fournit quune route


probable

Chaque paquet peut suivre une route diffrente


pour atteindre un point donn partir dune
mme source

Lalgorithme utilis par traceroute ne permet


pas dobtenir une route rellement utilise (en
thorie non, en pratique oui)

37

Introduction

38

Introduction

On peut tester si une machine est prsente (si


le service nest pas interdit pour des raisons
de scurit) sur le rseau en utilisant le
service de trs bas-niveau dcho rseau. Ce
service est habituellement dsign sous le
vocable ping.

Ce service peut-tre obtenu laide de la


commande ping

39

Introduction

40

Introduction

La commande hostname permet dobtenir le


nom de la machine sur laquelle on est
connect

41

Introduction

La commande netstat permet aussi dobtenir


des informations relatives aux connexions
connues de la machine
netstat [-a] [-f famille] [-p protocole]

42

Introduction

43

Introduction

Il existe une commande permettant dtablir


une liaison TCP interactive (i.e. dont
lentre standard et la sortie standard
correspondent un bout de la liaison)
telnet nom_ou_adresse [port]

44

Introduction

clavier

on tablit ici une connexion sur le service


echo tcp dun serveur

rponse
du
serveur

45

Introduction

On tablit ici une liaison vers le service


daytime en tcp

46

Introduction

Ltablissement dune liaison UDP peut tre


aussi obtenue par emploi de la commande
netcat
nc -u machine port

47

Introduction

Ces deux commandes permettent de


fabriquer des applications rseau moindre
cot

mais elles seront ncessairement primitives

48

Introduction

Le principe gnral de ltablissement dune connexion rseau est

que lun des deux points de communication [m,p] doit tre


plac en attente dune demande de connexion (mode serveur)

lautre point de communication [m,p] peut alors demander


ltablissement dune connexion (mode client)

la partie serveur dcide daccepter ou non la connexion et si oui

un nouveau point de communication [m,p] est construit (


laide dun port phmre) et connect avec le point de
connexion du client

une connexion est alors tablie entre [m,p] et [m,p]

ce moment les deux points sont fonctionnellement


interchangeables (symtrie de la liaison)
49

Introduction

Lobjet standard de communication est la socket

de quoi sagit-il ?

il faut avoir lesprit que dans lunivers


inspir dUnix tout est fichier

un abus de langage pour signifier


luniformit doprations dentres/
sorties: tout se manipule de la mme
manire en matire dentres/sorties

y compris le rseau... o lobjet sousjacent correspondant est appel socket


50

Introduction

Une communication standard stablit de faon


suivante :

la partie serveur est passive et attend toute


demande de connexion sur un port donn

la partie cliente choisit un port depuis lequel


elle va mettre sa demande de connexion

le serveur accepte la demande en tablissant


la connexion sur un port de service

lorsque tout est tabli, on aura bien un


couple identifiant la connexion
51

Endianess

Le codage

Puisquil sagit de communiquer entre


machines diverses et varies, il est ncessaire
de rappeler que la reprsentation des
nombres aussi est varie. Pour les entiers, il y
a deux grands types de codage :

petit-boutiste ou petit-boutien (littleendian)

grand-boutiste ou grand-boutien (bigendian)


52

Endianess

On rappelle que le codage (univoque) dun


nombre n en base b scrit :
n=

c b
i

comme les machines utilisent des octets, on


peut considrer la base comme gale 256

pour un entier de 32 bits, 4 octets lcriture


est donc :
n = c3.2563+c2.2562+c1.2561+c0.2560
53

Endianess

se pose donc le problme du stockage de ces


4 octets en mmoire, deux grandes
possibilits (parmi dautres) :

petit-boutien (petit bout dabord) :


!

adresse

m+1

m+2

m+3

chiffre

grand-boutien (grand bout dabord) :


adresse

m+1

m+2

m+3

chiffre

c
54

Endianess

dans les communications ce problme est


parfois dnomm the NUXI problem ...

le protocole IP a donc ncessit de faire un


choix :

cest celui du grand-boutisme

cet ordre est aussi dnomm NBO


(Network Byte Ordering)

55

Endianess

il peut tre ncessaire deffectuer soi-mme, les


conversions du codage courant vers NBO :

en C, il existe des 4 fonctions pour convertir


depuis lhte vers le rseau (ou vice-versa) les
types entiers de 16 bits et entiers de 32 bits
appels respectivement (short et long) :
#include <arpa/inet.h>

uint32_t
uint16_t
uint32_t
uint16_t

htonl(uint32_t
htons(uint16_t
ntohl(uint32_t
ntohs(uint16_t

hostlong);
hostshort);
netlong);
netshort);
56

Endianess

en C il faut bien prendre soin de raliser les


conversions pour toute donne utilise par
les protocoles rseau...

en Java, ce nest pas ncessaire, lAPI fait la


conversion elle-mme

car le codage des entiers en Java est


standardis

57