
Visualisation des multiples chemins à travers une portion d'Internet.
Ou encore plus simplement, le Web.
Avant d'en parler, quelques mots sur Internet. Oui, parce que, au cas où vous ne le sauriez pas, le Web et Internet ne sont pas la
même chose. Internet c'est le réseau et ses services, et le Web n'est qu'un de ces services parmi d'autres.

Bob Kahn
Comme on l'a vu dans l'épisode "En route pour la lune", Internet est une évolution du projet ARPANET.
Le protocole de communication par paquets entre ordinateurs va
évoluer et sera uniformisé en 1974. Le protocole retenu sera TCP/IP créé par Bob Kahn pour la DARPA.
Les services Internet s'enrichiront au fil du temps. Ils seront fournis par l'intermédiaire de protocoles, par exemple :
TCP : Transmission Control Protocol (Protocole de Contrôle de Transmissions). Établit la connexion et s'assure que le destinataire a bien reçu les données.

Ray Tomlinson proposa l’utilisation du signe @ pour séparer le nom de l’utilisateur de celui du serveur de courrier.
UDP : User Datagram Protocol (Protocole de Datagramme Utilisateur). Établit la connexion sans s'assurer que le destinataire a bien reçu les données (plus rapide, mais moins fiable).
IP : Internet Protocol (Protocole Internet). Fournit un service d'adressage unique pour l'ensemble des terminaux connectés. Chaque machine, par exemple la vôtre,
devient identifiable sur le réseau par son numéro IP.
FTP : File Transfer Protocol (Protocole de Transfert de Fichiers). Utilisé pour le transfert de fichiers sur Internet.
SMTP : Simple Mail Transfer Protocol (Protocole Simple de Transfert de Courrier). Permet l'envoi de courrier électronique au moyen d'adresses construites autour du
symbole @.
POP3 : Post Office Protocol version 3 (Protocole de Bureau de Poste version 3). Permet la réception de courrier électronique.
IRC : Internet Relay Chat (Discussion Relayée par Internet). Gère les discussions instantanées.
NNTP : Network News Transfer Protocol (Protocole de Tranfert d'Information en Réseau). Gère le transfert de message utilisé par les forums de discussion Usenet.
TLS : Transport Layer Security (Sécurité de la Couche de Transport). Anciennement SSL. Permet la sécurisation des transactions. TLS est utilisé notamment pour le
paiement en ligne.

Where the Web was born
Où est né le Web.
La plupart de ces services existaient avant l'arrivée du Web. Et bien entendu, qui dit nouveau service dit nouveau protocole. Et ce sera le HTTP et sa variante HTTPS :
HTTP : HyperText Transfer Protocol (Protocole de Transfert Hypertexte). Permet le chargement des pages Web.
HTTPS : HyperText Transfer Protocol Secure (Protocole de Transfert Hypertexte Sécurisé). Permet le chargement des pages Web selon le protocole HTTP avec une couche de
chiffrement SSL ou TLS.
Le Web est né au CERN à la fin des années 1980, comme en témoigne la plaque commémorative "Where the Web was born" présente dans ses locaux. Cependant, il n'est pas
apparu "ex nihilo". Voyons donc de plus près les concepts dont ses créateurs se sont inspirés.

Paul Otlet à son bureau.
Partons d'une définition relativement précise du Web : Le Web est un service d'Internet constituant une immense bibliothèque multimédia mondiale, répartie sur des serveurs où
les éléments, présents sur ces derniers ou sur d'autres machines distantes, peuvent être reliés entre eux par des liens hypertextes et constituer des pages consultables par
toute machine connectée à Internet.
Ouf. Les mots importants ici sont "bibliothèque mondiale", "hypertexte" et "Internet".
Le projet de bibliothèque mondiale remonte à... 1895, quand Paul Otlet a projeté d'établir un réseau international entre les bibliothèques. À cet effet,
il a créé, avec Henri La Fontaine, l’Office international de bibliographie chargé de mettre en place un répertoire bibliographique universel rassemblant tous
les ouvrages publiés dans le monde, quels que soient le sujet et l'époque.
Sa classification décimale universelle, basée sur des fiches bibliographiques au standard de 125 x 75 mm est toujours en vigueur dans les bibliothèques du monde
entier.

Vannevar Bush
Quelques décennies plus tard, Vannevar Bush, dans son article "As We May Think", paru en 1945 dans le magazine Atlantic Monthly, prédit l'invention du Web basé sur
le principe de l'hypertexte, suivant les principes énoncés par Paul Otlet dans son "Traité de documentation".
S'appuyant sur le modèle du cerveau humain, où l'on peut cheminer par association d'idées, il décrit dans cet article un système nommé Memex constituant une
extension de la mémoire humaine. Il prédit la création de réseaux d'ordinateurs où seront stockés des livres, des notes personnelles, des idées... toutes choses
pouvant être associées entre elles et être retrouvées facilement.

Ted Nelson initiateur du projet Xanadu
En 1960, Ted Nelson lancera le projet Xanadu, système hypertexte global censé servir de dépôt à la littérature du monde entier, mais Xanadu restera à l'état de
prototype. Au passage, il inventera le terme d'hypertext en 1965.
À la suite de Ted Nelson, Douglas Engelbart, l'inventeur de la souris dont on a déjà parlé, entreprend
dès 1962 le projet NLS (oNLine System). Ce système, présenté au public en 1968, permet à des chercheurs d'enregistrer leurs articles et annotations dans un espace
commun et d'y intégrer des liens.
Au cours des années 1980, le principe de l'hypertexte sera plus largement utilisé. La société britannique OWL (Office Workstations Limited) développera Guide, un
système hypertexte qui sera adapté pour le Macintosh sous le nom d'HyperCard. Le fichier d'aide de Turbo Pascal sera lui aussi basé sur l'hypertexte ainsi que, plus
tard, l'aide de Windows.
Mais, toutes ces applications ne fonctionnent qu'en local ou de manière centralisée. Néanmoins, avec le réseau Internet qui devient de plus en plus répandu et
performant, tout est en place pour que le Web vienne au monde. Il ne manque plus qu'une étincelle...

Tim Berners-Lee
Cette étincelle jaillira au CERN, non pas dans l'accélérateur de particules où elles foisonnent, mais dans le cerveau de l'un de ses informaticiens,
Tim Berners-Lee.
Tim Berners-Lee commence à concevoir le Web en 1989, il cherche un langage hypertexte adapté et contacte Ian Ritchie de la société éditrice de
Guide, mais en vain.
Il sera ensuite rejoint dans son projet par Robert Cailliau en 1990.
Tous deux mettent au point entre 1990 et 1992 le langage HTML (Hypertext Markup Language)
en s'inspirant du SGML, un langage de mise en page de texte créé quelques années auparavant. Les liens hypertextes y seront identifiés par des URL
(Uniform Resource Locator ou localisateur uniforme de ressource), principe que Tim Berners-Lee publiera en 1994 dans le RFC 1630 (Request for comments 1630).
Il créera également une première version du protocole HTTP, protocole qui évoluera dès lors constamment.

Robert Cailliau
Reste à créer un "navigateur" capable d'aller chercher les pages et de les afficher sur la machine de l'utilisateur.
Le premier navigateur s'appellera tout
simplement "WorldWideWeb". Il fonctionnera sur la machine de Tim Berners-Lee, c'est-à-dire sur un ordinateur NeXT (conçu par la société NeXTSTEP fondée en 1985
par Steve Jobs après sa démission forcée d'Apple Computer). Cet ordinateur étant finalement peu répandu, la diffusion de WorldWideWeb sera très limitée.

NCSA Mosaic
C'est en fait NCSA Mosaic, développé à partir de fin 1992 au centre de recherches américain NCSA (National Center for Supercomputing Applications),
qui sera le premier navigateur Web digne de ce nom, puisqu'il sera multiplateforme : X Window (X Mosaic) pour l'environnement UNIX, puis Macintosh (Mac Mosaic) pour
l'univers Apple et enfin Microsoft Windows (Mosaic).
NCSA Mosaic, qui comportait une fonction d'édition de pages, commence alors à rendre le World Wide Web populaire. Et la face du Monde en sera
changée, pour le meilleur et pour le pire...
Et le code, dans tout ça ? De rudimentaires au départ, de simples pages formatées contenant des liens hypertextes sous forme d'URL, les fonctionnalités vont
s'enrichir au fil des ans. Les langages vont se diversifier. Voici quelques exemples parmi les langages les plus utilisés :
- HTML pour la description des pages,
- CSS pour la création de feuilles de style,
- PHP, souvent utilisé en lien avec un système de gestion de bases de données comme MySQL, pour la gestion côté serveur et
- JavaScript pour l'interactivité avec l'utilisateur en local,
Ce sont ces langages qui vont être détaillés maintenant en partant de cet exemple dont le but est d'afficher l'adresse IP de l'utilisateur après appui sur un
bouton :

Le fichier Votre_IP.php avec du HTML, du CSS, du PHP et du JavaScript.

Logo HTML 5
HTML a donc été créé par Tim Berners-Lee dans les circonstances évoquées ci-dessus. C'est un langage de balisage qui décrit et met en forme le contenu des pages
et permet l'insertion de liens hypertextes.
Comme vous pouvez le constater dans le fichier Votre_IP.php, chaque élément comporte une balise de début comprenant un mot-clé entouré des signes < et > avec éventuellement
des propriétés et des paramètres et une balise de fin comprenant le même mot-clé précédé de la barre oblique /, également entouré
des signes < et >. Par exemple la ligne 36 comprend la balise "div" qui a la propriété "align" dont le paramètre est "center" et qui se ferme ligne 38.
Les pages HTML comprennent deux parties, "head" (en-tête) qui contient les informations sur le document et "body" (corps) qui contient les éléments de la page à
afficher.
Dans la partie head on trouve aussi des éléments d'autres langages que l'on va détailler ci-dessous et dans la partie body, les éléments de la page comme
le mot "Exemple", ligne 28, avec les balises b et i (respectivement mise en gras et mise en italique) ou, ligne 37, un lien hypertexte (a pour "anchor" ou ancre) qui
renvoie à la page du sommaire.

Logo CSS 3
Chaque élément du langage HTML peut comporter des paramètres comme align="center" à la ligne 36. Multiplier ces paramètres dans le code peut être fastidieux, le
langage CSS (Cascading Style Sheets ou feuilles de style en cascade) va permettre de regrouper à un même endroit les caractéristiques identiques à un groupe d'élément.
La maintenance s'en trouvera facilitée.
Ici, un tout petit exemple se trouve lignes 10 à 19. Généralement, on créera plutôt un fichier style.css, référencé dans la partie "head", contenant les styles
communs aux éléments de l'ensemble des pages d'un site.

La part prépondérante de PHP dans les langages serveurs
Les lignes 7 à 9 et une partie de la ligne 33 sont en PHP. Elles s'exécutent donc sur le serveur avant l'envoi de la page au navigateur.
Leur rôle ici sera de récupérer la variable $_SERVER['REMOTE_ADDR'] qui n'est autre que l'adresse IP de l'utilisateur. La page arrivera donc sur la machine
de l'utilisateur avec la valeur de cette adresse, par exemple 89.124.32.158 à la place de

ligne 33.
Le langage PHP est un langage impératif orienté objet qui a été créé en 1994 par Rasmus Lerdorf sous le nom de PHP/FI (Personal Home Page Tools/Form Interpreter).
Pour les besoins de son site Web, il l'a rendu capable de communiquer avec les bases de données. En 1995, il décide de rendre son code public. Deux étudiants, Andi
Gutmans et Zeev Suraski, ont alors redéveloppé le cœur de PHP/FI puis le moteur interne et l'on renommé PHP (sigle récursif pour
PHP
Hypertext
Processor).
Comme on peut le voir sur l'illustration, PHP est de loin le langage serveur le plus utilisé au monde à l'heure où ces lignes sont écrites.

