Aller au menu - Aller au contenu

Icône Rappels

Mise à jour : 24/07/2009
Difficulté : Facile Facile Creative Commons BY-NC-SA
10 160 visites depuis 7 jours, dont 382 sur ce chapitre classé 25/786
Le titre de ce chapitre n'est pas très évocateur, je vous le concède... ^^
En fait, vous auriez pu remplacer ce dernier par : "tout ce que vous avez toujours voulu savoir sur le web sans jamais avoir osé le demander !".

Je sais qu'en bons Zéros que vous êtes, vous surfez régulièrement sur le net ; mais savez-vous réellement ce qu'il se passe lorsque vous saisissez une URL ou que vous suivez un lien ? Savez-vous ce qu'est un serveur web ? Connaissez-vous la différence entre une requête POST et une requête GET ?

Non ? Alors suivez le guide ! ^^

Sommaire du chapitre :
Icône du chapitre
Sommaire Chapitre suivant

Internet : qui ? quoi ? qu'est-ce ?

Je ne vais pas vous faire un historique sur la naissance du web tel que nous le connaissons maintenant, je vais juste vous rappeler le fonctionnement de celui-ci.
Cependant, si certaines personnes souhaitent tout de même en savoir plus sur l'histoire d'Internet, elles peuvent suivre ce lien.

Pour faire court, ne confondez pas Internet avec le web !

Internet est un assemblage de multiples réseaux, tous connectés entre eux. Cet amas de câbles, de fibres optiques... de matériels, pour faire simple, constitue Internet, aussi appelé "le réseau des réseaux".

