Académique Documents
Professionnel Documents
Culture Documents
1
slides are modified from J. Kurose & K. Ross
Objectifs
Conception d’une application réseau
Comprendre le fonctionnement des principaux
protocoles de la couche application
Web (http, URI, MIME, Web Socket)
(FTP, DNS, DHCP, Email P2P, DHT (Distributed Hash
Table))
2
Création d’une application réseau
Applications et protocoles applicatives
Protocoles applicatifs
Une (grosse) partie des
applications
Applications •Web : HTML, browsers Web, serveurs
Web et HTTP pour définir l'échange des
S’exécutent dans les hôtes messages
dans l’espace utilisateur •Mail : serveurs de mails, mail readers,
Échangent des messages standard pour le format des mails et
protocole applicatif pour l'échange des
Ex : éditeur de texte, transfert messages (ex : SMTP)
de fichier, Web Définissent :
•le format et l'ordre des messages
échangés par les applications,
•les actions consécutives à l'émission ou
3
la réception d'un message
Création d’une application réseau
écrire des programmes qui application
transport
network
s’exécutant sur différents data link
physical
systèmes terminaux
communiquent à travers le
réseau
exemple : le logiciel d’un
serveur web qui communique
avec le logiciel du navigateur
application
pas besoin d’écrire du logiciel pour transport
network
data link
application
les équipements intermédiaires physical
transport
network
car ils n’exécutent pas les data link
physical
applications des utilisateurs
Les applications sur les
équipements terminaux permettent
le développement rapide, …
Création d’une application réseau
Un protocole applicatif définit
Les types de messages échangés
Protocoles du domaine
e.g., demande, réponse publiques
La syntaxe du message définit dans les RFCs
quels champs et comment permettent
sont-ils délimités dans un l’interopérabilité
message
exemple : HTTP, SMTP
La sémantique d’un message
Protocoles propriétaires
La signification des
informations dans les champs e.g., Skype
controlled by
controlled by process application
application process
developer
developer socket socket
TCP with TCP with controlled by
controlled by
buffers, operating
operating buffers, internet system
system variables variables
host or host or
server server
Création d’une application réseau
A quelle application est destiné le nouveau paquet?
IP: 74.125.115.99
Applications
Operating
System Web server
SSH server
app
Source IP: 128.174.13.63
Dest port: 80 Network
app
Network Source port: 23421
Link layer
Link layer
Une application réseau est identifiée par une @IP, protocole de transport et 9
un port
Création d’une application réseau
Multiplexage de la couche du transport : TCP
Je souhaite
IP: 128.174.13.63 communiquer IP: 74.125.115.99
avec 74.125.115.99
Operating
sur le port 80 Operating
System System
socket Web
Web socket TCP port TCP port 80 server
browser 23421 Dest IP: 128.174.13.63
app
Source IP: 74.125.115.99
Dest port: 23421 Network
app
Network Source port:80
Link layer
Link layer
Une application réseau est identifiée par une @IP, protocole de transport et 10
un port
Création d’une application réseau
Multiplexage de la couche du transport : TCP
IP: 128.174.13.63 IP: 74.125.115.99
Operating Operating
System System
socket Web
Web socket TCP port TCP port 80 server
browser 23421 Dest IP: 74.125.115.99
socket app
app Source IP: 128.174.13.63
Dest port: 80 Network
Network Source port: 23421
Link layer
Link layer
Une application réseau est identifiée par une @IP, protocole de transport et 11
un port
Création d’une application réseau
Multiplexage de la couche du transport : TCP
Je veux envoyer les
données : IP: 74.125.115.99
IP: 128.174.13.63
XXSFGFEWRV
Operating Operating
System System
socket Web
Web socket Dest IP: 74.125.115.99
TCP port TCP
TCP port
port 80
80 server
browser 23421 Dest IP: 74.125.115.99
Source IP: 128.174.13.63
Protocol: TCP
socket app
app Source IP: 128.174.13.63
Protocol: TCP
Dest port: 80
Source port: 23421 Network
Network Dest port: 80 Data:
Data: XXSFGFEWRV
XXSFGFEWRV
Source port: 23421
Link layer
Link layer Data: XXSFGFEWRV
Une application réseau est identifiée par une @IP, protocole de transport et 12
un port
Création d’une application réseau
Multiplexage de la couche du transport :UDP
I would like to
I would like to
send/receive
IP:data
128.174.13.63 IP: 74.125.115.99
receive any data on
over UDP port
UDP port 1401
23421 Operating Operating
System System
socket IM
IM client socket UDP port UDP port 1401 Server
app 23421
Network
app
Network
Link layer
Link layer
Une application réseau est identifiée par une @IP, protocole de transport et
un port
Création d’une application réseau
Multiplexage de la couche du transport :UDP
Send data to
IP:port
74.125.115.99 128.174.13.63 IP: 74.125.115.99
1401
Data: xxadre Operating Operating
System System
socket IM
IM client socket UDP port Dest IP: 74.125.115.99 UDP port 1401 Server
app 23421 Source IP: 128.174.13.63
Protocol: UDP
Network
app
Dest port: 1401
Network Source port: 23421
Data: xxadre Data: xxadre Link layer
Link layer
Une application réseau est identifiée par une @IP, protocole de transport et
un port
Création d’une application réseau
Règles pour création d’une application réseau
API socket
Chapitre suivant
Services applicatives
Pile TCP/IP
16
Services applicatives
From: John Doe <example@example.com>
MIME-Version: 1.0
Web et MIME Content-Type: multipart/mixed;
Multipurpose Internet boundary="XXXXboundary text"
Mail Extensions : MIME
This is a multipart message in MIME
Standard internet qui format.
étend le format de données
attachées à un courrier --XXXXboundary text
mais aussi pour typer les Content-Type: text/plain
documents transférés par
this is the body text
HTTP
Non seulement du texte --XXXXboundary text
ASCII mais, d’autres Content-Type: text/plain;
codages, multimédia, … Content-Disposition: attachment;
filename="test.txt"
--''frontière''
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
20
--''frontière''--
Services applicatives
Web et MIME
Content-type : Les types principaux sont les suivants
Type application : fichiers pluri-usages.
application/javascript : JavaScript ; défini dans la RFC 4329.
audio/vnd.rn-realaudio : RealAudio ;
audio/x-wav : WAV
22
Services applicatives
Web et MIME
Pour déterminer le MIME d’un fichier, il existe plusieurs API
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.net.URLConnetion;
mimeType= URLConnection.guessContentTypeFromName(file.getName());
Ou
24
Services applicatives
Web et URI
Objectif : identifier une ressource de manière permanente, même si
la ressource est déplacée ou supprimée (dans l’absolu).
30
Services applicatives
Web et URI
URL et http:
Le schéma et le host peuvent être omit si l’objet référencé
se trouve sur la même machine que le document de
référence
Un chemin complet est utilisé lorsqu’il s’agit d’un autre
serveur. Un chemin relatif dans le cas contraire
Le port peut être aussi omit : la valeur par défaut du
protocole listée dans le fichier /etc/services
généralement 80
Un chemin complet est utilisé lorsqu’il s’agit d’un autre
serveur
Les fragments permettent de faire un saut à l’étiquette de
la page (Anchor)
31
http://www.x.y/z#foo
Services applicatives
Web et URI
API Java : java.net.URI
Méthodes
32
Services applicatives
Web et URI
API Java : java.net.URL et java.net.URLConnection
Accéder aux informations du Web en utilisant des URLs.
new URL("http://massena.univ-mlv.fr/index.html");
new URL("http","massena.univ-mlv.fr",80,"index.html");
new URL("http://massena.univ-mlv.fr/","index.html")
34
Services applicatives
Web et URI Lecture d’un
API Java : java.net.URLConnection enregistrement
35
Services applicatives
Web et URI
API Java : java.net.URLConnection
Entête d’un
message http
36
HTTP
Hypertext Transfer Protocol
Inventé par Tim Berners-Lee avec les
adresses Web et le langage HTML pour
créer le World Wide Web
Protocole de transfert de plusieurs
formats de données : PC exécutant
Firefox
Plaintext
Hypertext
Images,Video, Sound Server
Meta-information exécutant
Apache
Modèle client-serveur server
requêtes
HTTP
Hypertext Transfer Protocol
Liste de quelques serveurs HTTP
C : Apache, Zeus Web Server, nginx, lighttpd, Cherokee,
Hiawatha Webserver
ASP/ASP.Net(C#, VB.net) : IIS
Java : Tomcat, Jetty, GlassFish, JBoss, JOnAS, Vert.x
Python : Zope
Pike : Caudium
Ruby : WEBrick, Mongrel, Thin
Erlang : Yaws
Javascript : Node.js
38
HTTP
Page web
Une page web peut contenir plusieurs types d’information
Des informations perçues
Textuelles : texte avec mise en forme
Non-textuelles : objets graphiques, audio, vidéo, applet,
Interactives : hyperliens, forms, boutons, …
Des informations cachées
des URL
Le navigateur demande d’abord la page de base. Ensuite les39
objets référencés par la page ou qu’ils soient
HTTP
Historique
Plusieurs versions :
• HTTP/0.9
• HTTP/1.0
• HTTP/1.1
• HTTP/2 40
HTTP
Hypertext Transfer Protocol
Principe Requête/Réponse
Connexion TCP établie entre un client et le port 80 (en
général) du serveur HTTP
Envoi par le client d'un message HTTP, dit requête
Traitement de cette requête et envoi par le serveur d'un
message, dit réponse, au client.
En HTTP 0.9 et 1.0, la connexion est fermée par le serveur
après chaque réponse
En HTTP 1.1, il est possible de conserver la même
connexion TCP pour plusieurs échanges de
requêtes/réponses (persistance)
En HTTP 2.0, le serveur peut envoyer des mises à jours
aux clients sans demandes (Server Push), orienté bit 41
HTTP
Hypertext Transfer Protocol
En HTTP 2.0
Negotiation mechanism that allows clients and servers to
elect to use HTTP 1.1, 2.0, or other non-HTTP protocols.
Maintain high-level compatibility with HTTP 1.1 (for
example with methods, status codes, and URIs, and most
header fields)
Decrease latency to improve page load speed in web
browsers by considering:
Data compression of HTTP headers
Server push technologies
Pipelining of requests
Fixing the head-of-line blocking problem in HTTP 1.x
Multiplexing multiple requests over a single TCP 42
connection
HTTP
Hypertext Transfer Protocol
En HTTP 2.0
Support common existing use cases of HTTP, such as
desktop web browsers, mobile web browsers, web APIs,
web servers at various scales, proxy servers, reverse proxy
servers, firewalls, and content delivery networks
HTTP/2 is a binary, rather than text, protocol, making it
more compact and efficient
43
HTTP
Format des messages HTTP
Des types de messages : requête
Le retour chariot
indique la fin
du message
44
HTTP
Format des messages HTTP
Des types de messages : réponse
200 OK
La requête a réussi et l’objet
Status de la demande demandé est à la suite
(protocol
301 Moved Permanently
status code HTTP/1.1 200 OK
status phrase) Connection: close L’objet demandé a changé
46
HTTP
Format des Requêtes HTTP
Constitution de la première ligne de requête
Méthode URL Version
Exemple: GET /index.html HTTP/1.1
Host: www.univ-mlv.fr
Méthode: GET, HEAD, POST, PUT, DELETE, TRACE,...
47
HTTP
Format des Requêtes HTTP
Exemple requête
URLs can only be sent over the Internet using the ASCII character-set.
Outside the ASCII set, has to be converted into a valid ASCII format.
URL encoding replaces unsafe ASCII characters with a "%" followed by
two hexadecimal digits.
URLs cannot contain spaces. URL encoding normally replaces a space
with a plus (+) sign or with %20. 48
HTTP
Format des Réponses HTTP
Constitution de la réponse
49
HTTP
Format des Réponses HTTP
Constitution de la ligne dite « de statut » : 5 catégories
1xx « informatifs »: acceptés uniquement dans les
versions 1.1. Réponse « intermédiaire » du serveur.
Ex: 100 Continue
2xx « de succès »: la réception, la compréhension ou
l'acceptation de la requête est réussie. Ex: 200 OK
3xx « de redirection »: d'autres actions sont requises pour
traiter la requête. Ex: 301 Moved Permanently
4xx « erreurs du client »: erreur de syntaxe ou de
spécification. Ex: 404 Not Found
5xx « erreurs du serveur »: serveur incapable de
répondre. Ex: 501 Method Not Implemented
50
HTTP
Format des Réponses HTTP
Exemple réponse
51
HTTP
HTTP Headers
Headers are name/value pairs that appear in both request
and response messages. The name of the header is separated
from the value by a single colon. For example, this line in a
request message:
54
HTTP
Headers
Demandes
55
HTTP
Headers
Réponses
56
HTTP
HTTP Pipelining
HTTP pipelining is a technique in which multiple HTTP
requests are sent on a single TCP connection without
waiting for the corresponding responses.
connexion)
Possibilité d'exploiter le fullduplex de la connexion TCP
RTT RTT
Request file
Request file
time to time to
RTT transmit RTT transmit
Base received file file
Base received
initiate TCP connection Request files
RTT RTT
60
10 objects require 20RTT+10 data transmit times 10 objects require 3RTT+10 data transmit times
HTTP
Messages avec chunked
Lorsqu'une requête génère une réponse longue
On devrait attendre toute la génération de la réponse afin de
connaître sa taille AVANT de créer l'entête de la réponse et
son champ Content-Length
On peut alors « découper » la réponse en morceaux (chunked)
et commencer à envoyer les premiers avant d'avoir fini de
générer la totalité du document
Utilise le champ Transfert-Encoding: chunked
Il n'y a plus de champ d'entête Content-length
Chaque morceau est préfixé par sa taille
Le premier morceau de taille nulle indique la fin du corps
61
HTTP
Messages avec chunked
GET /search?q=test HTTP/1.1
Host: www.google.fr
HTTP/1.1 200 OK
Server: GWS/2.0
Date: Mon, 23 Sep 2002 11:58:56 GMT
Transfer-Encoding: chunked
Content-Type: text/html
b3f
<html><head>
..... Premier morceau ...
3ce2
..... Deuxième morceau ...
</body></html>
62
0
HTTP
Exemple de requêtes HTTP
63
HTTP
Exemple de requêtes HTTP
64
HTTP
Quelques Requêtes HTTP
GET: récupérer une ressource (peut causer des side-effects)
POST : transmettre des données en vue d'un traitement à
une ressource.
HEAD: identique à GET, mais sans corps de msg
Peut servir à savoir si une ressource existe et si elle a
changé, sans nécessairement la récupérer
TRACE: écho de la requête
le serveur renvoie, dans le corps du message, le message
qu'il a reçu du client (diagnostique)
OPTIONS: demande d'information sur les méthodes
Le serveur renvoie toutes les méthodes qu'il implante
dans le champ d'entête « Allow »
65
HTTP
Formulaire avec GET
Permet de définir des zones de saisie pour le client
<form enctype="application/xwwwformurlencoded"
action="http://www.monsite.fr/path" method="GET">
<input type="text" name="user" value="votre nom">
<input type="submit" name="ok" value="Envoyer">
</form>
66
HTTP
Formulaire avec POST
<form action="http://www.monsite.fr/path" method="POST">
<input type="text" name="user" value="votre nom">
<input type="submit" name="ok" value="Envoyer">
</form>
Même apparence dans un navigateur
Un clic sur Envoyer crée une requête POST à l'URL
http://www.monsite.fr/path,
Avec comme champs d'entête
Host: www.monsite.fr
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
dont le corps du message contient user=votre+nom& ok=Envoyer
67
HTTP
Formulaire avec POST
<form enctype="application/x-www-form-urlencoded" action="http://www.monsite.fr/path"
method="GET"> Zone de texte (nom) :
<input type="text" size="30" name="user" value="votre nom"><hr>
<textarea name="srctext" rows="6" cols="40">Tapez votre message ici. </textarea><hr>
Zone de boutons (age) : Quel âge avez vous?
moins de 18 ans <input type="radio" name="age" value="18">
de 19 à 35 ans <input type="radio" name="age" value="1935">
de 36 à 50 ans <input type="radio" name="age" value="3650" checked>
plus de 50 ans<input type="radio" name="age" value="50"><hr>
Zone de menu (disponibilité) : Vous êtes
<select name="dispo">
<option value="ok">disponible
<option selected value="ko">indisponible
</select><hr>
<input type="hidden" name="client" value="a12345678901">
<input type="submit" name="choix1" value="Accepter">
<input type="submit" name="choix2" value="Refuser">
68
<input type="reset" value="Réinitialiser"> <hr>
</form>
HTTP
Envoyer des fichiers
<form enctype="multipart/formdata"
action="/sendfile" method="POST">
Fichier 1 : <input type="file"
name="fichier1" size="20"><br><br>
Fichier 2 : <input type="file"
name="fichier2" size="20"><br><br>
<input type="hidden" name="ID" value=« test">
<input type="submit" name="submit" value="Envoyer">
</form>
--ABCDEF
Content-Disposition: form-data; name="fichier1"; filename="test.txt"
Content-Type: text/plain
Test de fichier
--ABCDEF
Content-Disposition: form-data; name="fichier2"; filename=""
Content-Type: application/octet-stream
70
HTTP
Envoyer des fichiers
--ABCDEF
Content-Disposition: form-data; name="ID"
Test
--ABCDEF
Content-Disposition: form-data; name="submit«
Envoyer
--ABCDEF--
71
HTTP
GET vs POST
Les deux méthodes sont utilisables dans un formulaire
Différences principales
POST transmet les données dans le corps
GET transmet les données dans l'URL
POST + Ésthétique (arguments n'apparaissent pas)
POST non limité en taille (les serveurs limitent une taille
maximale pour les URLs). Dans ce cas, code de statut 414
Requested-URI Too Large
Un formulaire GET peut être « rejoué » en conservant
l'URL (bookmarks du navigateur) : side-effect
72
HTTP
Autres requêtes HTTP
PUT permet d'envoyer au serveur HTTP des données
(fichiers) qu'il devra stocker
Différent de POST, dont les données sont destinées à une
ressource identifiée par l'URL (qui doit normalement
interpréter les données)
Dans le cas de PUT, les données sont la ressource à placer
73
HTTP
L’authentification HTTP
De nombreux sites demandent un identifiant et un mot de
passe Pour limiter l'accès aux ressources à qq clients
Mécanisme de challenge/crédit pour l'authentification
des requêtes
Trois modes d'identification (RFC 2617) :
Basic : transmet le mot de passe en clair, et ne doit donc
être utilisé qu'avec le protocole HTTPS.
Digest : une identification sans transmettre le mot de
passe en clair. L'identification est cependant souvent
effectuée par une couche applicative supérieure à HTTP
(hashage).
NTLM : This uses a secure challenge/response
mechanism that prevents password capture or replay 74
attacks over HTTP.
HTTP
L’authentification HTTP
75
HTTP
L’authentification HTTP
Lors d'une requête sur une ressource protégée
Serveur répond 401 Unauthorized avec, un champ WWW-
Authenticate qui contient au moins un challenge applicable
à la ressource concernée (une liste)
Un challenge est constitué d'un schéma (mot, ex: Basic),
suivi de paires attribut=valeur.
Exemple: Basic realm= "zoneprotection2"
realm: set of pages/resources where credentials are
required
Le client doit alors réémettre sa requête avec un crédit dans
le champ Autorization.
Exemple: Autorization: Basic blablabla
où blablabla représente le codage en base 64 de la chaîne76
«
login:passwd ». Attention, base 64 est réversible, et le
HTTP
L’authentification HTTP
Schéma Basic
77
HTTP
L’authentification HTTP
Autre schéma: Digest
Requiert une valeur d'autorisation obtenue par hachage
cryptographique utilisant, en plus de user et passwd de
client, des informations liées à la requête et une valeur
aléatoire tirée par le serveur
78
HTTP
Tracking Client
HTTP protocole sans état. Comment savoir quelle était la
précédente requête du même client?
Idée: faire « sauvegarder un état » par le client, qu'il devra
renvoyer dans la prochaine requête
Champs « hidden » des formulaires
Réécriture des URL des liens hypertextes contenus dans
en ligne
Problème : utilisateurs nomades accédant à un même
site depuis différentes machines
C'est une paire <clé>=<valeur>
Initialement fournie par le serveur dans une réponse
Stockée par le client (navigateur)
80
Puis retransmise par le client lorsqu'il émet des requêtes
HTTP
HTTP Cookies
Example:
Many major Web sites use
cookies Susan always access
Internet always from PC
Four components:
1) cookie header line of visits specific e-commerce
HTTP response message site for first time
2) cookie header line in when initial HTTP requests
HTTP request message arrives at site, site creates:
3) cookie file kept on user’s unique ID
host, managed by user’s entry in backend
browser database for ID
4) back-end database at Web
site
81
HTTP
HTTP Cookies
client server
ebay 8734
usual http request msg Amazon server
cookie file creates ID
usual http response 1678 for user create
Set-cookie: 1678
ebay 8734 entry
amazon 1678
usual http request msg
cookie: 1678 cookie- access
specific
usual http response msg action backend
one week later: database
access
usual http request msg
cookie: 1678 cookie-
spectific
usual http response msg action 82
HTTP
HTTP Cookies
Spécifié par un champ d'entête dans la réponse
Set-Cookie: <clé>=<valeur> [; expires=<DATE>]
[; path=<PATH>]
[; domain=<DOM>]
[; secure]
Rejoué par les clients:
Cookie: <clé1>=<valeur1>; <clé2>=<valeur2> ...
83
HTTP
HTTP Cookies
Attributs optionnels
expires: pour la date de péremption. Au delà, le client ne
doit pas conserver le cookie
domain et path servent à déterminer les URL pour lesquels
ce cookie doit être utilisé (par défaut, ceux de l'URL de la
requête sont utilisés)
Les cookies s’appliquent sur le domain et sous-domain
Les cookies dont la valeur de domain est différente du
domaine du serveur ayant généré la réponse doivent
être ignorés
Les cookies trop larges (moins de deux « . ») ignorés
secure: cookie à n'utiliser que si connexion sécurisée
Si même path et même domain, le nouveau écrase l'ancien. 84
Si path diffère, on stocke et renvoie les deux
HTTP
Java API for HTTP
Transport abstraction :
Google HTTP Client Library for Java
Low-level library
java.net.HttpURLConnection,
URL Fetch 85
Apache HttpClient,
HTTP
java.net.URL
A simple way to get the contents of a page at a URL is to create
a java.net.URL object, then call its openStream() method. The
method handles the details of creating the connection, issuing
an HTTP GET request, and retrieving the response data.
86
HTTP
java.net.URLConnection
The abstract class URLConnection is the superclass of all
classes that represent a communications link between the
application and a URL. Instances of this class can be used both
to read from and to write to the resource referenced by the
URL. In general, creating a connection to a URL is a multistep
process:
1. The connection object is created by invoking the
openConnection method on a URL.
2. The setup parameters and general request properties are
manipulated.
3. The actual connection to the remote object is made, using
the connect method.
4. The remote object becomes available. The header fields
and the contents of the remote object can be accessed. 87
HTTP
java.net.URLConnection
The setup parameters are modified using the following
methods:
setDoInput
setDoOutput
setIfModifiedSince
88
HTTP
java.net.URLConnection
The following methods are used to access the header fields
and the contents after the connection is made to the remote
object:
getContent
getHeaderField
getInputStream
getOutputStream
getExpiration
HTTP
HTTP/1.1
Troisième version HTTP/1.1: En janvier 1997, puis juin 1999
puis en février 2014, devient finalement standard de l'IETF
connexion persistante
support du transfert en pipeline : plusieurs envois sur la même
connection
une meilleure gestion du cache.
en-tête Host devient obligatoire dans les requêtes.
la négociation de type de contenu (format de données, langue) :
Accept, Accept-language.
Les soucis majeurs des deux premières versions
• le nombre important de connexions lors du chargement d'une page
complexe (contenant beaucoup d'images ou d'animations
• le temps d'ouverture d'une connexion entre client et serveur : pour
chaque nouvelle requête, l'établissement d'une connexion TCP prend
un temps triple de la latence entre client et serveur). 90
HTTP
Historique
Quatrième version HTTP/2 : En mars 2012, les travaux à propos
de HTTP/2.0 démarrent à l'IETF adoptant SPDY de goofle
(speedy) comme matériel de départ.
approuvée en février 2015 par le groupe de pilotage de l'IETF..
91