1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
5 <html xmlns="http://www.w3.org/1999/xhtml" >
7 <title>Programmation Internet</title>
9 <meta http-equiv="Content-Type"
10 content="text/html; charset=utf-8" />
11 <meta name="copyright"
12 content="Copyright © 2013 Kim Nguyễn" />
15 <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
16 <!-- Load the library -->
17 <script src="../simpleWebSlides.js" type="text/javascript" ></script>
19 <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css" media="all" />
20 <!-- Load a custom Theme, the class-element marks this style-sheet
21 a "theme" that can be swtiched dynamicaly -->
22 <link class="sws-theme" rel="stylesheet" title="U-Psud style" href="../themes/uPsud.css" type="text/css" />
24 <!-- Customize some templates and initialize -->
26 <script type="text/javascript">
27 SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
28 SWS.Config['sws-object-deactivate'] = SWS.Effects.objectDeactivateFadeOut;
29 SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
31 //Ensures that we load SWS at the very end, after MathJax has
34 $(window).load(SWS.Presentation.init);
39 <div class="sws-slide sws-cover sws-option-nofooter">
40 <h1>Programmation Internet</h1>
42 <a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
43 <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
46 <div class="sws-slide" >
50 <li class="done"> Systèmes d'exploitation</li>
51 <li class="done"> Réseaux et Internet</li>
52 <li class="done"> Le Web </li>
55 <li class="hl">4.1 Introduction</li>
57 <li>4.3 Selecteurs</li>
64 <div class="sws-slide">
65 <h1>Cascading Style Sheets (CSS)</h1>
69 Langage permettant de décrire le <em>style graphique</em>
74 <p>On peut appliquer un style CSS</p>
77 utilisant <em>l'attribut <code>style</code></em></li>
78 <li> À une page en utilisant
79 l'élément <em><code><![CDATA[ <style>...</style> ]]></code></em>
82 balise <code><![CDATA[<head>...</head>]]></code>).
84 <li>À un ensemble de pages en référençant un fichier de style
85 dans chacune des pages
89 <div class="sws-slide">
90 <h1> L'attribut <tt>style</tt></h1>
91 <code> <![CDATA[ <a href="http://www.u-psud.fr" style="color:red">Un lien</a>]]>
94 <p style="width:80%; margin-left:5%; border-style:solid;border-width:1pt;border-color:gray;">
95 <a href="http://www.u-psud.fr" style="color:red;text-decoration:underline;">Un lien</a>
97 <p class="sws-pause">Inconvénient: il faut copier l'attribut
98 style pour tous les liens de la page.
102 <div class="sws-slide">
105 <li> Ensemble de logiciels et protocoles basés sur <em>TCP/IP</em>
107 <li> Modèle Client/Serveur</li>
108 <li> Un serveur fournit un service:
111 <li>transfert de fichier (ftp)</li>
112 <li>connexion à distance (ssh)</li>
116 <li> Plusieurs services peuvent être actifs sur la même
117 machine (serveur). Un <em>port (identifiant numérique)</em>
118 est associé à chaque service. Sur Internet, un service est
121 <li>L'adresse IP de la machine sur lequel il fonctionne</li>
122 <li>Le numéro de port sur lequel le programme attend les
128 <div class="sws-slide">
129 <h1> Exemples de services </h1>
130 <table class="simple" style="width:100%">
131 <tr><th style="width:10%">Service</th>
132 <th style="width:40%">Protocole</th>
133 <th style="width:5%">Port</th>
134 <th style="width:45%;">Description</th>
137 <td>ftp</td> <td >File Transfer Protocol</td> <td>
138 20,21 </td> <td>Transfert de fichiers</td> </tr>
139 <tr> <td>telnet</td> <td>Network Virtual
140 Terminal</td> <td>23</td> <td>Shell à distance</td></tr>
141 <tr> <td>ssh</td> <td>Secure Shell</td> <td>22</td><td>Shell à
142 distance crypté</td></tr>
143 <tr> <td>mail</td><td>Simple Mail Transfer
144 Protocol</td> <td>25</td> <td>Envoi de mail</td></tr>
145 <tr><td>pop</td> <td>Post Office
146 Protocol</td> <td>110</td><td>Récupération de mail</td></tr>
147 <tr><td>imap</td> <td>Internet Message Access
148 Protocol</td> <td>143</td><td>Synchronisation de mails</td></tr>
149 <tr><td>nslookup</td> <td>Domain Name
150 System</td> <td>42</td> <td>Serveur de noms</td></tr>
151 <tr ><td><em>http</em></td> <td>Hyper Text Transfer Protocole</td><td>80</td><td>Web</td></tr>
155 <div class="sws-slide">
156 <h1> World Wide Web (1/2)</h1>
158 <li>Service de distribution de page <em>hypertexte</em></li>
159 <li>Une page <em>hypertexte</em> contient des références
160 immédiatement accessibles à d'autres pages (pointeurs
161 ou <em>liens hypertextes</em>)</li>
162 <li>Les pages sont décrites dans le
163 langage <em>HTML</em> (HyperText Markup Language) </li>
164 <li>Architecture client/serveur:
166 <li>Les pages sont stockées sur le serveur</li>
167 <li>Les pages sont envoyées au client (navigateur Web) qui
168 en assure le rendu</li>
171 <li>Utilise le protocole <em>HTTP</em> pour les échanges entre
172 le client et le serveur</li>
176 <div class="sws-slide">
177 <h1> World Wide Web (2/2)</h1>
180 <tr><td>URL</td> <td>localisation d'une page Web (« adresse de
181 la page »)</td> </tr>
182 <tr><td>HTTP</td> <td>protocole de communication entre un
183 client et un serveur Web</td> </tr>
184 <tr><td>HTML</td> <td>langage de description des pages
187 <p>Évolutions récentes (Web 2.0, internet mobile, <i>Cloud</i>, …)</p>
189 <li>Standardisation du contenu multimédia (images, vidéos et
190 sons en <i>streaming</i>)</li>
191 <li>Contenu interactif avancé (stockage de fichier coté
192 client, rendu 3D, …)</li>
193 <li>Uniformisation de nombreuses extensions <i>ad-hoc</i>: HTML5</li>
198 <div class="sws-slide" >
201 <li class="done" > Systèmes d'exploitation</li>
202 <li class="done" > Réseaux et Internet </li>
205 <li class="done">3.1 Internet et ses services</li>
206 <li class="hl" >3.2 Fonctionnement du Web</li>
207 <li class="">3.3 Adressage des documents Web </li>
208 <li>3.4 Le protocole HTTP</li>
209 <li>3.5 HTML, le format des documents</li>
215 <div class="sws-slide">
216 <h1>Fonctionnement du Web</h1>
217 <div style="text-align:center;">
218 <img style="width:90%;height:50%;" src="cours_4.svg"
219 type="image/svg+xml" />
224 <div class="sws-slide">
226 <p>Le navigateur :</p>
228 <li>Analyse l'URL demandée</li>
229 <li>Obtient l'adresse IP auprès du serveur DNS</li>
230 <li>Établit une connexion (potentiellement sécurisée) avec le serveur</li>
231 <li>Envoie une <em>requête HTTP</em> au serveur</li>
232 <li>Récupère la page envoyée par le serveur dans
233 sa <em>réponse</em></li>
234 <li>Analyse la page et récupère les éléments référencés :
236 <li>Effectue le traitement du code client</li>
237 <li>Met en forme le contenu et l'affiche dans la fenêtre</li>
241 <div class="sws-slide">
242 <h1>Côté serveur</h1>
244 <li>Un <i>listener</i> (<i>thread</i> particulier) attend les
245 connexions sur un port par défaut (80 dans le cas de HTTP)</li>
246 <li>À chaque nouvelle connexion, le <i>listener</i> crée
247 un <i>thread</i> de traitement et se remet en attente
249 <li>Le <i>thread</i> de traitement vérifie la validité de la
252 <li>le document demandé existe ?
254 <li>le client est autorisé à accéder au document ?
259 <li>Le <i>thread</i> de traitement répond à la requête :
261 <li>Exécution de code côté serveur, récupération de
262 données dans une BD, …
264 <li>Envoi de la page au client
271 <div class="sws-slide" >
274 <li class="done" > Systèmes d'exploitation</li>
275 <li class="done" > Réseaux et Internet </li>
278 <li class="done">3.1 Internet et ses services</li>
279 <li class="done" >3.2 Fonctionnement du Web</li>
280 <li class="hl">3.3 Adressage des documents Web </li>
281 <li>3.4 Le protocole HTTP</li>
282 <li>3.5 HTML, le format des documents</li>
287 <div class="sws-slide">
288 <h1>Adressage des documents Web (1/3)</h1>
290 <tr><td>URL</td><td> <i>Uniform Resource Locator</i>
291 identifie un document sur internet</td></tr>
293 <p>Une URL se décompose en 3 partie</p>
294 <ul><li><em>protocole</em> (comment ?)</li>
295 <li><span style="color:orange;">adresse</span> (où ?)</li>
296 <li><span style="color:blue;">document</span> (quoi ?)</li>
298 <p>Syntaxe (simplifiée) :</p>
299 <code> <em>protocole</em>://<span style="color:orange">adresse</span>/<span style="color:blue;">document</span></code>
301 <code> <em>http</em>://<span style="color:orange">www.lri.fr</span>/<span style="color:blue;">~kn/teach_fr.html</span></code>
304 <div class="sws-slide">
305 <h1>Adressage des documents Web (2/3)</h1>
306 <p>On peut aussi préciser <span style="color:purple;">un numéro
307 de port</span>, des <span style="color:black;">paramètres</span>
308 et un <span style="color:red;">emplacement</span> :
310 <code> <em>protocole</em>://<span style="color:orange">adresse</span>:<span style="color:purple">port</span>/<span style="color:blue;">document</span>?<span style="color:black;">p1=v1</span>&<span style="color:black;">p2=v2</span>#<span style="color:red">empl</span></code>
311 <p class="sws-pause" >Exemple :</p>
312 <code> <a style="color:gray" href="http://www.youtube.com:80/results?search_query=tbbt#search-results"><em>http</em>://<span style="color:orange">www.youtube.com</span>:<span style="color:purple">80</span>/<span style="color:blue;">results</span>?<span style="color:black;">search_query=tbbt</span>#<span style="color:red">search-results</span></a></code>
313 <p>Le serveur utilise les paramètres passés par le client dans
314 l'URL pour <i>calculer</i> le contenu de la page (changer la
315 chaîne « <code>tbbt</code> » ci-dessus et essayer)</p>
317 <div class="sws-slide">
318 <h1>Adressage des documents Web (3/3)</h1>
320 La <em>racine</em> d'un site Web
321 (ex: <em><code>http://www.lri.fr/</code></em>) correspond
322 à un répertoire sur le disque du serveur
323 (ex: <em><code>/var/www</code></em>). Le fichier</p>
324 <code> http://www.lri.fr/index.html</code>
325 <p>se trouve à l'emplacement</p>
326 <code> /var/www/index.html</code>
327 <p>Le serveur Web peut aussi effectuer des <em>réécritures
328 d'adresses</em> :</p>
329 <code> http://www.lri.fr/~kn/index.html</code>
331 <code> /home/kn/public_html/index.html</code>
333 <div class="sws-slide" >
336 <li class="done" > Systèmes d'exploitation</li>
337 <li class="done" > Réseaux et Internet </li>
340 <li class="done">3.1 Internet et ses services</li>
341 <li class="done" >3.2 Fonctionnement du Web</li>
342 <li class="done">3.3 Adressage des documents Web </li>
343 <li class="hl">3.4 Le protocole HTTP</li>
344 <li>3.5 HTML, le format des documents</li>
349 <div class="sws-slide">
350 <h1>Caractéristiques du protocole HTTP</h1>
352 <li>Sans connexion permanente:
354 <li>Le client se connecte au serveur, envoie sa requête,
356 <li>Le serveur se connecte au client, envoie sa réponse,
360 <li>Indépendant du contenu : permet d'envoyer des documents
361 (hyper) texte, du son, des images, …</li>
362 <li>Sans <em>état</em>: chaque paire requête/réponse est
363 indépendante (le serveur ne maintient pas d'information sur le
364 client entre les requêtes)</li>
365 <li>Protocole en mode <em>texte</em></li>
368 <div class="sws-slide">
369 <h1>Format des messages HTTP</h1>
370 <p>Les messages ont la forme suivante</p>
371 <ul><li>Ligne initiale CR LF</li>
372 <li>zéro ou plusieurs lignes d'option CR LF</li>
374 <li>Corp du message (document envoyé, paramètres de la
377 <ul><li><em>Requête</em> la première ligne contient un nom
378 de <em>méthode</em> (GET, POST, HEAD, …), le paramètre de la
379 méthode et la version du protocole</li>
380 <li><em>Réponse</em> la version du protocole, le code de la
381 réponse (200, 404, 403, …) et un message informatif
385 <div class="sws-slide">
388 <div class="sws-slide" >
391 <li class="done" > Systèmes d'exploitation</li>
392 <li class="done" > Réseaux et Internet </li>
395 <li class="done">3.1 Internet et ses services</li>
396 <li class="done" >3.2 Fonctionnement du Web</li>
397 <li class="done">3.3 Adressage des documents Web </li>
398 <li class="done">3.4 Le protocole HTTP</li>
399 <li class="hl">3.5 HTML, le format des documents</li>
404 <div class="sws-slide">
407 <em>HyperText Markup Language</em> : langage de mise en forme
408 de documents hypertextes (texte + liens vers d'autres
409 documents). Développé au CERN en 1989.<br/>
410 <em>1991</em> : premier navigateur en mode texte<br/>
411 <em>1993</em> : premier navigateur graphique (mosaic)
412 développé au NCSA (National Center for Supercomputing
416 <div class="sws-slide">
417 <h1>Document HTML</h1>
418 <ul><li> est un document <em>semi-structuré</em></li>
419 <li> dont la structure est donnée par
420 des <em>balises</em></li>
423 <table class="btable simple" style="width:90%;margin-left:5%">
425 <tr><th style="width:65%;">Exemple</th> <th>Rendu par défaut</th></tr>
427 <tr><td ><tt><![CDATA[Un texte <b>en gras</b> ]]></tt></td><td>Un
428 texte <b>en gras</b></td></tr>
429 <tr><td ><code><![CDATA[<a href="http://www.u-psud.fr">Un lien</a> ]]></code></td>
430 <td><a style="color:blue;text-decoration:underline;"
431 href="http://www.u-psud.fr">Un lien</a></td></tr>
432 <tr><td><code><![CDATA[<ul>
433 <li>Premièrement</li>
434 <li>Deuxièmement</li>
435 </ul> ]]></code></td> <td><ul>
436 <li>Premièrement</li>
437 <li>Deuxièmement</li>
442 <p>On dit que <em><tt><![CDATA[<toto>]]></tt></em> est une balise <em>
443 ouvrante</em> et <em><tt><![CDATA[</toto>]]></tt></em> une
444 balise <em>fermante</em>. On peut
445 écrire <em><tt><![CDATA[<toto/>]]></tt></em> comme raccourci pour
446 <tt><![CDATA[<toto></toto>]]></tt>.
449 <div class="sws-slide">
450 <h1>Historique du langage HTML</h1>
452 <tr><td style="width:3em;">1973</td> <td>GML, Generalised Markup Language développé chez
453 IBM. Introduction de la notion de balise.</td></tr>
454 <tr><td>1980</td><td> SGML, Standardised GML, adopté par l'ISO</td></tr>
455 <tr><td>1989</td><td> HTML, basé sur SGML. Plusieurs entreprises (microsoft,
456 netscape, ... ) interprètent le standard de manière
458 <tr><td>1996</td> <td>XML, eXtensible Markup Language norme pour les
459 documents semi-structurés (SGML simplifié)</td></tr>
460 <tr><td>2000</td><td> XHTML, version de HTML suivant les conventions
462 <tr><td>2008</td><td> Première proposition pour le nouveau standard,
464 <tr><td>2014</td><td>Standardisation de HTML5</td></tr>
468 <div class="sws-slide">
469 <h1>XHTML <i>vs</i> HTML</h1>
470 <p>On utilise XHTML dans le cours. Différences avec HTML:</p>
473 Les balises sont <em>bien parenthésées</em>
474 (<tt><![CDATA[<a> <c> </c> ]]> <span style="color:red"></b></span></tt> est interdit)
476 <li>Les balises sont en minuscules</li>
478 <p>Les avantages sont les suivants</p>
479 <ul><li>HTML autorise les mélanges majuscule/minuscule, de ne
480 pas fermer certaines balise … Les navigateurs corrigent ces
481 erreurs de manières <em>différentes</em></li>
482 <li>Le document est <em>structuré</em> comme un programme
483 informatique (les balises ouvrantes/fermantes correspondent à
484 { et }). Plus simple à débugger.</li>
487 <div class="sws-slide">
488 <h1>Rôle d'(X)HTML</h1>
489 <p>Séparer la <em>structure</em> du document de
490 son <em>rendu</em>. La structure donne une <em>sémantique</em> au
493 <li>ceci est un titre</li>
494 <li>ceci est un paragraphe</li>
495 <li>ceci est un ensemble de caractères importants</li>
497 <p>Cela permet au navigateur d'assurer un rendu en fonction de la
498 sémantique. Il existe différents types de rendus:</p>
500 <li>graphique interactif (Chrome, Firefox, Internet Explorer,
502 <li>texte interactif (Lynx, navigateur en mode texte)</li>
503 <li>graphique statique (par ex: sur livre électronique)</li>
504 <li>rendu sur papier</li>
505 <li>graphique pour petit écran (terminal mobile)</li>
508 <div class="sws-slide">
509 <h1>Exemple de document</h1>
510 <p style="text-align:center;font-size:smaller;">(liste des balises
511 données sur la feuille de TD 4!)</p>
512 <div style="margin-left:10%;">
513 <code style="font-size:smaller;"><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
514 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
515 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
517 <title>Un titre</title>
518 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
521 <h1>Titre de section</h1>
522 <p> premier paragraphe de texte. On met
523 un <a href="http://www.lri.fr">lien</a> ici.
525 <!-- on peut aussi mettre des commentaires -->