Le Web est un système de fichiers présent sur des machines (serveurs) transitant par un protocole particulier, consultable grâce à des navigateurs web et fonctionnant SUR Internet ! Le web est donc un système de fichiers que toute personne possédant un ordinateur (ou un téléphone, maintenant...) connecté à Internet peut consulter (avec un abonnement d'un FAI, bien sûr... ^^ ).

En fait, consulter les fichiers présents sur le web est chose courante, surtout pour vous !
Eh oui ! Surfer sur le web, aller sur le Site du Zéro, consulter vos mails chez votre FAI... tout ceci est en fait de la consultation de fichiers présents sur Internet.
Vous n'êtes pas sans savoir que, dans la majeure partie des cas, on surfe sur le web avec un navigateur tel que Firefox, Internet Explorer, Safari... Ne vous êtes-vous jamais demandés comment les navigateurs savent aller au bon endroit ? Comme, par exemple, aller sur le SdZ ?

Image utilisateur


Votre navigateur vous demande une URL saisie en "1" et, une fois cette adresse validée, votre navigateur vous renvoie ce qui se trouve à cette adresse (oui, c'est une adresse), le Site du Zéro, en "2".
Il faut bien sûr que l'adresse existe et qu'il y ait quelque chose à cette adresse, sinon :

Image utilisateur


Pourquoi certaines adresses nous renvoient des pages web et d'autres des erreurs ?

Pour ceux qui ne le sauraient pas, tout ordinateur actuel possède une adresse sur un réseau : son adresse IP.
C'est grâce à cette adresse qu'un ordinateur, ou un serveur, peut s'identifier sur un réseau. Voyez ça comme sa carte d'identité. :)
Par exemple, chez moi, je suis connecté à ma box (fournie par mon FAI) qui me donne accès à Internet.
Sur Internet, cette box a une adresse qui lui est propre et celle-ci ressemble à quelques choses comme ça 242.231.15.123 : on appelle ces adresses des "adresses IP".

Lorsque vous demandez une page web à votre navigateur, vous lui demandez, de façon tacite, d'aller chercher ce qui se trouve à l'adresse demandée !

Eh ! Si les ordinateurs ont des adresses pour se reconnaître sur les réseaux, comment se fait-il qu'en tapant un nom comme "google.com" les navigateurs sachent où chercher ?

Partez du principe que toute adresse de site internet pointe vers un serveur (ou plusieurs) qui a une adresse. Par exemple, taper "http://www.google.fr" dans votre navigateur revient à saisir "http://74.125.19.147" (adresse d'un serveur Google sur Internet) : essayez, vous verrez !
Vous êtes d'accord sur le fait que cette suite de nombres n'est pas des plus faciles à retenir...
Il est bien plus simple de mémoriser google.fr. ^^
Je ne m'éterniserai pas sur le sujet mais sachez qu'il y a une machine qui fait le lien entre les adresses de serveurs (suite de nombres) et les adresses littérales (google.fr) : les DNS. Voyez ces machines comme de gigantesques annuaires téléphoniques, mais pour les sites internet. ;)

Et qu'est-ce que c'est que le "http://" ?

Si vous relisez bien ce que j'ai dit plus haut, vous devez voir que nous avons vu qu'avec l'URL que vous renseignez, vous spécifiez une machine à interroger, donc des fichiers à lire, il ne nous manque plus que le protocole.
Ici, il s'agit du protocole http.
C'est grâce à ce protocole que le navigateur envoie des "requêtes" (nous y reviendrons) aux serveurs que vous sollicitez. Il en existe d'autres comme le FTP, le SMTP...
Inutile de nous apesantir sur le sujet (c'est un tuto de programmation, pas de réseau, non mais)...

Au final, une URL peut se décomposer comme suit :

Image utilisateur


Je pense que ce schéma est assez explicite... ^^
Il y a toutefois un petit détail qu'il serait bon que vous sachiez. Dans les URL, il y a un paramètre facultatif : le numéro de port utilisé par le protocole.
En fait, chaque protocole de transfert utilise un port sur le serveur, voyez ça un peu comme une porte affectée à une personne. Par exemple, lorsque vous rentrez dans une gendarmerie, vous prenez l'entrée principale (sauf si vous vous êtes fait coffrer... ^^ ), seules les personnes autorisées ont le droit de prendre l'entrée de service.

C'est la même chose pour les protocoles de transfert, chacun a un port attribué :
  • HTTP : port 80 ;
  • FTP : port 20 ou 21 ;
  • SMTP : port 25 ;
  • ...


Si nous ajoutons le numéro de port à notre URL présente dans le schéma, nous aurions ceci :


Mais ceci est facultatif puisque le protocole http utilise le port 80 par défaut ! ;)

Maintenant que la lumière est plus ou moins faite sur la façon dont le web fonctionne, nous allons voir comment les serveurs nous retournent des pages web.

Les en-têtes en fête !

Nous avons vu que, lorsque vous saisissez une URL dans votre navigateur, que vous validez cette dernière, votre navigateur envoie une "requête" au serveur concerné afin qu'il nous renvoie une page web.
Tout d'abord, on nomme vulgairement l'échange de données entre votre navigateur et le serveur qui fournit les pages web un échange client / serveur.
Le client représente votre navigateur et le serveur... Enfin, vous avez deviné. :p

Le moment est venu de vous en apprendre un peu plus.
Voici ce qu'il se passe :
  • le client émet une requête http vers le serveur ciblé ;
  • le serveur reçoit les éléments de la requête ;
  • celui-ci les interprète ;
  • il renvoie la page demandée en émettant une réponse http ;
  • le client reçoit la page au format HTML ;
  • le client affiche la page.


Nous pouvons résumer ce qu'il se passe avec ce schéma :

Image utilisateur


Bon, on a compris que le navigateur et le serveur s'échangent des "requêtes http". Mais c'est quoi ?


Voici un exemple d'en-tête HTTP correspondant à cette adresse : http://www.6boy.info/parcours.html.
Code : Autre
1
2
3
4
5
6
7
8
9
GET /parcours.html HTTP/1.1
Host: www.6boy.info
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive


Je me doute que ceci doit vous faire peur... ^^
Ne vous en faites pas trop, nous n'allons pas décortiquer tout ça : nous allons juste voir ce que cela signifie. Je vous ai fait une petite image qui encadre les blocs principaux. Je sais, je suis trop bon...

Image utilisateur


Dîtes-vous que ce qui correspond au premier point est en fait ce que vous demandez au serveur.
Serveur spécifié dans le paramètre "Host" du deuxième bloc (nous ne parlerons pas des autres paramètres du deuxième bloc... le but n'est pas là).
Vous remarquez aussi qu'il y a un type de requête envoyée au serveur ; ici, il s'agit d'une requête de type "GET".
Vous pouvez comprendre la première ligne de la requête comme une discussion entre votre navigateur et le serveur spécifié, un peu comme ça : "Donne-moi la page suivante s'il te plaît".

Il existe d'autres types de requêtes HTTP, nous y reviendrons le moment venu... ^^

Maintenant, voyons ce que vous répond le serveur :

Image utilisateur


Le plus intéressant se trouve dans la première zone.
  • HTTP/1.x : le protocole utilisé pour la réponse
  • 200 : ce que le traitement de la requête sur le serveur a retourné comme type de réponse.
  • OK : la traduction de 200 en langage humain, ici le traitement de la requête a été un succès !


Il y a toutefois une chose importante dans ces entêtes HTTP, aussi bien dans la demande que dans la réponse :
Content-Type: text/html


Ceci signifie que le navigateur demande une page HTML et que le serveur retourne une page HTML.
Vous devriez savoir ce que c'est si vous avez suivi le tuto de M@teo.
Vous n'êtes pas sans savoir que le HTML est le langage de base pour toute page web STATIQUE.
Par là entendez que les pages sont toutes identiques et donc que leurs contenus ne s'adaptent pas aux utilisateurs.
Vous n'aimeriez pas vous connecter sur le SdZ et vous retrouver avec un autre compte, ou pire, vous connecter sur votre boîte mail de votre FAI et avoir les mails de votre petite soeur ! :-°

Pour réussir à rendre les pages web dynamiques, vous devrez utiliser un langage de programmation, autre que HTML, que votre serveur pourra interpréter !
Sachez qu'un serveur ne sait utiliser et renvoyer que des pages HTML statiques !
Si vous voulez que votre site s'adapte aux utilisateurs, vous aller devoir faire deux choses :
  • apprendre un langage permettant de faire ce genre de personnalisation...
  • ajouter un serveur d'application capable d'interpréter un langage.


Il y a beaucoup de langages qui permettent de faire ce genre de choses.
Beaucoup de tutos sur ce genre de langage existent sur le SdZ et sur le web en général. Ce genre de langage s'appelle un langage côté serveur : un langage interprété par un serveur.
Les plus connus sont PHP, Java, .Net mais il en existe bien d'autres.

Voyons un peu ce qu'il se passe lorsque vous demandez une page contenant ce genre de code !

Soyez dynamiques

Vous allez voir, en fin de compte, c'est très simple... ;)
Je vous ai dit plus haut que, par défaut, votre serveur ne sait manipuler que des fichiers .html, donc des pages web statiques. Afin que notre serveur sache interpréter du code dans des pages web, nous allons devoir lui installer un "environnement".
Pour simplifier les choses, les pages contenant du code à interpréter ont une extension particulière :
  • .php : page contenant du code PHP ;
  • .aspx : pages contenant du code .NET ;
  • .jsp : pages contenant du code Java ;
  • ...


Si vous demandez ce genre de page à un serveur sans que celui-ci sache que faire avec ce qui s'y trouve, vous aurez de mauvaises surprises... :o

Attends deux minutes ! À quoi ressemble le fameux code dont tu parles depuis tout à l'heure ?

En fait, il dépend du langage que vous utilisez...

Voici une page contenant du code PHP :
Code : PHP
1
2
3
4
5
<html>
 <body>
  <?php echo "Bonjour toi...<br />";?>
 </body>
</html>


Voici une page contenant du code Java :
Code : JSP
1
2
3
4
5
<html>
 <body>
  <% out.println("Bonjour toi...<br />");%>
 </body>
</html>


Vous pouvez voir qu'il y a des différences entre ces deux codes, même si le résultat sera le même.

D'accord, on voit déjà mieux à quoi ressemble ton fameux code côté serveur.
Mais, du coup, comment le serveur sait que faire avec ce code ?

J'allais y venir.
Dites-vous bien que sans le fameux "environnement" dont je vous parlais plus haut, le serveur ne saurait pas quoi faire.
En fait, votre serveur va, dès qu'il aperçoit un type d'extension de fichier demandé, laisser l'environnement triturer la page. Ce dernier, après avoir terminé sa cuisine de son côté, retourne une page ne contenant que du code HTML de base au serveur qui, lui, va nous retourner une réponse HTTP avec la page ! :magicien:

Nous ne parlerons pas de PHP ou de .NET puisque c'est de Java dont il s'agit dans ce tuto.
Donc, afin que votre serveur sache interpréter du code Java dans les pages web, vous allez avoir besoin d'un logiciel spécifique que l'on nomme vulgairement "conteneur de servlets".
Ne vous inquiétez pas, vous allez savoir ce qu'est une servlet très bientôt...


Pour information, sachez qu'il existe plusieurs conteneurs de servlets, chacun avec des caractéristiques différentes.
Nous en parlerons dans le prochain chapitre.

Revenons à nos moutons : je vous disais que le serveur, selon les requêtes émises, demandait de l'aide à notre conteneur.
Pour que vous puissiez mieux visualiser, voici un petit schéma fait par mes soins :

Image utilisateur


Vous pouvez déjà deviner ce dont nous allons avoir besoin pour travailler.
Nous aborderons tout ceci dans le chapitre prochain ; pour le moment, vu que vous venez de voir dans les grandes lignes comment fonctionne la génération de pages web dynamiques, le temps est venu de faire un petit QCM avant de poursuivre... ;)

Q.C.M.

Qu'est-ce qu'Internet ?
Qu'est-ce qui transite entre le poste client et le serveur ?
Un serveur peut-il traiter toutes les demandes des clients ?
Quel port utilise le protocole HTTP ?

Statistiques de réponses au QCM

Les Zéros qui ne connaissaient pas ces notions ont dû apprendre plein de chose rigolotes ici...
Dîtes-vous bien que ce que nous allons faire, tout au long de ce tuto, n'est qu'une autre façon de créer des programmes pour le web !
Sur le SdZ, vous pouvez déjà voir que M@teo a fait deux tutos sur la création de sites.

Bon, je me doute que si vous avez lu ce chapitre, c'est que vous êtes intéressés par la façon de créer des sites internet avec Java. Alors continuons...
Sommaire Chapitre suivant

Partager

8 commentaires pour "Rappels"
Note moyenne : 3.17 / 4 (294 votes)
Pseudo Commentaire
Hors ligne Lithrein # Posté le 10/04/2009 à 13:30:10
日本語を勉強する。
Avatar
Flux RSS

Ton tutoriel de rappel est vraiment sympa à lire et vraiment bien expliqué bien que je su tout ce que tu y expose vant de l'avoir lu mais je je n'hésiterais pas a y faire un tour en cas de trou de mémoire.

Image utilisateurImage utilisateur

« Les petites modifications font les grands changements. »

Membre du comité anti-PGCD

[Blog] | [The Ultimate Answer to life, the Universe and Everything]
Image utilisateur | Image utilisateur
 
Hors ligne jpstr # Posté le 17/04/2009 à 11:30:14

C'est pas du québecois par exemple ! Mais c'est très bien ;) (je blague)
Hors ligne Kazou_ # Posté le 30/05/2009 à 23:16:27

