Upload
philibert-metayer
View
103
Download
0
Embed Size (px)
Citation preview
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT
UV Réseaux /Java RMI
Module Java Expert
Module UV Réseaus / SDPage 2 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Module Java
Vue d’ensemble du langage Java Le langage Java : syntaxe et sémantique Programmation multi-tâche : les threads Accéder aux bases de données Composants réutilisables : le modèle MVC Développement Client/Serveur Présentation de l’IDE VisualAge Les serveurs d’applications J2EE Les Enterprise JavaBeans Ré-ingénierie d’applications Java
Module UV Réseaus / SDPage 3 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Système de communication à l ’intérieur d ’un même site (local area network ou LAN) servant à relier des ordinateurs entre eux sur une distance restreinte dans différents buts :– Mise en commun d ’équipements : imprimante laser, disque
dur de grande capacité, lecteurs de CD-ROM, périphériques de communication, etc.
– Partage d ’informations numériques (fichiers de données, de textes, etc.) entre individus ou groupes d ’individus.
Réseau local - Définition
Module UV Réseaus / SDPage 4 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau local - Définition
– Partage de systèmes de maintenance pour sauvegardes, installation de logiciels, etc.
Module UV Réseaus / SDPage 5 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
LAN versus MAN versus WAN
MAN - metropolitan area network / réseau métropolitain – Réseau qui regroupe des réseaux locaux situés dans une
même zone urbaine.
WAN - wide area network / réseau étendu – Système de communication formant un grand réseau
déployé géographiquement sur une longue distance, reliant éventuellement entre eux des réseaux locaux, en ayant recours le plus souvent à des réseaux publics pour la transmission à distance (lignes téléphoniques spécialisées ou liaisons satellites)
Module UV Réseaus / SDPage 6 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Les réseaux…un monde complexe...
« C ’est juste en attendant que la connexion Internet fonctionne de nouveau »
© Richtennant
Module UV Réseaus / SDPage 7 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Composantes d’un réseau local
Matériel– Serveur (si choisi approche avec serveur dédié)+ unité
d ’alimentation de secours (UPS - uninterrupted power supply)
– Postes de travail– Cartes d ’interface réseau (pour le serveur et les postes de
travail)– Câbles réseau– unité de sauvegarde sur bande
Logiciel– Système d ’exploitation du réseau local
Module UV Réseaus / SDPage 8 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Critères à considérer pour le choix du type de réseau à installer:– Taille de l’entreprise – Niveau de sécurité nécessaire – Type d’activité – Niveau de compétence d’administration disponible – Volume du trafic sur le réseau – Besoins des utilisateurs du réseau – Budget alloué au fonctionnement du réseau (pas seulement l’achat mais
aussi l’entretien et la maintenance)
Module UV Réseaus / SDPage 9 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Réseau poste à poste
YvesLise
YvesLouis
YvesLucie
Module UV Réseaus / SDPage 10 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Réseau poste à poste (peer to peer)– Le système d ’exploitation de chaque poste est configuré
pour offrir un support réseau ce qui permet au poste d ’agir à la fois comme poste et comme serveur. Chaque poste peut partager ses ressources avec un autre (fichiers, imprimante). Il peut être à la fois client et serveur.
– Windows pour Workgroups, Windows 95, 98, ME Windows NT Workstation, et Windows 2000 Professionnel intègrent toutes les fonctionnalités du réseau poste à poste
Module UV Réseaus / SDPage 11 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Réseau poste à poste (peer to peer)– Avantages :
• Simple à mettre en place
• Coût réduit (achat d ’une carte par poste et de câbles)
– Désavantages :• Performance réduite du poste utilisé à la fois comme serveur et
comme poste
• Peu de sécurité.
• Décentralisé donc difficile à administrer, chaque utilisateur gérant son propre poste et en planifiant la sécurité
• Pour réseaux de 10 postes et moins
Module UV Réseaus / SDPage 12 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Réseau client/serveurLe serveur = ordinateur qui centralise les informations ou qui met à la disposition de tous les ressources dont il dispose. On ne travaille pas dans des applications sur un serveur dédié: il a pour fonction de mettre ses ressources en partage.
Le client(s) = poste de travail qui peut utiliser ses propres ressources ou les ressources du serveur si elles ont été préalablement déclarées publiques.
Les logiciels d ’application doivent être exécutés à partir d’un client.
Module UV Réseaus / SDPage 13 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Serveur dédié : ordinateur puissant qui partage ses ressources avec d ’autres ordinateurs du réseau par l ’intermédiaire de son système d ’exploitation réseau.– Cœur du réseau client-serveur. Comprend un ou plusieurs
processeurs puissants, un disque dur fiable (SCSI) et autant de mémoire que possible.
Répond à deux besoins principaux :– Gère le flot des données à travers le réseau grâce à son système
d ’exploitation réseau– Permet d ’assurer la sécurité et l ’intégrité de ces données– Deux facteurs limitants : vitesse de la carte réseau et de l ’accès en
lecture-écriture sur le disque dur du serveur
Module UV Réseaus / SDPage 14 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Serveur dédié dans réseau client/serveur– Avantages:
• gestion des ressources centralisée
• sécurité accrue par rapport à réseau poste à poste
• réseau évolutif
– Désavantages:• Coût élevé (serveur + système d ’exploitation réseau)
• Installation et gestion complexes
• maillon faible du réseau client-serveur car tout le réseau est structuré autour du serveur dédié. Doit prévoir des solutions de relève en cas de panne du serveur.
Module UV Réseaus / SDPage 15 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseau poste à poste ou réseau avec serveur dédié?
Serveur dédié dans réseau client/serveur– Partage de données : serveur de fichiers– Partage de logiciels : serveur d ’applications– Partage de ressources : serveur d ’impression
YvesLiseLouis Lucie
Module UV Réseaus / SDPage 16 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Carte d’interface réseau
Carte d ’interface réseau (NIC - network interface card)– Carte d'interface qui assure la transmission de données
entre un ordinateur ou un serveur et un réseau. Les cartes réseau sont généralement Ethernet, Token Ring ou FDDI. Les plus répandues sont les cartes Ethernet 10/100 Mbps.
– Lien physique entre le poste de travail et le câble réseau– La carte réseau est munie de son propre microprocesseur
Module UV Réseaus / SDPage 17 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Types de câbles
Paire torsadée Câble coaxial Fibre optique
Module UV Réseaus / SDPage 18 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Types de câbles
1. Signal électrique dans un conducteur de cuivre– Paire torsadée non blindée (UTP - Unshielded Twisted Pair). 8 fils
de cuivre torsadés 2 à 2. Sensible aux interférences électro-magnétiques. Type 3 (10 BaseT) ou type 5 (100 BaseT). Ressemble au câble téléphonique. Le plus utilisé (cf. Topologie étoile)
– Paire torsadée blindée (STP - Shielded Twisted Pair). Type 1. Conducteurs plus gros que dans non blindé. Blindage externe protège des interférences. (cf. Topologie anneau)
– Câble coaxial : câble robuste. Peut être tiré sur de longues distances. Peu sensible aux interférences électro-magnétiques(cf. Topologie bus).
Module UV Réseaus / SDPage 19 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Types de câbles
2. Signal lumineux dans un tube de verre– Fibre optique : transmission plus rapide (100 Mbps)– Utilisée pour des liaisons longue distance– Insensible aux interférences électro-magnétiques. – Installation délicate – Coûteux– Topologie étoile ou anneau
Module UV Réseaus / SDPage 20 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Types de câbles
Chaque type de câble présente des restrictions quant au nombre de connexions possibles, la distance entre les connexions, la longueur maximale du câblage.
Module UV Réseaus / SDPage 21 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Réseaux sans fils
1. Infrarouge– Fiable mais sensible. Le récepteur doit être à portée optique
de l ’émetteur sinon le signal est coupé.
2. Radio-fréquences– Émetteur-récepteur. Le poste de travail doit être en liaison
radio avec le serveur.
Module UV Réseaus / SDPage 22 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie de réseau
Configuration physique de l'interconnexion au moyen de câbles des équipements d'un réseau local.
– Topologie en bus– Topologie en étoile– Topologie en anneau– Topologie en arbre
Module UV Réseaus / SDPage 23 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en bus
Structure de réseau dans laquelle chaque station de travail est reliée à un câble linéaire porteur du signal. Seul le nœud destinataire s ’occupe de l ’information qui lui est destinée.
Module UV Réseaus / SDPage 24 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en bus
Utilise le câble coaxial Peu sensible aux perturbations électromagnétiques Si il y a un bris de câble, toute communication sur le
réseau est impossible
Module UV Réseaus / SDPage 25 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en étoile
Structure de réseau où chaque station est reliée à un point central. Liaison dite point à point.
Module UV Réseaus / SDPage 26 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en étoile
Utilise le câble en paire torsadée ou en fibre optique Avantage: si il y a bris du câble d ’un poste, ça
n ’affecte pas le reste du réseau Désavantage: requiert plus de câble que la topologie
bus Réseau 10BaseT: débit 10 Mbps; câble de paire
torsadée (Twisted pair); carte Ethernet : très répandu.
Réseau 100BaseT ou Fast Ethernet: débit de 100 Mbps
Module UV Réseaus / SDPage 27 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en étoile
Hub ou répéteur multiport : Organe de raccordement d'un réseau capable de recevoir, de répéter et de régénérer les signaux que lui acheminent des circuits qui lui sont reliés à la manière des branches d'une étoile et qui le rejoignent à travers de multiples ports.
Module UV Réseaus / SDPage 28 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en anneau
Structure de réseau où les stations et le serveur sont reliées de manière à former un circuit bouclé.
Module UV Réseaus / SDPage 29 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en anneau
Si il y a bris d ’un câble, le reste du réseau n ’est pas affecté si on utilise un double anneau
Utilise de la paire torsadée ou de la fibre optique Requiert plus de câble que la topologie bus mais
moins que la topologie étoile
Module UV Réseaus / SDPage 30 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en arbre
Structure de réseau qui combine les caractéristiques des topologies bus et étoile
Module UV Réseaus / SDPage 31 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Topologie en arbre
La longueur totale de chaque segment est limitée par le type de câble utilisé
Si le câble dorsal fait défaut, tout le segment tombe en panne
Plus difficile à configurer que les autres topologies
Module UV Réseaus / SDPage 32 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Comment circule l ’information dans le réseau
Essentiellement, trois méthode basées sur trois protocoles de communication:
1. Détection de collision (probabiliste) - Technologie Ethernet– Norme 802.3 de IEEE (Institute of Electrical and Electronics
Engineers).– Protocole CSMA/CD (Carrier Sense Multiple Access with
Collision Detection)– Réseaux basés sur cartes Ethernet. Topologie bus logique
et étoile physique.– Câble coaxial, paire torsadée ou fibre optique.– Taux de transmission : 10 ou100 Mbps
Module UV Réseaus / SDPage 33 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Comment circule l ’information dans le réseau
2. Le jeton (déterministe) - Technologie Token Ring– Norme 802.5 de IEEE– Protocole Token Ring– Utilisé dans les réseaux basés sur les cartes Token Ring– Topologie anneau– Paire torsadée blindée ou fibre optique– Taux de transmission : 4 ou 16 Mbps
Module UV Réseaus / SDPage 34 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Comment circule l ’information dans le réseau
3. FDDI (Fiber Distributed Data Interface)– Norme ANSI X3T9.5 (très semblable à 802.5 Token Ring). 2
anneaux.– Fibre optique – Pour haut taux de transfert (100 Mbps)– Utilisé pour applications qui nécessitent beaucoup de bande
passante (p. ex.: imagerie médicale)
Module UV Réseaus / SDPage 35 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Modèle OSI
Modèle de référence pour l ’interconnexion de systèmes ouverts développé par l ’ISO– Modèle de référence en couches destiné à fournir un cadre
conceptuel aux échanges entre systèmes hétérogènes. Découpe les différentes parties d ’un réseau informatique en 7 couches distinctes.
1. Couche physique (câbles, connecteurs)2. Couche liaison de données3. Couche réseau4. Couche transport5. Couche session6. Couche présentation7. Couche application (communication logiciel et réseau.
par.ex. ftp, smtp, etc)
Module UV Réseaus / SDPage 36 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Système d’exploitation réseau
Les systèmes d ’exploitation réseau (NOS - network operating system) peuvent tourner sur n ’importe quel réseau standard (Ethernet, Token Ring ou FDDI).
Les principaux sont :– Windows NT Server ou Windows 2000 Server de Microsoft (41%
du marché des nouveaux achats)
– Netware de Novell (13.8%)
– UNIX (13.9%)
– Linux (27%)– Source : IDC. 10 septembre 2001. http://www.idc.com/software/press
/PR/SW091001pr.stm.
Module UV Réseaus / SDPage 37 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Système d ’exploitation réseau
Intègre différents protocoles réseau. Protocole = ensemble des règles, codes et signaux, conçu pour établir
la communication et contrôler les échanges d'informations entre deux entités distinctes à travers un réseau.
Par exemple, le protocole IPX de Novell, le protocole TCP/IP (Transmission Control Protocol/Internet Protocol) utilisé pour la communication entre ordinateurs sur Internet.
Il y a plus d'une centaine de protocoles réunis dans le protocole TCP/IP. Mis à part les protocoles TCP et IP, les trois autres principaux protocoles de cette famille sont le protocole SMTP régissant le courrier électronique, le protocole FTP pour le transfert de fichiers et le protocole Telnet pour la connexion à distance.
Module UV Réseaus / SDPage 38 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Système d ’exploitation réseau
La partie client du système d ’exploitation réseau installée sur le poste de travail redirige les requêtes des usagers du poste de travail vers le serveur via la carte réseau et le câble.
L’utilisateur se connecte au serveur depuis son poste avec un login et un mot de passe. Ensuite, il peut accéder aux données du serveur selon les droits que lui a accordés l’administrateur.
Module UV Réseaus / SDPage 39 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Étapes d ’implantation d ’un réseau local
1.Désignation d ’un administrateur réseau
2.Choix du matériel, de la topologie du réseau et du système d ’exploitation réseau.
3.Mise au point d ’une méthodologie d ’implantation
4.Installation des équipements (serveur, postes de travail, cartes et câbles)
5.Configuration du système d ’exploitation réseau sur le serveur (droits d ’accès par groupes d ’utilisateurs + sécurité d ’accès (mots de passe, droits des utilisateurs en lecture, écriture, etc.)
Module UV Réseaus / SDPage 40 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Étapes d ’implantation d ’un réseau local
6.Installation des logiciels d ’application sur le serveur et/ou les postes de travail
7.Création de l ’interface utilisateur sur les postes de travail8.Mise en place des procédures pour le suivi de la gestion des
ressources (copies de sauvegarde du serveur , des données des usagers, mise à jour des logiciels, etc.)
9.Rédaction de la documentation de l’administrateur et de l ’usager10.Test du réseau11.Formation des usagers
Module UV Réseaus / SDPage 41 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Dossiers partagés
Un poste relié en réseau peut accéder à des disques qui ne sont pas sur son poste mais plutôt sur d ’autres ordinateurs connectés au réseau
Dans la plupart des cas, on n ’accède qu ’à certains dossiers de ces disques réseau qu ’on appelle dossiers partagés
On peut restreindre l ’accès aux dossiers partagés par mot de passe
Nomenclature : \\nom du serveur\nom du partage
Module UV Réseaus / SDPage 42 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Intranet - Définition
Réseau informatique privé faisant appel aux outils, protocoles (TCP/IP) et technologies d ’Internet au sein d ’un réseau corporatif local ou étendu
On se sert d ’un navigateur Web pour le parcourir et on assure sa sécurité au moyen d ’un coupe-feu (firewall) lorsqu ’il est relié à Internet
Module UV Réseaus / SDPage 43 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Intranet
L'intranet répond à divers besoins de l ’entreprise: – Partage de l'information : édition, publication et accès -
recherche, navigation et consultation– Développement de la collaboration et des échanges :
messagerie, agendas et tâches partagés– Programmation et intégration des applications :
développement personnalisé, base de données, mises à jour
Module UV Réseaus / SDPage 44 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Extranet - Définition
Réseau informatique constitué des intranets de plusieurs entreprises qui communiquent entre elles, à travers le réseau Internet, au moyen d ’un serveur Web sécurisé.
Module UV Réseaus / SDPage 45 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Mécanisme de communication : sockets
Module Java
Module UV Réseaus / SDPage 46 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.InetAddress
Représentation des adresses réseaux Internet– 134.206.10.18, www.lifl.fr
Création– InetAddress host = InetAddress.getLocalHost();– InetAddress host = InetAddress.getByName("www.lifl.fr");– InetAddress host[] = InetAddress.getAllByName("www.lifl.fr");
Propriétés– Adresse symbolique : String getHostName()– Adresse IP : String getHostAddress()– Adresse binaire : byte[] getAddress()– boolean isMulticastAddress()
Méthodes– equals, toString, hashCode
Module UV Réseaus / SDPage 47 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Obtenir un objet java.net.InetAddress
import java.net.InetAddress;
try { InetAddress adresseLocale = InetAddress.getLocalHost();} catch(java.net.UnknownHostException ex) { . . .}
try { InetAddress adresse = InetAddress.getByName("www.lifl.fr");} catch(java.net.UnknownHostException ex) { . . .}
try { InetAddress[] adresses = InetAddress.getAllByName("www.lifl.fr");} catch(java.net.UnknownHostException ex) { . . .}
Module UV Réseaus / SDPage 48 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Accès aux propriétés d’un objet java.net.InetAddress
public static void afficher(InetAddress adresse)
{
String chaine = adresse.toString();
String nom = adresse.getHostName();
String ip = adresse.getHostAddress();
byte[] binaire = adresse.getAddress();
boolean multicast = adresse.isMulticastAddress())
}
Module UV Réseaus / SDPage 49 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Quelques protocoles Internet
IP pour Internet Protocol– protocole de routage des messages sur Internet– datagrammes de machine à machine
UDP pour User Datagram Protocol– protocole de transport non fiable de messages– datagrammes de port à port
Multicast IP– protocole de diffusion non fiable de messages– datagrammes vers groupe
TCP pour Transmission Control Protocol– protocole de transport fiable de messages– flux de port à port
Port = identifiant symbolique d’un processus / un service
Module UV Réseaus / SDPage 50 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Le principe d’une socket
Réseau Une socket = une prise logicielle d’accès au réseau
– @IP de la machine où elle est créée– #port identifiant unique
Application A
@IP#port
Application B
@IP#port
send / receive send / receive
Module UV Réseaus / SDPage 51 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Les Sockets UDP/IP
Module Java
Module UV Réseaus / SDPage 52 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Principes
UDP pour User Datagram Protocol sur IP Communication orientée paquets
– primitives send() et receive() Transfert paquets / datagrammes non fiables !
– perte de paquets sur Internet– duplication– pas de contrôle d'erreurs– ordre non garanti
Plus performant que TCP/IP– pas de surcoût pour établissement / contrôle de la connexion– pas de retransmissions
Exemple : la visio-conférence– perte d'une trame non dramatique !
Module UV Réseaus / SDPage 53 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La communication en UDP
s = DatagramSocket(#port)
p = DatagramPacket(buf)
s.receive(p)
traiter(p)
s.close()
Applicationréceptrice
s = DatagramSocket()
p = DatagramPacket( data, @IP, #port)
s.send(p)
s.close()
Applicationémettrice
Paquet
Module UV Réseaus / SDPage 54 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Un serveur UDP
import java.net.*;
public class ServeurUDP {
public static void main (String args[]) throws Exception
{
DatagramSocket ds = new DatagramSocket(8000);
while (true) {
DatagramPacket msg = new DatagramPacket(
new byte[512], 512);
ds.receive(msg);
System.out.println(« Recu » + new String(msg.getData()));
String texteReponse = « OK »;
DatagramPacket reponse = new DatagramPacket( texteReponse.getBytes(), texteReponse.length(), msg.getAddress(), msg.getPort()); ds.send(reponse);
}}}
Module UV Réseaus / SDPage 55 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Un client UDP
import java.net.*;public class ClientUDP {public static void main (String args[]) throws Exception{ String message = "Hello world!"; DatagramSocket ds = new DatagramSocket(); DatagramPacket envoi = new DatagramPacket( message.getBytes(), message.length(), InetAddress.getByName("localhost"), 8000); ds.send(envoi); DatagramPacket msg = new DatagramPacket(new byte[512], 512); ds.receive(msg); System.out.println ( new String(msg.getData()) ); ds.close();}}
Module UV Réseaus / SDPage 56 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.DatagramPacket (1/2)
Représente un paquet UDP– tampon de données, longueur, adresse IP, port
Constructeurs– new DatagramPacket(buffer, taille)– new DatagramPacket(buffer, taille, inetAddress, port)
Propriétés– Buffer : byte[] getData()– Taille buffer : int getLength()– Adresse IP : InetAddress getAddress()– Port IP : int getPort()– Modification : setData, setLength, setAddress, setPort
Module UV Réseaus / SDPage 57 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.DatagramPacket (2/2)
Un émetteur crée un DatagramPacket avec les données, la longueur, l'adresse et le numéro de port du destinataire– byte[] tampon = new byte[8096];– ia = InetAddress.getByName("www.lifl.fr");– DatagramPacket dp = new DatagramPacket(tampon,
tampon.length, ia, 1000); Un récepteur alloue le tampon pour recevoir le paquet et le passe au
constructeur de DatagramPacket– byte[] tampon = new byte[8096];– dp = new DatagramPacket(tampon, tampon.length);
A la réception, le DatagramPacket contient les données, l’adresse et le port de l’émetteur
Le tampon peut être réutilisé pour plusieurs envois / réceptions
Module UV Réseaus / SDPage 58 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.DatagramSocket
Une prise pour pouvoir communiquer en UDP– peut être connectée à une socket pair
Constructeurs – socket anonyme : new DatagramSocket()– socket avec port : new DatagramSocket(1000)
new DatagramSocket(1000,inetAddress) Propriétés
– l’adresse locale : InetAddress getLocalAddress()– l’adresse distante : InetAddress getAddress()– le port local : int getLocalPort()– le port distant : int getPort()
Méthodes– connexion : void connect(InetAddress ia, int port)– émission : void send(DatagramPacket dp)– réception : void receive(DatagramPacket dp)– fermeture : void close()
Module UV Réseaus / SDPage 59 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Les Sockets Multicast IP
Module Java
Module UV Réseaus / SDPage 60 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Applications Multicast IP
Délivrer un message à un ensemble de destinataires Plus efficace que l'envoi d'un message à chaque destinataire
– pris en charge par les routeurs Destinataires sont identifiés par une unique adresse de groupe
– indépendante de la localisation des destinataires– adressage logique des groupes : RFC 966 et 1112– classe D : 224.x.x.x - 239.x.x.x– mais adresse choisie à la main !
Les membres du groupe peuvent changer à tout moment– primitives d'adhésion et de sortie d'un groupe
Module UV Réseaus / SDPage 61 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Quelques exemples d'applications Multicast IP
Transmission de vidéo sur Internet : MBONE Jeux répartis multi-utilisateurs temps réel Systèmes de fichiers distribués
– sans connaître la localisation physique
– réplication, tolérances aux pannes Services de localisation de ressources
– rechercher une ressource WWW
– le serveur le plus proche répond Bref beaucoup d'applications intéressantes !
Module UV Réseaus / SDPage 62 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La communication en Multicast IP
s = MuticastSocket(#port)
s.joinGroup(@IP)
p = DatagramPacket(buf)
s.receive(p)
traiter(p)
s.close()
Applicationréceptrice
s = MuticastSocket()
p = DatagramPacket( data, @IP, #port)
s.send(p)
s.close()
Applicationémettrice
Paquet
Module UV Réseaus / SDPage 63 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Un serveur Multicast IP
import java.net.*;
public class ServeurMulticastIP {
public static void main (String args[]) throws Exception {
InetAddress mcast = InetAddress.getByName("225.1.1.1");
MulticastSocket ms = new MulticastSocket(8000);
ms.joinGroup (mcast);
while (true) {
DatagramPacket msg = new DatagramPacket(
new byte[512], 512);
ms.receive(msg);
System.out.println(msg.getAddress() + ":" +
msg.getPort() + " a envoyé " +
new String(msg.getData()));
} } }
Module UV Réseaus / SDPage 64 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Un client Multicast IP
import java.net.*;
public class ClientMulticastIP {
public static void main (String args[]) throws Exception
{
String message = "Hello world!";
MulticastSocket ms = new MulticastSocket();
InetAddress mcast = InetAddress.getByName("225.1.1.1");
DatagramPacket dp = new DatagramPacket(
message.getBytes(), message.length(), mcast, 8000);
for (int i=0; i<10; i++)
ms.send(dp, (byte)1);
ms.close();
}}
Module UV Réseaus / SDPage 65 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.MulticastSocket
Prise pour communiquer en Multicast IP– Sous classe de java.net.DatagramSocket
Nouvelles méthodes– joindre un groupe : void joinGroup (InetAddress mcast);– quitter un groupe : void leaveGroup (InetAddress mcast);– émission : void send(DatagramPacket dp, byte ttl);
Diffusion contrôlable :– champ time-to-live (TTL)– TTL = nombre de réseaux à franchir– TTL = 0 : même machine– TTL = 1 : même sous-réseau– TTL = 2..254 : selon topologie– TTL = 255 : aucune restriction !
Module UV Réseaus / SDPage 66 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Synthèse sur sockets UDP et Multicast IP
API simple– peu de primitives de communication
Communication efficace– peu de surcoût par rapport transport IP
Non fiable !– perte et/ou duplication de messages sur Internet
Programmation clients != programmation serveurs !– asymétrie des primitives de communication
Rien pour la structuration de l’application !– API bas niveau, transfert de paquets d’octets– taille du tampon à allouer pour la réception ?
Seulement approprié pour des applications sur réseaux locaux mais nécessite une fiabilisation réalisée par l’application
– ex. Network File System (NFS)
Module UV Réseaus / SDPage 67 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Les Sockets TCP / IP
Module Java
Module UV Réseaus / SDPage 68 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Principes
TCP/IP : Transmission Control Protocol sur IP Propriétés de la communication
– point à point , un circuit virtuel– bidirectionnelle– transport fiable– orienté flux d’octets– séquencement de données non dupliquées– sans séparateur d'enregistrement
=> un « pipe » étendu au réseau Interface de programmation de la couche Transport de l’Internet
Module UV Réseaus / SDPage 69 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Principes
Socket = prise applicative de communication réseau– 2 couples @IP + port– adresse locale de la socket / adresse distante de la socket pair– @IP = adresse machine physique– port = identifiant unique sur la machine
Fonctionnement– Serveur crée une socket et attend les requêtes des clients– Client se connecte à la socket d'un serveur, envoie ses requêtes– Dialogue client/serveur à travers des flux de données
Module UV Réseaus / SDPage 70 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Le schéma de fonctionnement
Serveur
s = ServerSocket(port#)
c = s.accept()
OutputStream
InputStream
c.close()
s.close()
Client
s = Socket(@IP,port#)
OutputStream
InputStream
s.close()
pipe réseaulecture lecture
écritureécriture
connexion
Module UV Réseaus / SDPage 71 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Exemple de serveur TCP/IP :Daytime sur port 13
import java.net.*;
import java.io.*;
public class ServeurDaytime {
public static void main(String args[]) throws Exception {
ServerSocket serveur = new ServerSocket(13);
while (true) {
System.out.println(serveur + " en attente !");
Socket client = serveur.accept();
System.out.println(client + " connecté");
PrintStream flux = new PrintStream(client.getOutputStream());
flux.println(new java.util.Date());
client.close();
}
serveur.close();
} }
Module UV Réseaus / SDPage 72 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Exemple de client TCP/IP :Daytime sur port 13
import java.net.*;import java.io.*;public class ClientDaytime {public static void main(String args[]) { try { Socket socket = new Socket("localhost", 13); BufferedReader flux = new BufferedReader( new InputStreamReader(socket.getInputStream())); String dateHeure = fluxHeure.readLine(); System.out.println("La date et l'heure sont » + dateHeure); socket.close(); } catch (UnknownHostException err) { System.err.println ("ClientDaytime : " + err);
} catch (IOException err) { System.err.println ("ClientDaytime : " + err);
} } }
Module UV Réseaus / SDPage 73 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.ServerSocket
Pour les serveurs attendant des connexions clientes Différents constructeurs :
– ServerSocket s = new ServerSocket(8000);– ServerSocket s = new ServerSocket(port,tailleFile);
– si port=0 alors le système choisit automatiquement le port Propriétés :
– adresse IP : InetAddress getInetAddress();– port : int getLocalPort();– timeout : setSoTimeout, getSoTimeout
Méthodes :– attendre une connexion : Socket accept();– fermer la socket : void close();– affichage : String toString() =>
ServerSocket[addr=,port=,localport=8000]
Module UV Réseaus / SDPage 74 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La création et connexion des sockets serveurs et clientes
ServerSocket@IP=«M2»port=8080
(1) s = new ServerSocket(8080)
(2) c = s.accept()
Socket@IP=«M2»port=50000
(3) s = new Socket(«M2»,8080)
Connexionréseau
Socket@IP=«M1»port=40345
pipe réseau
Module UV Réseaus / SDPage 75 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La classe java.net.Socket
Utiliser durant les communications TCP/IP Différents constructeurs pour établir la connexion :
– Socket s = new Socket("www.lifl.fr", 80);– Socket s = new Socket(inetAddress, 8000);
Propriétés :– adresse IP : InetAddress getInetAddress(), getLocalAdress()
– port : int getPort(), getLocalPort()– flux in : InputStream getInputStream()– flux out : OutputStream getOutputStream()– options set/get : TcpNoDelay, SoLinger, SoTimeout
Méthodes :– fermeture de la socket : void close();– affichage : String toString() =>
Socket[addr=www.lifl.fr/134.206.10.x,port=80,localport=50000]
Module UV Réseaus / SDPage 76 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
La relation entre deux sockets connectées
pipe réseau
Socket A sur M1 Socket B sur M2
@IP=«M2»port=5040
@IP=«M1»port=6070
Distante
Locale
@IP=«M1»port=6070
@IP=«M2»port=5040
Distante
Locale
A.getInetAddress() == B.getLocalInetAddress() A.getPort() == B.getLocalPort() A.getLocalInetAddress() == B.getInetAddress() A.getLocalPort() == B.getPort()
Module UV Réseaus / SDPage 77 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
L’application Telnet
Telnet = terminal texte pour dialoguer avec tout serveur TCP utilisant un protocole ASCII
Socket TCP
Serveur
Telnet
Ecran
Clavier
lit
lit
écrit
écrit
Module UV Réseaus / SDPage 78 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Quels mots surla classe java.lang.Thread
Permet de lancer des flots d’exécution simultanés au sein d’un même processus
– calcul parallèle, animation, . . .– attente sur entrée/sortie bloquante
Méthodes– démarrage : void start();– arrêt : void interrupt();– attente fin : void join();– traitement : void run();– . . .
Doit être héritée ou instanciée sur 1 objet implantant l’interface java.lang.Runnable
Module UV Réseaus / SDPage 79 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Le thread de redirection de flux
public class RedirigerFlux extends Thread { protected java.io.BufferedReader fluxLecture = null; protected java.io.PrintStream fluxEcriture = null; public RedirigerFlux (java.io.InputStream fl, java.io.OutputStream fe) {
fluxLecture = new java.io.BufferedReader( new java.io.InputStreamReader(fl));
fluxEcriture = new java.io.PrintStream(fe); super.start(); }
public void run() { try { String s; while ( (s = fluxLecture.readLine()) != null ) fluxEcriture.println(s); } catch (java.io.IOException err) {}} }
Module UV Réseaus / SDPage 80 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
L’application Telnet en Java
public class Telnet {
public static void main(String args[]) throws Exception
{
java.net.Socket socket = new java.net.Socket(machine, port);
// Création du thread redirigeant la socket vers l'écran.
RedirigerFlux socketVersEcran =
new RedirigerFlux(socket.getInputStream(), System.out);
// Création du thread redirigeant le clavier vers la socket.
RedirigerFlux clavierVersSocket =
new RedirigerFlux(System.in, socket.getOutputStream());
// Attendre la fin de lecture sur la socket..
socketVersEcran.join();
// Arrêter de lire le clavier.
clavierVersSocket.interrupt();
} }
Module UV Réseaus / SDPage 81 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Serveur
Un serveur TCP/IP multi - clients
Primitives accept() et read() bloquantes ! => besoin de threads dans le serveur pour gérer simultanément plusieurs clients !
ServerSocket
Socket
Socket
Connexion Client
Client connecté
Client connecté
accept()
read()
read()
Module UV Réseaus / SDPage 82 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Un serveur TCP/IP multi-threadé
import java.net.*;
public class ServeurMultiThreade {
public static void main(String args[]) throws Exception
{
ServerSocket serveur = new ServerSocket(#port);
while (true) {
System.out.println(serveur + " en attente !");
Socket client = serveur.accept();
new GestionnaireClient(client);
}
serveur.close();
}
}
Module UV Réseaus / SDPage 83 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Le thread gestionnaire des clients
public class GestionnaireClient extends Thread
{
protected java.net.Socket client;
public GestionnaireClient(java.net.Socket s)
{
client = s;
super.start();
}
public void run()
{
try {
// Traiter les requêtes clientes . . . puis
client.close();
} catch(Exception exc) { . . . }
} }
Module UV Réseaus / SDPage 84 / 84
Deruelle LaurentCopyright © 2002 Laurent Deruelle
Synthèse sur les sockets TCP/IP
API simple et fiable– peu de primitives orientées communication
Programmation clients != programmation serveurs !– asymétrie des primitives de communication
De nombreuses questions à se poser avant d’utiliser les primitives !
– Voir cours problèmes et solutions Rien pour la structuration de l’application ! Seulement approprié pour des applications réparties
simples (1 client vers 1 serveur) ou comme brique de base pour des couches middleware plus évoluées
– par ex. : WWW, FTP, email, news, . . .