40
Cours 3 [email protected] http://www.lri.fr/~kn UNIX ET PROGRAMMATION WEB

UNIX ET PROGRAMMATION WEB Cours 3 - …kn/teaching/upw/cours/pdf/03.pdf · 3/40 Définitions Réseau : Réseau informatique : Protocole : ensemble de nœuds reliés entre eux par

Embed Size (px)

Citation preview

Cours [email protected]

http://www.lri.fr/~kn

UNIX ET PROGRAMMATION WEB

2/40

Plan

1 Systèmes d'exploitation (1/2) ✔2 Systèmes d'exploitation (2/2) ✔3 Réseaux, TCP/IP

3.1 Principes des réseaux3.2 TCP/IP3.3 Adressage, routage, DNS3.4 UTF­8

3/40

Définitions

Réseau :

Réseau informatique :

Protocole :

ensemble de nœuds reliés entre eux par des liens (ou canaux).

réseau où les nœuds sont des ordinateurs. Les liens sonthétérogènes (câbles, liaisons radio, liaisons satellites, …)

ensemble de conventions permettant d'établir une communication maisqui ne font pas partie du sujet de la communication.

4/40

Organismes de Standardisation

ISO :

IETF :

IEEE :

W3C :

Industrie :

Plusieurs organismes interviennent à différents niveaux

International Organisation for Standardisation, standardise TOUT. Ellepublie un standard pour les réseaux informatiques (le modèle Open SystemInterconnection).

Internet Engineering TaskForce, organisme ouvert qui standardise lesprotocoles TCP / IP

Institute of Electrical and Electronic Engineers Standard Association,association originellement Américaine (maintenant internationale). Definitcertains standards (ex: IEEE 802.11 a/n, …).

World Wide Web Consortium standardise les formats du Web commeHTML, SVG, XML, …

les gros acteurs ont énormément d'influence (Google, Microsoft, Cisco,…)

5/40

Les 7 couches du modèle OSI

N   Unité Nom Utilisation7 — Application Logiciel6 — Presentation Chiffrement5 — Session Connexion, identification4 Segment Transport Intégrité des données3 Paquet Network Acheminement (routage)2 Trame Data­link Encodage sur le support physique1 Bit Physical Matériel (voltage, nature des câbles, …)

Chaque couche règle de manière transparente pour les couches supérieures unproblème spécifique. Une couche de niveau N n'a aucun contrôle sur une couchede niveau inférieur.Ce modèle constitue la norme ISO/IEC 7498­1.(ISO 7497 le engrais, ISO 7495 concerne les farines de blé tendre, ISO 7490 lesimplants dentaires, …).

6/40

Plan

1 Systèmes d'exploitation (1/2) ✔2 Systèmes d'exploitation (2/2) ✔3 Réseaux, TCP/IP

3.1 Principes des réseaux ✔3.2 TCP/IP3.3 Adressage, routage, DNS3.4 UTF­8

7/40

Modèle TCP/IP

TCP :

IP :

Modèle en 4 couches, similaire au modèle OSI :

N   Nom Description Eq. OSI4 Application HTTP, Bitorrent, FTP, … 5, 6, 73 Transport TCP, UDP, SCTP, … 42 Internet IP (v4, v6), ICMP, IPsec, … 31 Link Ethernet, 802.11, … 1, 2

Transfer Control Protocol, s'occupe de la bonne transmission desdonnées (détection d'erreurs, retransmission en cas de perte, …)

Internet Protocol, s'occupe de deux choses :donner une adresse unique aux machinesrouter les paquets, c'est à dire les transmettre à une autre machine,

plus proche de la destination finale

⏹ ⏹

8/40

Structure d'un paquet IPv4

14 champs (13 obligatoires, 1 optionnel) :

0—3 4—7 8—13 14—15 16—18 19—310 version longueur en­tête DSCP ECN longueur totale

32 identification flags position du fragment64 TTL Protocole Somme de contrôle96 Adresse IP de la source

128 Adresse IP de la destination160 Options (si longueur en­tête > 5)> 160 Données

Le paquet est transmis en big endian (c'est à dire les octets de poids fort enpremier).

9/40

Détail des champs obligatoires

Version :Longueur en­tête :DSCP :

ECN :Longueur totale :Identification :Flags :

Numéro de version du protocole (4)Longueur de l'en­tête en mots de 32bits (5 si pas d'option)

Differentiated Service Code Point, code du type de service (Voix sur IP,vidéo, jeu, message, …)