Bonjour,

Moi je trouve ça très bof, et pourvu de pas mal d'imprécisions.
Je trouve qu'il est faux de dire, penser, et d'autant plus expliquer qu'une réponse HTTP est une entête par exemple. Selon la norme HTTP, le client demandera explicitement une réponse sous forme d'entête uniquement si par exemple il désir savoir s'il doit remettre son cache à jour. Une entête HTTP accompagne le plus souvent un contenu qui peut être n'importe quoi et de taille illimité (que ca soit des données POST, ou un contenu binaire). Après cette petit mise en bouche je m'en vais lire les cours suivants, et je crains le pire.

http://alain-defrance.developpez.com
(Préparation) Sun Certified Mobile Application Developer, Micro Edition 1
Sun Certified Business Component Developer, Enterprise 5
Sun Certified Web Component Developer for Java 2 Platform, Enterprise 5
Sun Certified Programmer for Java 2 Platform, Standard Edition 6.0
Oracle SQL Certification (1Z0-007)
Mandriva Certification for networking Administrators
 
Hors ligne Shogoune # Posté le 11/01/2010 à 17:07:15
Toubib or not toubib
Avatar

Ville : Aulnay-sous-bois
Pays : France métropolitaine

Quelques fautes par ci quelques imprécisions par là. Mais bon en gros c'est pas trop mal... Je donnerai bien un 14/20.

"Être de loin le meilleur et l'emporter sur tous" Cicéron
 
Hors ligne sidimohino # Posté le 29/04/2010 à 03:38:20

Merci infiniment pour ce tuto ;)

Voir tous les commentaires