Logo de JavaScript
Enfin, les lignes 20 à 25 sont en JavaScript, elles vont s'exécuter quand l'utilisateur appuiera sur le bouton généré sur la page par la ligne 33. La fonction "affiche"
sera alors appelée. Elle aura pour but d'ouvrir une fenêtre indiquant l'adresse IP de l'utilisateur.
Notez qu'on aurait pu faire afficher directement cette valeur sans
passer par un bouton et du JavaScript, mais pourquoi faire simple, surtout quand on veut montrer en quelques lignes ce qui se cache derrière nos écrans.
JavaScript a été créé en 1995 par Brendan Eich. Il a été standardisé sous le nom d'ECMAScript en juin 1997 par Ecma International. Javascript est maintenant
une émulation d'ECMAScript mise en œuvre par la fondation Mozilla. Il en existe d'autres, JScript chez Microsoft (dans Internet Explorer jusqu'à sa version 9) ou
encore ActionScript chez Adobe Systems.
Le fonctionnement de l'exemple proposé, Votre_IP.php, n'est pas très compliqué à comprendre dans ses grandes lignes. Pour les détails, si cela vous intéresse, vous
pouvez faire des recherches sur Internet. Par exemple une recherche sur "html div" vous dira tout sur cette balise. Mais savez-vous que vous pouvez facilement inspecter
et manipuler toutes les pages que vous visitez ?
En effet, tous les navigateurs actuels disposent d'outils destinés aux développeurs. Ces outils permettent d'inspecter le code HTML, CSS et JavaScript de la page
courante et de vous livrer à certaines manipulations comme modifier le code à la volée. Pour y accéder, passez par le menu général du navigateur et cherchez quelque
chose qui ressemble à Outils de développement. Bonne découverte !