IFT1025 16 Java et l`Internet

Transcription

IFT1025 16 Java et l`Internet
IFT1025
16
Miklós Csűrös
"OIBOH
30 mars 2011
Java et l’Internet
ࢱF 9Ŏ5&9 WFSTJPO JT &T GPMHU EFS ࢰFMMUFYU EJFTFT "SUJLFMT
16.1 Suite TCP/IP
;VO¤ࢣTU EFS #FJTQJFMUFYU EFS OJࢣUT 8FTFOUMJࢣFT
(fr)
JTU
VOE
OVS
EFN
;XFࢢF
EJFOU
BMMFJO
EFO
5FYU XF
La suite de protocoles d’Internet est définie à
Routeur
Routeur
FOUTUFIU
JO
XFMࢣFN
BMMF
O¶UJHFO
;FJࢣFO०
[V FSL
l’aide de l’abstraction par «couches», organisées
BVTSFJࢣFOE
CFVSUFJMFO
JTU 5FTU[FJࢣFO
० &CFOTP
en une hiérarchie.
Chaque[Vcouche
correspond
à
couche
protocoles: HTTP, SMTP, POP, ...
TࢣFO
I¤VॷHFO
#VࢣTUBCFOQBBSF
WPSLPNNFO
VOE
Application
un aspect séparé de la communication, allant de
BVࢣ
JO HFX¶IOMJࢣFO
%SVࢢTBࢣ
couche
fonctionnalité GBMMF
de base
jusqu’au
niveau des JOIBMUWPMMFO
applicaTransport
protocoles: TCP, UDP, ...
G¼ISVOH
BN
&OEF
VOE
HFSFJࢣU
IBU
TJF
IPॶFOMJࢣ
BV
tions sur les ordinateurs liés. Conceptuellement, les
couche
IP
Réseau
nœuds dans une couche échangent de l’information
-JTUJOH ࢰFMMUFYU EJF
à
l’aide des protocoles
standardisés.
Physiquement,
couche
5&9 54−Q SPHSBN Y F U F Y
Liaison
la connexion dans
établie
5&9chaque
F O D P Ecouche
J O H est
65'−
6 O Jpar
DPEF
couche
Physique
O J U J P O FsousO −−−−−−−−−−−−−−−
communication−−−−−−−−−−−−%
avec le nœud dansFlaG J couche
cable
cable
Ethernet
Ethernet
\ EPDVNFOUDMBTT < B QBQFS QU >{ T D S B S U D M } jacente.
\
E P D par
V N Fsignaux,
O U D M B T T synchronisation,
< B QBQFS QU >{ S F Q P S U } ? couche physique : caractéristiques physiques liés à la médium (encodage
−−−−−1 B L F U F −−−−−−−−−−−−−−−−−−−−−−−−−−−
etc.)
\ V T F Q B D L B H F < V U G > { J O Q V U F O D } C F J 9F5FY
? couche liaison : transportation de paquets dans la couche physique (p.e.,
& Jprotocole
O H B O H T L PEthernet)
E J F S V O H NFIS O ¶ U J H .VTT 65
? couche réseau : acheminement de paquets à travers un seul réseau.
\ VExemple
T F Q B D L B H: FInternet
{ Y V O J DProtocol
P E F } définit
G ¼ S 9F5FY \ V T F et
Q B la
D Ltransmission
B H F { G P O U T Qde
F Dmessages
} G ¼ S :9F5FY l’adressage IPv4 (32 bits en format xxx.xxx.xxx.xxx) où IPv6 (128 bits),
\ V T Ftransport
Q B D L B H F[reçu
{ Y M U YdeU Smessage],
B } G ¼ S(3)9F5FY (1) passerrelles entre réseaux [next hop], (2) couche liaison → couche
\ V T F Q B D L B H F { V S M } G ¼ S 9F5FY [VN 6NCSFDI
couche transport → couche liaison [envoi de message].
\ V T F Q B D L B H F { OHFSNBO } & J O T U F M M V O H F O G ¼ S
? couche transport : assure la fiabilité de la communication (assemblage
4 J Mde
C F Opaquets,
U S F O O V Orequêtes
H F U D de retransmission). Exemple : Transmission Control Protocol (TCP) assure\ l’assemblage
V T F Q B D L B H F et
{ Nlivraison
V M U J D P M propre
} F Sde
M B V C U FT NJU \
N F I S T Q B M U J H [V T F U [ F O
messages, ainsi que le multiplexage par ports.
V T F Q BExemples
D L B H F { H :S BHypertext
Q I J D Y } Transfer
6 O U F S T U ¼ U [ V O H WP
? couche application : définit le syntaxe de la communication sur un\ port.
\ VTFQBDLBHF { XSBQGJH } VNGMPTTFOF (SBGJLF
Protocol (http), File Transfer Protocol (ftp), Simple Mail Transfer Protocol (smtp), Post Office Protocol (pop),
\ V T F Q B D L B H F { W F S C B U J N }
Internet Message Access Protocol (imap), Internet Relay Chat Protocol (irc),
\ V T etc.
FQBDLBHF { Q J D J O Q B S }
\ V T F Q B D L B H F < HFSNBO > { W B S J P S F G } F S X F J U F S
\ V T F Q B D L B H F < XJEF > { T J E F D B Q } F S N ¶ H M J D I U
" C C J M E V O H F O VOE 5 B C F M M F O
\ VTFQBDLBHF { D D B Q U J P O } "OQBTTVOHTN¶HMJD
"CCJMEVOHTCF[FJDIOVOHFO
\ V T F Q B D L B H F { D B Q U −P G }
\ VTFQBDLBHF < D P M P S M J O L T M J O L D P M P S CMVF >{
J O E F S 1%'
\ VTFQBDLBHF { M J T U J O H T }
\ V T F Q B D L B H F { S B H H F E F }
\ M F U \ S B H H F E S J H I U \ 3 B H H F E 3 J H I U
\ V T F Q B D L B H F < OFXDPNNBOET O F X Q B S B N F U F S T > {
;FJMFOVNCS¼DIF CFT CFJ \ DBQUJPO
1
−−−−−−−−−−− 4 D I S J G U E F G J O J U J P O F O G ¼ S 9 F U F
\ E F G B V M U G P O U G F B U V S F T { 4 D B M F .BUDI-PXFSDBT
B V G F J O F Y−)¶IF > ) B S N P O J T J F S V O H
\ T F U N B J O G P O U < .BQQJOH U F Y −U F Y U > { - J O V Y - J C
\ T F U S P N B O G P O U < .BQQJOH U F Y −U F Y U > { - J O V Y #
\ T F U S P N B O G P O U < .BQQJOH U F Y −U F Y U 3 B X ' F B U
\ T F U S P N B O G P O U < .BQQJOH U F Y −U F Y U > { - J O V Y #
\ T F U T B O T G P O U < .BQQJOH U F Y −U F Y U > { .ZSJBE 1
On
peut
établir
connexion
TCP/IP
le logiciel telnet :
une
par
telnet adresse port
(adresse est l’adresse IP ou le
nom du serveur.) Le protocole HTTP définit par
exemple le syntaxe du message GET : c’est la requête d’un
document. On envoie le message GET chemin protocole, suivi
"OIBOH
par d’autres lignes d’informasur la requête,
ࢱF 9Ŏtion
5&9 WFSTJPO
JT fini par
vide. EJFTFT "SUJLFMT
&T GPMHUune
EFSligne
ࢰFMMUFYU
;VO¤ࢣTU EFS #FJTQJFMUFYU EFS OJࢣUT 8FTFOUMJࢣFT
(fr)
JTU VOE OVS EFN ;XFࢢF EJFOU BMMFJO EFO 5FYU XF
FOUTUFIU JO XFMࢣFN BMMF O¶UJHFO ;FJࢣFO० [V FSL
BVTSFJࢣFOE [V CFVSUFJMFO JTU 5FTU[FJࢣFO ० &CFOTP
TࢣFO I¤VॷHFO #VࢣTUBCFOQBBSF WPSLPNNFO VOE
GBMMF BVࢣ JO HFX¶IOMJࢣFO JOIBMUWPMMFO %SVࢢTBࢣ
G¼ISVOH BN &OEF VOE HFSFJࢣU IBU TJF IPॶFOMJࢣ BV
Le protocole SMTP définit
-JTUJOH ࢰFMMUFYU EJF
les messages pour envoyer
5&9 un
54−Q
SPHSBN: HELO
Y F U Fpour
Y
courriel
se
5&9 présenter,
F O D P E J O H MAIL
65'−
JDPEF
FROM 6 Opour
−−−−−−−−−−−−%
F G J O J UTO
J P Opour
F O −−−−−−−−−−−−−−−
l’expéditeur, RCPT
le
\ EPDVNFOUDMBTT < B QBQFS QU >{ T D S B S U D M } destinataire,
et
DATA
pour
le
\ E P D V N F O U D M B T T < B Q B Q F S Q U > { S F Q P S U } texte
courriel.
−−−−−1
B L Fdu
U F −−−−−−−−−−−−−−−−−−−−−−−−−−−
\ V T F Q B D L B H F < V U G > { J O Q V U F O D } C F J 9F5FY
& J O H B O H T L P E J F S V O H NFIS O ¶ U J H .VTT 65
\ V T F Q B D L B H F { Y V O J D P E F } G ¼ S 9F5FY ࢱF
\ V T F9QŎB5D&L9BWFSTJPO
H F { G P O JT
U T Q
F D } G ¼ S 9F5FY \
V
T
F
Q
B
D
L
B
H
F
{
Y
M
U
Y
B } "SUJLFMT
G ¼ S 9F5FY &T GPMHU EFS ࢰFMMUFYUU SEJFTFT
\
V
T
F
Q
B
D
L
B
H
F
{
V
S
M
}
G
¼
S
9F5FY
6NCSFDI
;VO¤ࢣTU EFS #FJTQJFMUFYU EFS OJࢣUT[VN
8FTFOUMJࢣFT
(fr)
\ V T F Q B D L B H F { OHFSNBO } & J O T U F M M V O H F O G ¼ S
JTU VOE
OVS EFN ;XFࢢF EJFOU BMMFJO EFO 5FYU XF
4JMCFOUSFOOVOH FUD FOUTUFIU
[VJ U FSL
\ V T F Q B D LJO
B HXFMࢣFN
F { N V M U J DBMMF
P M }O¶UJHFO
F S M B;FJࢣFO०
VCU FT N
\
BVTSFJࢣFOE
N F I S T Q [V
B M U CFVSUFJMFO
J H [V T F UJTU
[ F O5FTU[FJࢣFO ० &CFOTP
\ V T F QI¤VॷHFO
B D L B H F { H#VࢣTUBCFOQBBSF
S B Q I J D Y } 6 OWPSLPNNFO
U F S T U ¼ U [ V O HVOE
WP
TࢣFO
\
V
T
F
Q
B
D
L
B
H
F
{
X
S
B
Q
G
J
H
}
V
N
G
M
P
T
T
F
O
F
(
S
B
G
JLF
GBMMF BVࢣ JO HFX¶IOMJࢣFO JOIBMUWPMMFO %SVࢢTBࢣ
\ V T F Q B D L B H F { W F S C B U J N }
G¼ISVOH
IBU TJF IPॶFOMJࢣ BV
\ V T F Q B D BN
L B H&OEF
F { Q J DVOE
J O Q HFSFJࢣU
BS }
\ V T F Q B D L B H F < HFSNBO > { W B S J P-JTUJOH
SFG} F S X F J U FEJF
S
ࢰFMMUFYU
\ V T F Q B D L B H F < XJEF > { T J E F D B Q } F S N ¶ H M J D I U
5&9
Y5FBU CF FY M M F O
" C C54−Q
J M E V SPHSBN
O H F O VOE
5&9
F
O
D
P
E
J
O
H
65'−
O JODQPBETFT V O H T N ¶ H M J D
\ V T F Q B D L B H F { D D B Q U J P O } 6"
−−−−−−−−−−−−%
F
G
J
O
J
U
J
P
O
F
" C C J M E V O H T C F [ F J D I O V O H FOO−−−−−−−−−−−−−−−
\
E
P
D
Q B QG }F S Q U > { T D S B S U D M } \ V T FVQNBFDOL UBDHMFB{T TD B< QB U−P
\
E
P
D
V
N
F
O
U
D
M
B
T
T
<
B
\ V T F Q B D L B H F < D P M P S M JQOBLQTF S M J OQLU D> {P MS PF SQ P CS UM V} F >{
−−−−−1
F −−−−−−−−−−−−−−−−−−−−−−−−−−−
J O EBFLS F U1%'
\
\ V VT FT QF QB DB LD LB HB HF F{ <M JVTUUG JO> H{ TJ O} Q V U F O D } C F J 9F5FY
\ V T&FJQOBHDBLOBHHTFL{PSEBJHFHS FVEO H F }NFIS O ¶ U J H .VTT 65
\ V TM FF QU \B DS LB BH HHFF {E YS VJ HOIJ DU P\ E3FB}
\
H H F GE¼3SJ H 9F5FY
IU
\
V
T
F
Q
B
D
L
B
H
F
{
G
P
O
U
T
Q
F
D
}
G
¼
S
9F5FY
\ V T F Q B D L B H F < OFXDPNNBOET O F X Q B S B N F U F S T > {
\ V T F;QFBJDM FLOB VH N
F {CYS ¼M UDYIUFS BC}F T GC¼FSJ 9F5FY
\ D B Q U J P O
"OIBOH
2
16.2
Sockets
L’accès à la suite TCP/IP se fait par sockets. Un socket correspond à une connexion dans la couche de
transport (adresse+port au serveur).
Socket au client
/** Code d’un client */
import java.net.Socket;
import java.io.*;
...
Socket s = new Socket("www.iro.umontreal.ca", 80); // adresse et port
InputStream instream = s.getInputStream();
OutputStream outstream = s.getOutputStream();
PrintWriter out = new PrintWriter(outstream);
BufferedReader in = new BufferedReader(new InputStreamReader(instream));
String command = "GET / HTTP/1.0\n\n";
out.print(command);
out.flush(); // pour assurer l’envoi
while(true) // et on lit ce qui arrive à l’input
{
String line = in.readLine();
if (in == null) break;
...
}
s.close(); // libère la ressource Socket
Sockets au serveur
/** Code du serveur */
import java.net.Socket;
import java.net.ServerSocket;
import java.io.*;
...
int port = 8888; // port écouté sur cette machine
SocketServer server = new SocketServer(port); // lance le serveur
while (true)
{
Socket s = server.accept(); // attente de connexion [sommeil du procéssus]
Runnable service = new ClientAssistant(s);
Thread t = new Thread(service); // traiter les connections en Threads séparés
t.start(); // et on peut continuer la boucle
}
Ici, la classe ClientAssistant utilise les méthodes getInputStream() et getOutputStream() du Socket dans la communication.
16.3
Connexion URL
L’API de Java définit des classes explicitement conçues pour la communication par HTTP et FTP.
? classe URL : définit le format Unified Resource Locator (URL), comme http://www.iro.umontreal.
ca/index.html.
? classe URLConnection : encapsule la communication par sockets et la construction de messages
HTTP/FTP.
3
? classe HttpURLConnection : extension de URLConnection avec d’autres fonctionnalités de HTTP.
⇒ il n’est pas nécessaire de connaı̂tre les détails du protocole http, ou les sockets.
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
...
String urlString = "http://www.iro.umontreal.ca/";
URL u = new URL(urlString);
URLConnection connection = u.openConnection(); // throws IOException
HttpURLConnection httpConnection
= (HttpURLConnection) connection; // conversion OK à cause de "http://"
int code = httpConnection.getResponseCode(); // 200=OK, 404=Not Found
if (code != HttpURLConnection.HTTP_OK) // != 200
{
System.err.println(httpConnection.getResponseMessage());// p.e., "Not Found"
} else
{
InputStream instream = connection.getInputStream();
... // lecture du texte
}
16.4
Applets
Imbrication d’une application Java dans un page Web : applet. La classe javax.swing.JApplet définit
un containeur de plus haut niveau comme JFrame. Un applet n’a pas d’accès aux fichiers locaux et ne peux
télécharger que des document au serveur (par URL). Inclusion de l’applet dans un document HTML :
<applet code="TumbleItem"
archive="tumbleClasses.jar, tumbleImages.jar"
width="600" height="95">
<param name="maxwidth" value="120">
<param name="nimgs" value="17">
<param name="offset" value="-57">
<param name="img" value="images/tumble">
Your browser is completely ignoring the <applet> tag!
</applet>
Extension de JApplet : redéfinition des méthodes suivantes.
? init() : c’est comme un constructeur, appellé une fois quand l’applet est affiché par le fureteur (p.e.,
lancer des threads)
? start() : appellée après init, chaque fois que la page est affiché de nouveau (p.e., lancer une animation
avec Timer)
? stop() : appellée avant de déstruction quand l’usager quitte le page (p.e., arrêter l’animation)
? destroy() : appellé pour la libération de ressources (p.e., arrêter les threads)
Graphisme : redéfinir paint(Graphics g) où attacher des composantes Swing à getContentPane().
Paramètres : pour recupérer les paramètres spécifiées dans la page HTML (<param... >), utiliser la
méthode String getParameter(String nom) dans le code Java.
4