DIU Enseigner l'Informatique au Lycée

HTTP, HTML, CSS

kn@lri.fr
http://www.lri.fr/~kn

Rappels

Concepts de réseau informatique

Réseau
ensemble de nœuds reliés entre eux par des liens (ou canaux).

Réseau informatique
réseau où les nœuds sont des ordinateurs. Les liens sont hétérogènes (câbles, liaisons radio, liaisons satellites, …)

Protocole
ensemble de conventions permettant d'établir une communication mais qui ne font pas partie du sujet de la communication.

Rappels sur le modèle TCP/IP

Bien d'autres choses

DNS

Domain Name System : permet d'attribuer un nom à une IP (annuaire). Double avantage :

Principe hiérarchisé :

Internet et ses services

Bref historique d'Internet (1/2)

1959-1968 ARPA (Advanced Research Project Agency) crée un réseau de quelques machines capable de résister à une attaque.
1969 ARPANET. Interconnexion des ordinateurs centraux des grandes universités et institutions américaines. Première utilisation du concept de paquet d'information.
1970-1982 Interconnexion avec la Norvège et le Royaume-Uni.
1982 Généralisation du protocole TCP/IP. Naissance de l'Internet actuel.

Bref historique d'Internet (2/2)

1986 « Autoroutes de l'information ». Des super-ordinateurs et les premières connexions à fibres optiques sont utilisées pour accélérer le débit d'Internet.
1987-1992 Apparition des premiers fournisseurs d'accès. Les entreprises se connectent.
1993-2000 Avènement du Web. Démocratisation du haut débit (vers 2000 pour la France).
2000-? Explosion des services en ligne, arrivée des réseaux sociaux, internet mobile, Cloud (stockage et calcul mutualisés accessible depuis internet).

Internet

Démo

On établit une connexion TCP, sur le port 4444 entre notre machine et la machine dont l'IP est 149.56.108.199.

La commande Unix netcat possède deux mode de fonctionnement :

World Wide Web (1/2)

World Wide Web (2/2)

Concepts clé:

URL localisation d'une page Web (« adresse de la page »)
HTTP protocole de communication entre un client et un serveur Web
HTML langage de description des pages Web

Évolutions récentes (Web 2.0, internet mobile, Cloud, …)

Fonctionnement du Web

Fonctionnement du Web

Côté client

Le navigateur :

Côté serveur

Adressage des documents Web

Adressage des documents Web (1/3)

URL Uniform Resource Locator identifie un document sur internet

Une URL se décompose en 3 parties

Syntaxe (simplifiée) :

protocole://adresse/document

Exemple :

http://www.lri.fr/~kn/teach_fr.html

Adressage des documents Web (2/3)

On peut aussi préciser un numéro de port, des paramètres et un emplacement :

protocole://adresse:port/document?p1=v1&p2=v2#empl

Exemple :

http://www.youtube.com:80/results?search_query=cat#search-results

Le serveur utilise les paramètres passés par le client dans l'URL pour calculer le contenu de la page (changer la chaîne « cat » ci-dessus et essayer)

Adressage des documents Web (3/3)

La racine d'un site Web (ex: http://www.lri.fr/) correspond à un répertoire sur le disque du serveur (ex: /var/www). Le fichier

http://www.lri.fr/index.html

se trouve à l'emplacement

/var/www/index.html

Le serveur Web peut aussi effectuer des réécritures d'adresses :

http://www.lri.fr/~kn/index.html

devient

/home/kn/public_html/index.html

Le protocole HTTP

Caractéristiques du protocole HTTP

Format des messages HTTP

Les messages ont la forme suivante

