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" >
49 <li> Systèmes d'exploitation ✔</li>
50 <li> Réseaux et Internet ✔ </li>
53 <li class="hl">3.1 Internet et ses services</li>
54 <li>3.2 Fonctionnement du Web</li>
55 <li>3.3 Adressage des documents Web</li>
56 <li>3.4 Le protocole HTTP</li>
57 <li>3.5 HTML, le format des documents</li>
63 <div class="sws-slide">
64 <h1> Bref historique d'Internet (1/2)</h1>
67 <td style="width:6.5em;">1959-1968</td> <td>ARPA
68 (<i>Advanced Research Project Agency</i>) crée un réseau
69 de quelques machines capable de résister à une attaque.</td>
72 <td>1969</td> <td>ARPANET. Interconnexion des ordinateurs
73 centraux des grandes universités et institutions
74 américaines. Première utilisation du concept de paquet d'information.</td>
78 <td>Interconnexion avec la Norvège et le Royaume-Uni.
83 <td> Passage au protocole TCP/IP. Naissance de l'Internet actuel.</td>
87 <div class="sws-slide">
88 <h1> Bref historique d'Internet (2/2)</h1>
91 <td style="width:6.7em;">1986</td> <td>« Autoroutes de
92 l'information ». Des super-ordinateurs et les premières
93 connexions à fibres optiques sont utilisées pour accélérer
94 le débit d'Internet.</td>
97 <td>1987-1992</td> <td>Apparition des premiers fournisseurs
98 d'accès. Les entreprises se connectent.</td>
102 <td>Avènement du Web. Démocratisation du haut-débit (vers
103 2000 pour la France).
107 <td>2000-présent</td>
108 <td> Explosion des services en ligne, arrivée des réseaux
109 sociaux, internet mobile, <i>Cloud</i> (stockage et calcul
110 mutualisés accessible depuis internet).</td>
115 <div class="sws-slide">
118 <li> Ensemble de logiciels et protocoles basés sur <em>TCP/IP</em>
120 <li> Modèle Client/Serveur</li>
121 <li> Un serveur fournit un service:
124 <li>transfert de fichier (ftp)</li>
125 <li>connexion à distance (ssh)</li>
129 <li> Plusieurs services peuvent être actifs sur la même
130 machine (serveur). Un <em>port (identifiant numérique)</em>
131 est associé à chaque service. Sur Internet, un service est
134 <li>L'adresse IP de la machine sur lequel il fonctionne</li>
135 <li>Le numéro de port sur lequel le programme attend les
141 <div class="sws-slide">
142 <h1> Exemples de services </h1>
143 <table class="simple" style="width:100%">
144 <tr><th style="width:10%">Service</th>
145 <th style="width:40%">Protocole</th>
146 <th style="width:5%">Port</th>
147 <th style="width:45%;">Description</th>
150 <td>ftp</td> <td >File Transfer Protocol</td> <td>
151 20,21 </td> <td>Transfert de fichiers</td> </tr>
152 <tr> <td>telnet</td> <td>Network Virtual
153 Terminal</td> <td>23</td> <td>Shell à distance</td></tr>
154 <tr> <td>ssh</td> <td>Secure Shell</td> <td>22</td><td>Shell à
155 distance crypté</td></tr>
156 <tr> <td>mail</td><td>Simple Mail Transfer
157 Protocol</td> <td>25</td> <td>Envoi de mail</td></tr>
158 <tr><td>pop</td> <td>Post Office
159 Protocol</td> <td>110</td><td>Récupération de mail</td></tr>
160 <tr><td>imap</td> <td>Internet Message Access
161 Protocol</td> <td>143</td><td>Synchronisation de mails</td></tr>
162 <tr><td>nslookup</td> <td>Domain Name
163 System</td> <td>42</td> <td>Serveur de noms</td></tr>
164 <tr ><td><em>http</em></td> <td>Hyper Text Transfer Protocole</td><td>80</td><td>Web</td></tr>
168 <div class="sws-slide">
169 <h1> World Wide Web (1/2)</h1>
171 <li>Service de distribution de page <em>hypertexte</em></li>
172 <li>Une page <em>hypertexte</em> contient des références
173 immédiatement accessibles à d'autres pages (pointeurs
174 ou <em>liens hypertextes</em>)</li>
175 <li>Les pages sont décrites dans le
176 langage <em>HTML</em> (HyperText Markup Language) </li>
177 <li>Architecture client/serveur:
179 <li>Les pages sont stockées sur le serveur</li>
180 <li>Les pages sont envoyées au client (navigateur Web) qui
181 en assure le rendu</li>
184 <li>Utilise le protocole <em>HTTP</em> pour les échanges entre
185 le client et le serveur</li>
189 <div class="sws-slide">
190 <h1> World Wide Web (2/2)</h1>
193 <tr><td>URL</td> <td>localisation d'une page Web (« adresse de
194 la page »)</td> </tr>
195 <tr><td>HTTP</td> <td>protocole de communication entre un
196 client et un serveur Web</td> </tr>
197 <tr><td>HTML</td> <td>langage de description des pages
200 <p>Évolutions récentes (Web 2.0, internet mobile, <i>Cloud</i>, …)</p>
202 <li>Standardisation du contenu multimédia (images, vidéos et
203 sons en <i>streaming</i>)</li>
204 <li>Contenu interactif avancé (stockage de fichier coté
205 client, rendu 3D, …)</li>
206 <li>Uniformisation de nombreuses extensions <i>ad-hoc</i>: HTML5</li>
211 <div class="sws-slide" >
214 <li class="done" > Systèmes d'exploitation</li>
215 <li class="done" > Réseaux et Internet </li>
218 <li class="done">3.1 Internet et ses services</li>
219 <li class="hl" >3.2 Fonctionnement du Web</li>
220 <li class="">3.3 Adressage des documents Web </li>
221 <li>3.4 Le protocole HTTP</li>
222 <li>3.5 HTML, le format des documents</li>
228 <div class="sws-slide">
229 <h1>Fonctionnement du Web</h1>
230 <div style="text-align:center;">
231 <img style="width:90%;height:50%;" src="cours_4.svg"
232 type="image/svg+xml" />
237 <div class="sws-slide">
239 <p>Le navigateur :</p>
241 <li>Analyse l'URL demandée</li>
242 <li>Obtient l'adresse IP auprès du serveur DNS</li>
243 <li>Établit une connexion (potentiellement sécurisée) avec le serveur</li>
244 <li>Envoie une <em>requête HTTP</em> au serveur</li>
245 <li>Récupère la page envoyée par le serveur dans
246 sa <em>réponse</em></li>
247 <li>Analyse la page et récupère les éléments référencés :
249 <li>Effectue le traitement du code client</li>
250 <li>Met en forme le contenu et l'affiche dans la fenêtre</li>
254 <div class="sws-slide">
255 <h1>Côté serveur</h1>
257 <li>Un <i>listener</i> (<i>thread</i> particulier) attend les
258 connexions sur un port par défaut (80 dans le cas de HTTP)</li>
259 <li>À chaque nouvelle connexion, le <i>listener</i> crée
260 un <i>thread</i> de traitement et se remet en attente
262 <li>Le <i>thread</i> de traitement vérifie la validité de la
265 <li>le document demandé existe ?
267 <li>le client est autorisé à accéder au document ?
272 <li>Le <i>thread</i> de traitement répond à la requête :
274 <li>Exécution de code côté serveur, récupération de
275 données dans une BD, …
277 <li>Envoi de la page au client
284 <div class="sws-slide" >
287 <li class="done" > Systèmes d'exploitation</li>
288 <li class="done" > Réseaux et Internet </li>
291 <li class="done">3.1 Internet et ses services</li>
292 <li class="done" >3.2 Fonctionnement du Web</li>
293 <li class="hl">3.3 Adressage des documents Web </li>
294 <li>3.4 Le protocole HTTP</li>
295 <li>3.5 HTML, le format des documents</li>
300 <div class="sws-slide">
301 <h1>Adressage des documents Web (1/3)</h1>
303 <tr><td>URL</td><td> <i>Uniform Resource Locator</i>
304 identifie un document sur internet</td></tr>
306 <p>Une URL se décompose en 3 partie</p>
307 <ul><li><em>protocole</em> (comment ?)</li>
308 <li><span style="color:orange;">adresse</span> (où ?)</li>
309 <li><span style="color:blue;">document</span> (quoi ?)</li>
311 <p>Syntaxe (simplifiée) :</p>
312 <code> <em>protocole</em>://<span style="color:orange">adresse</span>/<span style="color:blue;">document</span></code>
314 <code> <em>http</em>://<span style="color:orange">www.lri.fr</span>/<span style="color:blue;">~kn/teach_fr.html</span></code>
317 <div class="sws-slide">
318 <h1>Adressage des documents Web (2/3)</h1>
319 <p>On peut aussi préciser <span style="color:purple;">un numéro
320 de port</span>, des <span style="color:black;">paramètres</span>
321 et un <span style="color:red;">emplacement</span> :
323 <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>
324 <p class="sws-pause" >Exemple :</p>
325 <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>
326 <p>Le serveur utilise les paramètres passés par le client dans
327 l'URL pour <i>calculer</i> le contenu de la page (changer la
328 chaîne « <code>tbbt</code> » ci-dessus et essayer)</p>
330 <div class="sws-slide">
331 <h1>Adressage des documents Web (3/3)</h1>
333 La <em>racine</em> d'un site Web
334 (ex: <em><code>http://www.lri.fr/</code></em>) correspond
335 à un répertoire sur le disque du serveur
336 (ex: <em><code>/var/www</code></em>). Le fichier</p>
337 <code> http://www.lri.fr/index.html</code>
338 <p>se trouve à l'emplacement</p>
339 <code> /var/www/index.html</code>
340 <p>Le serveur Web peut aussi effectuer des <em>réécritures
341 d'adresses</em> :</p>
342 <code> http://www.lri.fr/~kn/index.html</code>
344 <code> /home/kn/public_html/index.html</code>
346 <div class="sws-slide" >
349 <li class="done" > Systèmes d'exploitation</li>
350 <li class="done" > Réseaux et Internet </li>
353 <li class="done">3.1 Internet et ses services</li>
354 <li class="done" >3.2 Fonctionnement du Web</li>
355 <li class="done">3.3 Adressage des documents Web </li>
356 <li class="hl">3.4 Le protocole HTTP</li>
357 <li>3.5 HTML, le format des documents</li>
362 <div class="sws-slide">
363 <h1>Caractéristiques du protocole HTTP</h1>
365 <li>Sans connexion permanente:
367 <li>Le client se connecte au serveur, envoie sa requête,
369 <li>Le serveur se connecte au client, envoie sa réponse,
373 <li>Indépendant du contenu : permet d'envoyer des documents
374 (hyper) texte, du son, des images, …</li>
375 <li>Sans <em>état</em>: chaque paire requête/réponse est
376 indépendante (le serveur ne maintient pas d'information sur le
377 client entre les requêtes)</li>
378 <li>Protocole en mode <em>texte</em></li>
381 <div class="sws-slide">
382 <h1>Format des messages HTTP</h1>
383 <p>Les messages ont la forme suivante</p>
384 <ul><li>Ligne initiale CR LF</li>
385 <li>zéro ou plusieurs lignes d'option CR LF</li>
387 <li>Corp du message (document envoyé, paramètres de la
390 <ul><li><em>Requête</em> la première ligne contient un nom
391 de <em>méthode</em> (GET, POST, HEAD, …), le paramètre de la
392 méthode et la version du protocole</li>
393 <li><em>Réponse</em> la version du protocole, le code de la
394 réponse (200, 404, 403, …) et un message informatif
398 <div class="sws-slide">
401 <div class="sws-slide" >
404 <li class="done" > Systèmes d'exploitation</li>
405 <li class="done" > Réseaux et Internet </li>
408 <li class="done">3.1 Internet et ses services</li>
409 <li class="done" >3.2 Fonctionnement du Web</li>
410 <li class="done">3.3 Adressage des documents Web </li>
411 <li class="done">3.4 Le protocole HTTP</li>
412 <li class="hl">3.5 HTML, le format des documents</li>
417 <div class="sws-slide">
420 <em>HyperText Markup Language</em> : langage de mise en forme
421 de documents hypertextes (texte + liens vers d'autres
422 documents). Développé au CERN en 1989.<br/>
423 <em>1991</em> : premier navigateur en mode texte<br/>
424 <em>1993</em> : premier navigateur graphique (mosaic)
425 développé au NCSA (National Center for Supercomputing
429 <div class="sws-slide">
430 <h1>Document HTML</h1>
431 <ul><li> est un document <em>semi-structuré</em></li>
432 <li> dont la structure est donnée par
433 des <em>balises</em></li>
436 <table class="btable simple" style="width:90%;margin-left:5%">
438 <tr><th style="width:65%;">Exemple</th> <th>Rendu par défaut</th></tr>
440 <tr><td ><tt><![CDATA[Un texte <b>en gras</b> ]]></tt></td><td>Un
441 texte <b>en gras</b></td></tr>
442 <tr><td ><code><![CDATA[<a href="http://www.u-psud.fr">Un lien</a> ]]></code></td>
443 <td><a style="color:blue;text-decoration:underline;"
444 href="http://www.u-psud.fr">Un lien</a></td></tr>
445 <tr><td><code><![CDATA[<ul>
446 <li>Premièrement</li>
447 <li>Deuxièmement</li>
448 </ul> ]]></code></td> <td><ul>
449 <li>Premièrement</li>
450 <li>Deuxièmement</li>
455 <p>On dit que <em><tt><![CDATA[<toto>]]></tt></em> est une balise <em>
456 ouvrante</em> et <em><tt><![CDATA[</toto>]]></tt></em> une
457 balise <em>fermante</em>. On peut
458 écrire <em><tt><![CDATA[<toto/>]]></tt></em> comme raccourci pour
459 <tt><![CDATA[<toto></toto>]]></tt>.
462 <div class="sws-slide">
463 <h1>Historique du langage HTML</h1>
465 <tr><td style="width:3em;">1973</td> <td>GML, Generalised Markup Language développé chez
466 IBM. Introduction de la notion de balise.</td></tr>
467 <tr><td>1980</td><td> SGML, Standardised GML, adopté par l'ISO</td></tr>
468 <tr><td>1989</td><td> HTML, basé sur SGML. Plusieurs entreprises (microsoft,
469 netscape, ... ) interprètent le standard de manière
471 <tr><td>1996</td> <td>XML, eXtensible Markup Language norme pour les
472 documents semi-structurés (SGML simplifié)</td></tr>
473 <tr><td>2000</td><td> XHTML, version de HTML suivant les conventions
475 <tr><td>2008</td><td> Première proposition pour le nouveau standard,
477 <tr><td>2014</td><td>Standardisation de HTML5</td></tr>
481 <div class="sws-slide">
482 <h1>XHTML <i>vs</i> HTML</h1>
483 <p>On utilise XHTML dans le cours. Différences avec HTML:</p>
486 Les balises sont <em>bien parenthésées</em>
487 (<tt><![CDATA[<a> <c> </c> ]]> <span style="color:red"></b></span></tt> est interdit)
489 <li>Les balises sont en minuscules</li>
491 <p>Les avantages sont les suivants</p>
492 <ul><li>HTML autorise les mélanges majuscule/minuscule, de ne
493 pas fermer certaines balise … Les navigateurs corrigent ces
494 erreurs de manières <em>différentes</em></li>
495 <li>Le document est <em>structuré</em> comme un programme
496 informatique (les balises ouvrantes/fermantes correspondent à
497 { et }). Plus simple à débugger.</li>
500 <div class="sws-slide">
501 <h1>Rôle d'(X)HTML</h1>
502 <p>Séparer la <em>structure</em> du document de
503 son <em>rendu</em>. La structure donne une <em>sémantique</em> au
506 <li>ceci est un titre</li>
507 <li>ceci est un paragraphe</li>
508 <li>ceci est un ensemble de caractères importants</li>
510 <p>Cela permet au navigateur d'assurer un rendu en fonction de la
511 sémantique. Il existe différents types de rendus:</p>
513 <li>graphique interactif (Chrome, Firefox, Internet Explorer,
515 <li>texte interactif (Lynx, navigateur en mode texte)</li>
516 <li>graphique statique (par ex: sur livre électronique)</li>
517 <li>rendu sur papier</li>
518 <li>graphique pour petit écran (terminal mobile)</li>
521 <div class="sws-slide">
522 <h1>Exemple de document</h1>
523 <p style="text-align:center;font-size:smaller;">(liste des balises
524 données sur la feuille de TD 4!)</p>
525 <div style="margin-left:10%;">
526 <code style="font-size:smaller;"><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
527 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
528 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
530 <title>Un titre</title>
531 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
534 <h1>Titre de section</h1>
535 <p> premier paragraphe de texte. On met
536 un <a href="http://www.lri.fr">lien</a> ici.
538 <!-- on peut aussi mettre des commentaires -->