SRCS : La programmation réseau en Java. Version 15.01 Julien Sopena 1 1 [email protected]Équipe REGAL - INRIA Rocquencourt LIP6 - Université Pierre et Marie Curie Master SAR 1ère année - SRCS - 2016/2017 J. Sopena (INRIA/UPMC) La programmation réseau en Java. 1 / 16 Grandes lignes du cours Une abstraction des protocoles réseau Gestion des addresses réseau en Java Le sockets TCP Le sockets UDP J. Sopena (INRIA/UPMC) La programmation réseau en Java. 2 / 16 Outline Une abstraction des protocoles réseau Gestion des addresses réseau en Java Le sockets TCP Le sockets UDP J. Sopena (INRIA/UPMC) La programmation réseau en Java. 3 / 16 Quel niveau d’abstraction pour le réseau ? Les 7 couches du modèle OSI Couche 7 - Applicative : Les logiciels (ex : NFS) Couche 6 - Présentation : Représentation des données (ex : XDR) Couche 5 - Session : Établissement et maintient des sessions (ex : RPC) Couche 4 - Transport : Liaison de bout en bout (ex : UDP, TCP, ...) Couche 3 - Réseau : Adressage et routage entre machines (ex : IP) Couche 2 - Liaison : Gestion des envois point à point (ex : Ethernet) Couche 1 - Physique : Support de transmission J. Sopena (INRIA/UPMC) La programmation réseau en Java. 4 / 16 Quel niveau d’abstraction pour le réseau ? Les 7 couches du modèle OSI Couche 7 - Applicative : Les logiciels (ex : NFS) Couche 6 - Présentation : Représentation des données (ex : XDR) Couche 5 - Session : Établissement et maintient des sessions (ex : RPC) Couche 4 - Transport : Liaison de bout en bout (ex : UDP, TCP, ...) Couche 3 - Réseau : Adressage et routage entre machines (ex : IP) Couche 2 - Liaison : Gestion des envois point à point (ex : Ethernet) Couche 1 - Physique : Support de transmission Les Sockets Java offrent une abstraction du réseau au niveau des couches Transport (4) et Réseau (3). Java introduit donc différentes classes correspondant aux protocoles abstraits : TCP ou UDP. J. Sopena (INRIA/UPMC) La programmation réseau en Java. 4 / 16 La notion de mode de connecté Définition En mode connecté, la communication entre un client et un serveur est pré- cédée d’une connexion et suivie d’une fermeture : I Facilite la gestion d’état I Meilleurs contrôle des arrivées/départs de clients I Uniquement communication unicast I Plus lent au démarrage Définition En mode non connecté, les messages sont envoyés librement : I Plus facile à mettre en œuvre I Plus rapide au démarrage J. Sopena (INRIA/UPMC) La programmation réseau en Java. 5 / 16 Les protocoles TCP et UDP TCP : une communication de type téléphone I Mode connecté : protocole de prise de connexion (lent) I Sans perte : un message arrive au moins un fois I Sans duplication : un message arrive au plus une fois I Avec fragmentation : les messages peuvent être coupés I Ordre respecté : messages délivrés dans l’ordre d’émission UDP : une communication de type courrier I Mode non connecté : pas de protocole de connexion (plus rapide) I Avec perte : l’émetteur n’est pas assuré de la délivrance I Avec duplication : un message peut arriver plus d’une fois I Sans fragmentation : les messages envoyés ne sont jamais coupés = ⇒ soit un message arrive entièrement, soit il n’arrive pas I Ordre non respecté : messages délivrés dans l’ordre d’arrivé J. Sopena (INRIA/UPMC) La programmation réseau en Java. 6 / 16 La notion de mode de connecté Attention Il ne faut pas confondre connexion au niveau transport et connexion au niveau applicatif : I FTP fonctionne en connecté en utilisant TCP I DNS fonctionne en non-connecté en utilisant UDP I HTTP fonctionne en non-connecté en utilisant TCP J. Sopena (INRIA/UPMC) La programmation réseau en Java. 7 / 16
12
Embed
SRCS : La programmation réseau en Java. - Version 15
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
SRCS :La programmation réseau en Java.
Version 15.01
Julien Sopena1
[email protected]Équipe REGAL - INRIA RocquencourtLIP6 - Université Pierre et Marie Curie
Master SAR 1ère année - SRCS - 2016/2017
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 1 / 16
Grandes lignes du cours
Une abstraction des protocoles réseauGestion des addresses réseau en JavaLe sockets TCPLe sockets UDP
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 2 / 16
Outline
Une abstraction des protocoles réseauGestion des addresses réseau en JavaLe sockets TCPLe sockets UDP
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 3 / 16
Quel niveau d’abstraction pour le réseau ?
Les 7 couches du modèle OSI
Couche 7 - Applicative : Les logiciels (ex : NFS)Couche 6 - Présentation : Représentation des données (ex : XDR)Couche 5 - Session : Établissement et maintient des sessions (ex : RPC)Couche 4 - Transport : Liaison de bout en bout (ex : UDP, TCP, ...)Couche 3 - Réseau : Adressage et routage entre machines (ex : IP)Couche 2 - Liaison : Gestion des envois point à point (ex : Ethernet)Couche 1 - Physique : Support de transmission
Les Sockets Java offrent une abstraction du réseau au niveau descouches Transport (4) et Réseau (3). Java introduit doncdifférentes classes correspondant aux protocoles abstraits : TCP ouUDP.
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 4 / 16
Quel niveau d’abstraction pour le réseau ?
Les 7 couches du modèle OSI
Couche 7 - Applicative : Les logiciels (ex : NFS)Couche 6 - Présentation : Représentation des données (ex : XDR)Couche 5 - Session : Établissement et maintient des sessions (ex : RPC)Couche 4 - Transport : Liaison de bout en bout (ex : UDP, TCP, ...)Couche 3 - Réseau : Adressage et routage entre machines (ex : IP)Couche 2 - Liaison : Gestion des envois point à point (ex : Ethernet)Couche 1 - Physique : Support de transmission
Les Sockets Java offrent une abstraction du réseau au niveau descouches Transport (4) et Réseau (3). Java introduit doncdifférentes classes correspondant aux protocoles abstraits : TCP ouUDP.
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 4 / 16
La notion de mode de connecté
DéfinitionEn mode connecté, la communication entre un client et un serveur est pré-cédée d’une connexion et suivie d’une fermeture :
I Facilite la gestion d’étatI Meilleurs contrôle des arrivées/départs de clientsI Uniquement communication unicastI Plus lent au démarrage
DéfinitionEn mode non connecté, les messages sont envoyés librement :
I Plus facile à mettre en œuvreI Plus rapide au démarrage
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 5 / 16
Les protocoles TCP et UDP
TCP : une communication de type téléphoneI Mode connecté : protocole de prise de connexion (lent)I Sans perte : un message arrive au moins un foisI Sans duplication : un message arrive au plus une foisI Avec fragmentation : les messages peuvent être coupésI Ordre respecté : messages délivrés dans l’ordre d’émission
UDP : une communication de type courrierI Mode non connecté : pas de protocole de connexion (plus rapide)I Avec perte : l’émetteur n’est pas assuré de la délivranceI Avec duplication : un message peut arriver plus d’une foisI Sans fragmentation : les messages envoyés ne sont jamais coupés
=⇒ soit un message arrive entièrement, soit il n’arrive pasI Ordre non respecté : messages délivrés dans l’ordre d’arrivé
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 6 / 16
La notion de mode de connecté
AttentionIl ne faut pas confondre connexion au niveau transport etconnexion au niveau applicatif :
I FTP fonctionne en connecté en utilisant TCPI DNS fonctionne en non-connecté en utilisant UDPI HTTP fonctionne en non-connecté en utilisant TCP
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 7 / 16
Les SocketsDéfinitionUne Socket est une API (interface logicielle) avec les services dusystème d’exploitation, qui permet d’exploiter facilement et demanière uniforme les services d’un protocole réseau.
Une socket est un demi-point de connexion d’une application.
Machine 1
Socket Socket
Machine 2
Java défini plusieurs classes de sockets suivant le protocole :I TCP : ServerSocket et SocketI UDP : DatagramSocket
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 8 / 16
Outline
Une abstraction des protocoles réseauGestion des addresses réseau en JavaLe sockets TCPLe sockets UDP
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 9 / 16
Identification des sockets
Une socket est identifiée par :I en absence de connexion : 〈@IP,port〉I en cas de connexion : (〈@IPsrc,portsrc〉,〈@IPdest,portdest〉)
AttentionDeux sockets peuvent occuper le même port local si elles sontconnectées sur des IPs et/ou ports différents.
Il existe deux classes pour gérer les addresses :InetAddress : représente une adresse internet (ip/fqdn)SocketAddress : représente l’adresse d’une socket
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 10 / 16
InetAddress : les adresses internetLa classe InetAddress sert à représenter les adresses internet
I pas de constructeur mais des méthodes statiques
InetAddress me = InetAddress.getByName("sopena.fr");System.out.println(me.getHostAddress()+" = "+me.getHostName());
90.46.19.126 = sopena.fr
InetAddress g = InetAddress.getByAddress(new byte[] {8,8,8,8});System.out.println(g.getHostAddress()+" = "+g.getCanonicalHostName());
J. Sopena (INRIA/UPMC) La programmation réseau en Java. 11 / 16
SocketAddress : les adresses internet
La classe InetSocketAddress sert à représenter 〈@IP,port〉 :I elle hérite de la classe abstraite SocketAddressI ces instances sont des objets immuablesI elle n’associe pas le protocole utilisé
On peut les construire ou les récupèrer de :I sockets existantesI de packets reçu ou émis