Remarque : dans les chaînes de caractères Python (ainsi que dans d'autres langages) le caractère CR (carriage return) s'obtient par \r et le caractère LF (line feed) par \n.

Démo

Détail sur HTTP

Point méthode

UTF-8

Représentation des textes

Avant de représenter des documents complexes, on s'intéresse aux textes (sans structure particulière)

Problématique: comment représenter du texte réaliste ?

Exemple de texte réaliste:
" و عليكم السلام,Здравей,¡Hola!, 你好,Góðan daginn,… "

Historiquement…

Encodage 1 caractère = 1 octet (8 bits) :

… et pendant ce temps là, ailleurs dans le monde

Encodage multi-octets:

Impossibilité de mettre plusieurs « alphabets » dans un même texte

Chaque logiciel « interprétait » les séquences d'octet de manière prédéfinie

UTF-8

Universal (Character Set) Transformation Format 8 bit

Encodage

Nombre d'octetsOctet 1Octet 2Octet 3Octet 4
10xxxxxxx
2110xxxxx10xxxxxx
31110xxxx10xxxxxx10xxxxxx
411110xxx10xxxxxx10xxxxxx10xxxxxx

Exemples

A  ⟶  6510  ⟶  0100 00012 (représenté sur un seul octet)
 ⟶  787710  ⟶  0001 1110 1100 01012 (représenté 3 octets) :
11100001 1011 10 11 1000 0101≡ 225 187 133
🐵  ⟶  12805310  ⟶  … ≡ 240 237 220 181
Avantages :

Inconvénients

En Python…

Les chaînes de caractères sont encodées en UTF-8. La fonction len(…) renvoie le nombre de caractères dans la chaîne (et non pas le nombre d'octets).

Comme on veut parfois manipuler des séquences d'octets arbitraires (par exemple 255 255 255) qui peuvent ne pas être des séquences UTF-8 valide, Python propose le type bytes. Il utilise la même syntaxe que les chaînes mais :

Attention, beaucoup de fonctionalités « système » (et réseau en particulier) utilisent des bytes

Encodage/Décodage

>>> mot = "éléphant" >>> len(mot) 8 >>> octets = mot.encode() >>> octets b'\xc3\xa9l\xc3\xa9phant' >>> len(octets) 10 >>> octets.decode() 'éléphant' >>> invalide = b"\xff\xff" >>> invalide.decode() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

HTML, le format des documents

HTML

HyperText Markup Language : langage de mise en forme de documents hypertextes (texte + liens vers d'autres documents). Développé au CERN en 1989.
1991 : premier navigateur en mode texte
1993 : premier navigateur graphique (mosaic) développé au NCSA (National Center for Supercomputing Applications)

Document HTML

Exemple Rendu par défaut
en gras ]]>Un texte en gras
Un lien ]]> Un lien
  • Premièrement
  • Deuxièmement
  • ]]>
    • Premièrement
    • Deuxièmement

    On dit que ]]> est une balise ouvrante et ]]> une balise fermante. On peut écrire ]]> comme raccourci pour ]]>.

    Historique du langage HTML

    1973 GML, Generalised Markup Language développé chez IBM. Introduction de la notion de balise.
    1980 SGML, Standardised GML, adopté par l'ISO
    1989 HTML, basé sur SGML. Plusieurs entreprises (microsoft, netscape, ... ) interprètent le standard de manière différente
    1996 XML, eXtensible Markup Language norme pour les documents semi-structurés (SGML simplifié)
    2000 XHTML, version de HTML suivant les conventions XML
    2008 Première proposition pour le nouveau standard, HTML5
    2014Standardisation de HTML 5.0
    2017Standardisation de HTML 5.2

    XHTML vs HTML

    Différences avec HTML:

    Les avantages sont les suivants

    Convention pour le cours

    Afin d'être compatible à la fois XHTML et HTML5, on utilisera les conventions suivantes :

    Rôle d'HTML

    Séparer la structure du document de son rendu. La structure donne une sémantique au document :

    Cela permet au navigateur d'assurer un rendu en fonction de la sémantique. Il existe différents types de rendus:

    Exemple de document

    Un titre

    Titre de section

    premier paragraphe de texte. On met un lien ici.

    ]]>

    Structure d'un document HTML

    Pour être valide un document HTML contient au moins les choses suivantes suivantes :

    Titres

    Les balises <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, permettent de créer des titres de section, sous-section , sous-sous-section ,…