Les réseaux
Technologies IP
Couche 4: TCP, UDP
Couche 2 Ethernet Couche 3 IP Couche 4 TCP, UDP
Couche Applicative ftp, mozilla,telnet…
Adressage, routage…
Accès réseaux locaux
Transporter les données de bout en bout (de l’émetteur au destinataire) ÞLes couches inférieures sont transparentes (non considérées)
ØUDP: transfert non fiable, ajout uniquement de la notion de port
ØTCP: transfert fiable => fiabilise le protocole IP
§notion de ports
§contrôle de flux
§acquittement des paquets
=> Si un paquet est erroné ou perdu il est réémis !
Ø Identification du service : les ports
Les adresses IP désignent les stations entre lesquelles les communications sont établies.
Lorsqu'un processus d’une station désire entrer en communication avec un autre processus, il doit identifier le processus destination.
1 port = adresse d’un processus 65535 ports / station
0-1024=> ports privés
> 1024=> ports non privés
• 1 port identifie une application ou un service.
• L'émission d'un message se fait sur la base d'un port source et un port destination.
• Les accès aux ports sont généralement synchrones, les opérations sur les ports sont tamponnés (files d'attente FIFO).
• Il est donc possible de créer plusieurs connections entre deux stations en utilisant plusieurs ports => multiplexage
Ex: 2 connections ftp entre Serveur ftp et Station1:
port Serveur ftp 21 port Station1 5009 port Serveur ftp 21 port Station1 6003
• Certains ports sont réservés (well-kown port assignements) :
• No port Mot-clé Description
• 7 ECHO Echo
• 11 USERS Active Users
• 13 DAYTIME Daytime
• 37 TIME Time
• 42 NAMESERVER Host Name Server
• 53 DOMAIN Domain Name Server
• 69 TFTP Trivial File transfert protocol
• 161 SNMP Simple Network Management prot.
•
• D'autres numéros de port (non réservés) peuvent être assignés dynamiquement aux applications.
No port Mot-clé Description
20 FTP-DATA File Transfer [Default Data]
21 FTP File Transfer [Control]
23 TELNET Telnet
25 SMTP Simple Mail Transfer
37 TIME Time
42 NAMESERVER Host Name Server
43 NICNAME Who Is
53 DOMAIN Domain Name Server
79 FINGER Finger
80 HTTP WWW
110 POP3 Post Office Protocol - Version 3
111 SUNRPC SUN Remote Procedure Call
import java.net.*;
import java.io.*;
public class client1 {
public static void main(String[] args){
try {
Socket client = new Socket("localhost",8080);
InputStream entree= new
DataInputStream(client.getInputStream());
OutputStream sortie=new PrintStream (client.getOutputStream());
sortie.println("salut je suis le client");
String recevoir = entree.readLine();
System.out.println(recevoir);
client.close();}
catch (IOException e){
System.err.println(e);}
catch (UnknownHostException e) {
import java.net.*;
import java.io.*;
public class serveur {
public static void main(String[] args) { try {
ServerSocket ecoute =new ServerSocket(8080);
Socket serveur=ecoute.accept();
InputStream entree= new
DataInputStream(serveur.getInputStream())
;
OutputStream sortie=new PrintStream (serveur.getOutputStream());
String recevoir = entree.readLine();
System.out.println(recevoir);
sortie.println("Bienvenu client");
serveur.close();
Client Serveur
Ø RFC 768
Ø UDP : protocole de transport orienté non connexion :
– Emission de messages : sans établissement de connexion au préalable
Ø Pas de gestion des erreurs
– L'arrivée des messages ainsi que l’ordonnancement ne sont pas garantis.
Ø Les messages UDP sont également appelés des datagrammes UDP.
Ø Ils contiennent deux parties : un en-tête UDP et les données UDP.
Port UDP source
Longueur message UDP
Port UDP dest.
0 16 31
Données ...
Format des messages UDP Checksum UDP
La longueur du message est exprimée en octets (8 au minimum) (en-tête + données),
le champ de contrôle (checksum) est optionnel (0 si non utilisé).
Ø Lorsqu'il est utilisé, le checksum couvre plus d'informations que celles contenues dans le datagramme UDP;
Ø le checksum est calculé avec un pseudo-en-tête non transmis dans le datagramme:
zéro
0 8 16 31
Format du pseudo en-tête Adresse IP Source
proto Longueur UDP Adresse IP Destination
Le champ PROTO indique l'identificateur de protocole pour IP (17= UDP) Le champ LONGUEUR UDP spécifie la longueur du datagramme UDP sans le pseudo-en-tête.
Ø RFC 793
Ø TCP = transport fiable de la technologie TCP/IP.
Ø transferts tamponnés : découpage en segments Ø connexions bidirectionnelles et simultanées
Ø Contrôle le flux, contrôle la congestion Ø service en mode connecté
Ø garantie de non perte de messages ainsi que de l'ordonnancement
Ø une connexion de type circuit virtuel est établie (2 circuits, mode full-duplex)
Ø Une connexion = une paire d'extrémités de connexion Ø Une extrémité de connexion = couple (adresse IP, port)
Ø La mise en oeuvre de la connexion se fait en deux étapes : 1. une application (extrémité) effectue une ouverture passive
en indiquant qu'elle accepte une connexion entrante, 2. une autre application (extrémité) effectue une ouverture
active pour demander l'établissement de la connexion.
Une connexion TCP est établie en trois temps de manière à assurer la synchronisation nécessaire entre les extrémités
=> Négociation de la taille des messages (recommendation 536o) de la taille de fenetre
TCP source TCP destination Syn seq=x x2 mss=1024 win= 4096
Syn seq=y y2,ack=x2+1 mss=512 win=3048
Ack y2+1
Une connexion TCP est établie en trois temps de manière à assurer la synchronisation nécessaire entre les extrémités :
Ø Une connexion TCP est libérée avec 2 ½ connexions:
TCP source TCP destination
Fin seq=x x2 ack=x2+1
Ack y2+1 Fin seq=y y2
Ø Contrairement à UDP, TCP garantit l'arrivée des messages, c'est à dire qu'en cas de perte, les deux extrémités sont prévenues.
Ø Ce concept repose sur les techniques d’acquittement de message : la destination acquitte un segment 1..N avec ack N+1
Ø Si l’acquittement ACK ne parvient pas à S, le segment est re-émis au bout d’un temps T, T dépend du réseau :
emetteur recepteur Segment
Sequence= 1..N
Acquittement ACK=N+1
Envoi de N octets
ØUn réseau offre des temps de transit variables nécessitant le réglage des temporisations;
ØTCP gère des temporisations variables (T) pour chaque connexion en utilisant un T
Ø Le mécanisme d’acquittement de TCP est cumulatif :
– il indique le numéro de séquence du prochain octet attendu : tous les octets précédents cumulés sont implicitement acquittés
emetteur recepteur
Segment
Sequence= 1..N
Acquittement ACK=M+1 Segment
Sequence=
N+1..M
Ø Pour tout segment émis, TCP s’attend à recevoir un acquittement – Si le segment n’est pas acquitté, le segment est considéré comme
perdu et TCP le retransmet.
emetteur recepteur
T
Segment
Sequence= 1..N
Segment
Sequence= 1..N
emetteur recepteur
T
Segment
Sequence= 1..N
Segment
Sequence= 1..N
emetteur recepteur
T
Segment
Sequence= 1..N
Segment
Sequence= 1..N
• La technique acquittement simple pénalise les performances puisqu'il faut attendre un acquittement avant d'émettre un nouveau message.
Þ Le fenêtrage améliore le rendement des réseaux.
• La fenêtre = nombre d’octets que l’on peut émettre sans acquittement.
– Un fois la fenêtre remplie, il faut attendre un acquittement avant de reemettre
• La fenêtre permet de contrôler le flux: plus on agrandi la fenêtre plus on peut émettre de données. Si le réseau se congestionne on referme la fenêtre.
• Fenêtre glissante don’t la taille peut varier (limites de fenêtre glissent sur les octets à envoyer)
• permet au destinataire de faire varier le débit de l'émetteur donc de gérer le contrôle de flux.
1 2 3 4 5 6 7 8 9 10 11 . . .
Octets émis et
acquittés Octets non émissibles
tout de suite.
Octets émis et non acquittés
Octets émissibles
Et sous windows en plus ?
• Segment : unité de transfert du protocole TCP.
– échangés pour établir les connexions, – transférer les données,
– émettre des acquittements, – fermer les connexions;
Port source Port destination Numéro de séquence
Numéro d’acquittement HLEN réservé Codes fenêtre
Checksum pointeur urgence Options éventuelles padding
Données . . .
0 4 10 16 24 31
N * 32bits
• Numéro de séquence : identificateur du segment. permet de regrouper tous les morceaux reçus si le segment a ete fragmente.
Num de séquence = (en général) numéro du 1er octet du segment
• Numéro d’acquittement : le prochain numéro de séquence NS attendu par l’émetteur de cet acquittement. Acquitte implicitement les octets NS-1, NS- 2, etc.
• Fenêtre: la quantité de données que l’émetteur de ce segment est capable de recevoir; ceci est mentionné dans chaque segment (données ou
acquittement).
• CODE (BITS) : indique la nature du segment :
– URG =1: le pointeur de données urgentes est valide, les données sont émises sans délai, les données reçues sont remises sans délai.
– SYN : utilisé à l’initialisation de la connexion pour indiquer où la numérotation séquentielle commence.
– FIN : utilisé lors de la libération de la connexion;
– PSH : fonction push permet d’envoyer des donnees sans attendre que le segment TCP soit plein.
Utile pour utilitaires comme telnet (je tape sur une touche le caractere est emis directement)
─ RST : pour réinitialiser la connexion
TCP format du segment
Ø CHECKSUM :
calcul du champ de contrôle : utilise un pseudo-en-tête et s'applique à la totalité du segment obtenu (PROTO =6) :
Adresse IP source Adresse IP destination
zéro protocole (6) longueur TCP
TCP : la congestion
Gestion de la congestion
• TCP gère le contrôle de flux de bout en bout mais également les problèmes de congestion liés à l’interconnexion.
• La congestion correspond à la saturation de routeurs dans le réseau
provoquant des délais d’acheminement de datagrammes jusqu‘a leur pertes éventuelles.
• Les extrémité ignorent tout de la congestion sauf les délais. Habituellement, les protocoles retransmettent les segments ce qui agrave encore le
phénomène.
• Dans la technologie TCP/IP, les passerelles (niveau IP) utilisent la réduction du débit de la source mais TCP participe également à la gestion de la
congestion en diminuant le débit lorsque les délais s’allongent :
TCP : L’automate
Fermé
Ecoute (Listen)
SYN reçu
SYN émis Réinitialisation
SYN/SYN+ACK
RST
ouverture passive fermeture
Send SYN
SYN/SYN+ACK
Etablie
ACK SYN+ACK/ACK
Attente Fermer
Dernier ACK FIN
Attente -1
FIN/ACK Fermeture
en cours Fermer/FIN
ACK Départ
Fermer RST Tempo. exp.
ouverture active
rcv Close/FIN
rcv
rcv FIN (send)
/ SYN
FIN/ACK
•Création d’un protocole d’échange de données (par mots clés, plus par trame)
•Sérialisation des données (enpacketage)
•Exemple HTTP:
•Une requête HTTP a la syntaxe suivante METHODE URL VERSION<crlf>
EN-TETE : Valeur<crlf>
. . .
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REQUETE
•Exemple HTTP:
exemple de requête HTTP :
GET http://iut.u-clermont1.fr HTTP/1.1 Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)
GET Requête de la ressource située à l'URL spécifiée
HEAD Requête de l'en-tête de la ressource située à l'URL
spécifiée
POST Envoi de données au programme situé à l'URL
spécifiée
•HTTP v2
•Compression de données (reduire latence)
•Mode push (serveur fait des requètes, mode out in des SW)
•Pipeline pour // le traitement (voir janvier)
•Multiplexage de pl. requètes TCP (bien pour javascript)
•QUIC (google)
•Quick UDP Internet Connections, basé dur UDP pour optimiser le multiplexage et compense le manque de fiabilité
Quic et antitrust
HTTP/3-> http over quic (fin 2019) Pour réduire latence, basé sur HTTP2
Aujourd’hui, besoin de sécurité les données qui transitent dans un réseau Sécurité, essentiellement obtenue par cryptage et authorisation (mais aussi,
denial of service, virus, port scanning, …):
• NAT, parefeu
• IPsec: sécurité au niveau IP
• Associations de membres connus (authentification ajoutée dans l’entête IP
• Tunnels
• VPN (virtual private network)
• Création de tunnels entre partenaires (réseaux, stations,…)
• VPN (virtual private network)
• Création de tunnels entre partenaires (réseaux, stations,…)
• Peut utiliser Ipsec
• Protocole SSL:
• Souvent utilisé avec HTTP
• 2 couches, 1 de cryptage et 1 d’authentification
• Gestion de certificats
• si authentification requise, alors le client doit envoyer un certification
• Accords sur le cryptage par envoi de clés
• Mais aussi TLS, L2TS,…