Explicit Congestion Notification, utilisé pour la gestion de l'engorgementen octets, en­tête + données

numéro servant à identifier le fragmentbit 0 toujours à 0, bit 1 à 1 si le paquet ne doit pas être fragmenté, bit 2 à 0

si c'est le dernier paquet d'un ensemble fragmenté

10/40

Détail des champs obligatoires (suite)

Position du fragment :TTL :

Protocole :Somme de contrôle :

adresse source :adresse destination :

position du fragment par rapport à un paquet non fragmentéTime to Live compteur décrémenté à chaque fois que le paquet traverse

un nœud. Si 0 le paquet est jeté et une notification est envoyée à l'adressede la source.

Code du protocole utilisé dans la partie donnéesnombre calcule à partir de l'en­tête, vérifiée à chaque

retransmissionAdresse IP de l'envoyeur

Adresse IP du receveur

11/40

Champs optionnels

Routage spécifié :Routage large :Enregistrement de route :

Les champs optionnels commencent par un octet d'identification. Plusieursoptions possibles :

Liste de tous les nœuds à suivre pour arriver à la destinationListe de nœuds que le paquet doit traverse

Liste de nœuds qui ont été traversé par le paquet

12/40

Calcul de la somme de contrôle

Le calcul de somme de contrôle est une opération très courante en informatique,elle permet de détecter certaines corruptions de données.

Calcul de la somme de contrôle :1. On découpe l'en­tête en nombres de 16 bits en excluant le champ de somme decontrôle et on appelle N la somme de tous ces nombres2. Tant que N >= 65536, N := (N mod 65536) + (N / 65536)3. On représente le nombre N en binaire puis on inverse les 1 et les 04. Le résultat sur 16 bits est écrit dans le champ somme de contrôle

Vérification de la somme de contrôle :1. On découpe l'en­tête en nombres de 16 bits en incluant le champ de somme decontrôle et on appelle N la somme de tous ces nombres2. Tant que N >= 65536, N := (N mod 65536) + (N / 65536)3. On représente le nombre N en binaire puis on inverse les 1 et les 04. Si on obtient 0, la vérification est correcte, sinon elle échoue et est le signe d'unecorruption.

13/40

Plan

1 Systèmes d'exploitation (1/2) ✔2 Systèmes d'exploitation (2/2) ✔3 Réseaux, TCP/IP

3.1 Principes des réseaux ✔3.2 TCP/IP ✔3.3 Adressage, routage, DNS3.4 UTF­8

14/40

Adresse IP

Moyen d'identifier une machine sur InternetAdresse composée de 4 octets (32 bits) :

ex: 129.175.28.179Certaines adresses sont réservées : 10.x.x.x, 172.[16—31].x.x, 192.168.x.x,

169.254.x.xInternet Assigned Numbers Authority, attribue les IPs par bloc aux fournisseurs

d'accès et grandes entreprisesIPv4 est amené à disparaître, remplacé par IPv6 (adresses sur 128 bits)

⏹ ⏹

15/40

Classes d'adresses IP

classe A :classe B :classe C :

classe D :classe E :

Une adresse IP se décompose en deux parties :

1. Une partie réseau (assignée par l'IANA)2. Une partie machine (assignée par l'administrateur réseau local)

Il y a 5 classes d'adresses (3 utilisées en pratique). On note N la partie réseau et Hla partie machine :

[0—127].H.H.H[128—191].N.H.H[192—223].N.N.H

Deux classes spéciales :

[224—247].X.X.X, multicast[248—255].X.X.X, expérimental (réservée)

16/40

Nombre de machines adressables

classe A :classe B :

classe C :

[0—127].H.H.H, 7 bits pour le réseau, 3 octets pour la machine[128—191].N.H.H, 14 bits pour le réseau, 2 octets pour la machine

ex: 129.175.125.111[192—223].N.N.H, 5 bits plus 2 octets pour le réseau, 1 octet pour la

machine

Lors d'un adressage par classe, une machine ne peut communiquer directementqu'avec d'autres machines du même réseau

17/40

Adresses réservées

La machine locale :

Tout le réseau :

Diffusion :

Certaines adresses ont une utilisation particulière et ne peuvent pas êtreattribuées à des machines :

127.0.0.1 (permet à une machine d'avoir une adresse réseaumême si elle n'est pas connectée)

On remplace la partie machine par des 0 (par exemple pour uneclasse B : 129.175.0.0

On remplace la partie machine par des 255 (par exemple pour uneclasse B : 129.175.255.255). Permet d'envoyer un message à toutes lesmachines du réseau en même temps.

18/40

Routage

Routeur :

Table de routage :

Une machine A veut envoyer un message à une machine D. Les deux machines nesont pas directement reliées (pas de câble point­à­point, pas sur le même switch,pas sur le même réseau Wifi, …)

machine possédant au moins 2 interfaces (périphériques) réseau ainsique des logiciels spécialisés et dont le but est de transmettre les paquets IPd'un réseau vers un autre

spécifie, pour chaque groupe d'IPs, quel est le routeur

Exemple :

$ route Kernel IP routing table Destination Gateway Genmask ... Iface 192.168.0.0 * 255.255.255.0 ... eth1 129.175.240.0 * 255.255.255.0 ... eth0 default 129.175.240.1 0.0.0.0 ... eth0

19/40

Routage (suite)

Transmission d'un paquet d'une machine A1 à une machine C3

A1

A2

A3

A4

R 1

Réseau local A

B1

B2

B3

R2.1

R2.2

Réseau local B

C1

C2

C3

R3

Réseau local C

20/40

Épuisement des adresses IPv4

Combien de machines peut on adresser avec IPv4 ?

256 × 256 × 256 × 256 = 232 = 4 294 967 296

Insuffisance du nombre d'adresses liée aux facteurs suivants :

Explosion du nombre de terminaux mobiles (on a dépassé le milliard en 2012)Internet of Things (montres, voitures, chaussures, … connectées).Connexions permanentes (machines « toujours allumées et connectées »)Adressage par classe inadapté (rien entre les 16 millions d'adresses d'une classe A

et les 65536 adresses d'une classe B). Si une entité veut 1 million de machinesadressables, il lui faut 15 classes B.

⏹ ⏹ ⏹ ⏹

21/40

Quelles solutions ?

avantage :inconvénient :

IPv6 :

Adressage par sous­réseau :

Réseaux locaux :

Nouvelle version du protocole IP :

adresses sur 128 bits (2128 = 3.4 × 1038)standard incompatible avec IPv4

on re­découpe la partie « machine » d'une adressepour dénoter un sous­réseau

certaines machines sont « cachées » du réseau global et utiliséesuniquement en interne

22/40

Quel problème avec l'adressage par classe ?

On n'a que trois possibilité : classe A, 3 octets pour l'adresse machine (soit 24 bitsou 224 machines), classe B, 2 octets (soit 16 bits ou 216 machines), classe C, 1octet (soit 8 bits ou 256 machines).

On souhaite un mécanisme plus flexible qui permette d'allouer par exemple 12bits pour la partie machine (4096).

23/40

Mise en sous­réseau

On utilise un masque i.e. un nombre dont le « et » binaire avecl'adresse va isolerla partie réseau.

adresse : 129.175.34.35 (classe B)masque : 255.255.240.0 (= 11111111.11111111.11110000.000000002)Application du masque

décimal 129 175 34 35binaire 10000001 10101111 00100010 00100011masque 11111111 11111111 11110000 00000000« ET » 10000001 10101111 00100000 00000000

sous­réseau 129 175 32 0masque inversé 00000000 00000000 00001111 11111111

« ET » 00000000 00000000 00000010 00100011machine 0 0 2 35

⏹ ⏹

24/40

Réseaux privés

Le standard réserve 3 blocs d'adresses :

10.0.0.0 — 10.255.255.255 172.16.0.0 — 172.31.255.255 192.168.0.0 — 192.168.255.255

Ces adresses ne peuvent jamais être données à une machine sur Internet. Ellessont utilisées par le réseau local. Seul le routeur possède une adresse publique etil s'occupe de faire la traduction entre adresses locales et adresses globales (NAT: Network Address Translation)

⏹ ⏹ ⏹

25/40

Transmission Control Protocol

Le protocole TCP est un protocole complexe ayant les caractéristiques suivantes :

Orienté flux (stream) plutot que message (à l'inverse d'UDP)Bi­directionnel (Full­Duplex) : une fois la connexion établie, le client et le serveur

peuvent communiquer dans les deux sens (comme UDP)Garantie que les données envoyées arrivent dans l'ordreGarantie qu'en cas d'erreur de transmission irrécupérable, l'envoyeur est notifié

⏹ ⏹

⏹ ⏹

26/40

Fonctionnement de TCP

Pour garantir l'intégrité des données transmises via des paquets IP faillibles, TCPutilise un système d'accusé de réception (ACK pour acknowledgement). Il y a troisphases principales lors d'une connexion TCP :

1. La mise en place de la connexion2. L'échange de données proprement dit3. La fermeture de la connexion

27/40

Mise en place de la connexion

C'est une phase critique car elle permet de garantir par la suite l'intégrité desdonnées (ou la détection d'erreurs irrécupérables). Elle fonctionne sur le principed'une négociation en 3 étapes:

1. Le client (qui est toujours celui qui initie la connexion, par définition) envoie auserveur un message SYN (pour synchronized) ainsi qu'un numéro de séquence initial(ISN, initial sequence number) X choisi aléatoirement.2. Le serveur, envoie en réponse un message SYN-ACK (synchronized­acknowledgement), son numéro de séquence initial Y choisi aléatoirement et lenuméro d'acquitement X+13. Le client renvoie au serveur message ACK avec le numéro d'acquitement Y+1

Si le protocole n'arrive pas jusqu'à l'étape 3, le client déclare qu'il ne peut pas seconnecter au serveur. Si c'est le cas, alors le client et le serveur ont échangésuffisamment d'information pour pouvoir communiquer en détectant lesproblèmes.

28/40

Pourquoi cela fonctionne ?

Sur reception du SYN-ACK, le client a la certitude que le serveur a reçu son numérode séquence X, puis­ce que ce dernier a renvoyé X+1.

Sur reception du ACK le serveur a la certitude que le client a reçu son numéro deséquence Y car il lui a renvoyé Y+1.

Pourquoi choisir X et Y aléatoirement et pas intialement à 0 ? En cas deconnexion/déconnexion rapide entre un client et un serveur sur un réseaucongestionné ou lent, des paquets avec le même numéro de séquence (parexemple 0) mais appartenant à deux sessions différentes pourraient se mélanger.

29/40

Transmission des données

La transmission des données repose de manière cruciale sur les numéros deséquences et les acquitements. Supposons que X=1000 et Y=12000 pour lasuite.

à la fin de la séquence SYN/SYN-ACK/ACK, X=1001 et Y=12001si le client veut envoyer 62 octets au serveur, il crée un paquet TCP comprennant

(entre autre) X=1001 puis les 62 octets de données.sur réception le serveur renvoie un ACK contenant 1063 qui est le numéro du premier

octet qu'il s'attends à recevoir pour la suite.le client calcule 1063 - 1001 = 62 et a la certitude que le serveur a bien reçu son

paquet

⏹ ⏹

30/40

Détection de problème

On suppose que le client envoie trois paquets de 62 octets, avec les numéros deséquence :1001, 1063 et 1125.

Si le serveur reçoit 1125, 1001 et 1063 (dans cet ordre), le numéro de séquence luipermet de réordonner.

Si le serveur reçoit 1001, 1001, 1063 et 1125, le numéro de séquence lui permet dedétecter le doublon

Si le serveur reçoit 1125, il envoie le ACK:1126 au client et attend un certaintemps. Si les paquets n'arrivent pas, le serveur renvoie de nouveau un ACK:1126. Leclient comprend que le dernier paquet arrivé au serveur est 1125 donc qu'il lui manquetous les octets entre 1001 et 1125. Le client renvoie les paquets manquants.

Si le client ne recoit pas un ACK pour chaque paquet envoyé avant un temps fixé, lepaquet est envoyé de­nouveau.

31/40

Terminaison de connexion

La terminaison de connexion s'effectue de la manière suivante (on suppose que leclient a décidé de terminer la connexion)

1. le client envoie FIN au serveur et attend un certain temps T1.2. le serveur renvoie ACK au client3. le client attend un certain temps T2 (pour laisser une chance au serveur de terminerlui aussi).4. le serveur envoie FIN au client5. le client envoie ACK au serveur. La connexion est terminée.

Après la fin de la connexion, le port utilisé reste indisponnible pendant un certainintervale de temps, pour éviter que des paquets en retard ne viennent perturberune nouvelle connexion.

32/40

Port

La couche TCP définit une notion de port. Un port est un identifiant numériqueassocié à une connexion TCP. Un service (ou serveur) est identifié de manièreunique par son adresse IP et son numéro de port. Par convention, certains portssont réservés pour des services particuliers :

21 : FTP22 : SSH 80 : HTTP110 : POP443 : HTTPS

L'utilité d'un port est de pouvoir faire « tourner » plusieurs services sur la mêmemachine (même IP).

⏹ ⏹ ⏹ ⏹ ⏹

33/40

Pare­feu

Un pare­feu (firewall) est simplement un routeur qui applique une politique desécurité. L'administrateur définit un ensemble de règles qui disent au pare­feuquels paquets il doit transmettre et quels paquets il doit arrêter. Les règlespeuvent se baser sur :

L'adresse source ou destinationle numéro de portle contenu du paquet…

⏹ ⏹ ⏹ ⏹

34/40

DNS

Domain Name System : permet d'attribuer un nom à une IP (annuaire). Doubleavantage :

pour les humains, un nom est plus simple à retenir on peut changer d'adresse IP de manière silencieuse

Principe hiérarchise :

les serveurs DNS primaires gardent les informations sur les TLD (Top Level Domain: .com, .fr, .net, … )

pour chaque tld, il y a un ensemble de serveur DNS de niveau 2 qui fait correspondrele nom de domaine (google.com, u­psud.fr) à un DNS de niveau 3 (généralement le DNSde niveau 2 est chez le FAI)

le DNS de niveau 3 donne l'IP d'une machine particulière sur son domaine : mail,www (le DNS de niveau 3 est administré localement)

⏹ ⏹

35/40

Plan

1 Systèmes d'exploitation (1/2) ✔2 Systèmes d'exploitation (2/2) ✔3 Réseaux, TCP/IP

3.1 Principes des réseaux ✔3.2 TCP/IP ✔3.3 Adressage, routage, DNS ✔3.4 UTF­8

36/40

Représentation des textes

Avant de représenter des documents complexes, on s'intéresse aux textes (sansstructure particulière)

Problématique: comment représenter du texte réaliste ?

Exemple de texte réaliste:" …,Здравей,¡Hola!, 你好,Góðan daginn,و عليكم السالم "

37/40

Historiquement…

Encodage 1 caractère = 1 octet (8 bits) :

Encodage ASCII sur 7 bits (128 caractères)ASCII étendu 8 bits (256 caractères, dont 128 de « symboles »Latin 1 : ASCII 7 bits + 128 caractères « ouest­européens » (lettres accentuées

française, italienne, …)Latin 2 : ASCII 7 bits + 128 caractères « est­européens » (Serbe, Hongrois, Croate,

Tchèque, …)Latin 3 : ASCII 7 bits + 128 caractères turques, maltais, espéranto,Latin 4 : ASCII 7 bits + 128 caractères islandais, lituanien, … …Latin 15 : Latin 1 avec 4 caractères « inutiles » remplacés (par exemple pour « € » à

la place de « ¤ »)

⏹ ⏹ ⏹

⏹ ⏹ ⏹ ⏹

38/40

… et pendant ce temps là, ailleurs dans le monde

Encodage multi­octets:

Encodages spécifiques pour le Chinois (Big5, GB, …)Encodages spécifiques pour le Japonais (Shift­JIS, EUC, …)

Impossibilité de mettre plusieurs « alphabets » dans un même texte

Chaque logiciel « interprétait » les séquences d'octet de manière prédéfinie

⏹ ⏹

39/40

UTF­8

Universal (Character Set) Transformation Format 8 bit

Encodage à taille variable « universel » (contient tous les alphabets connus)Un organisme (ISO) donne un code à chaque symboleCompatible avec ASCII 7 bits

Encodage

⏹ ⏹ ⏹

Nombre d'octetsOctet 1 Octet 2 Octet 3 Octet 4 Octet 5 Octet 61 0xxxxxxx

2 110xxxxx10xxxxxx

3 1110xxxx10xxxxxx10xxxxxx

4 11110xxx10xxxxxx10xxxxxx10xxxxxx

5 111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx

6 1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx

40/40

Exemples

A  ⟶  6510  ⟶  0100 10102 (représenté sur un seul octet)

ê  ⟶  787710  ⟶  0001 1110 1100 01012 (représenté 3 octets) : 11100001 1011 10 11 1000 0101≡ 225 187 133ὃ�  ⟶  12805310  ⟶  … ≡ 240 237 220 181 Avantages :

compatible ASCII 7 bits (d'anciens documents texte en anglais sont toujourslisibles)

pas d'espace gaspillé (à l'inverse d'UTF­32 ou tous les caractères font 32bits)

InconvénientsCaractères à taille variable: il faut parcourir le texte pour trouver le nème

caractèreLes vieux logiciels doivent être adaptés