N | Nom | Description | Eq. OSI |
---|---|---|---|
4 | Application | HTTP, Bitorrent, FTP, … | 5, 6, 7 |
3 | Transport | TCP, UDP, SCTP, … | 4 |
2 | Internet | IP (v4, v6), ICMP, IPsec, … | 3 |
1 | Liaison | Ethernet, 802.11, … | 1, 2 |
Domain Name System : permet d'attribuer un nom à une IP (annuaire). Double avantage :
Principe hiérarchisé :
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. |
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). |
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 :
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, …)
Le navigateur :
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
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)
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
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.
GET /test.html HTTP/1.1
Host: idea.nguyen.vg:80
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Thu, 13 Jun 2019 18:59:49 GMT
Content-Type: text/html
Content-Length: 128
Last-Modified: Wed, 12 Jun 2019 10:15:01 GMT
Connection: close
ETag: "5d00d0a5-80"
Accept-Ranges: bytes
Une page de test
Une page de test
Super !
]]>
} ← code de retour
} ← type de contenu
} ← longueur du contenu
} ← contenu (128 octets)
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,…
"
Encodage 1 caractère = 1 octet (8 bits) :
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
Universal (Character Set) Transformation Format 8 bit
Encodage
Nombre d'octets | Octet 1 | Octet 2 | Octet 3 | Octet 4 | ||
1 | 0xxxxxxx | |||||
2 | 110xxxxx | 10xxxxxx | ||||
3 | 1110xxxx | 10xxxxxx | 10xxxxxx | |||
4 | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
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 :
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
>>> 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
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)
Exemple | Rendu par défaut |
---|---|
en gras ]]> | Un texte en gras |
Un lien ]]> |
Un lien |
|
|
On dit que ]]> est une balise ouvrante et ]]> une balise fermante. On peut écrire ]]> comme raccourci pour ]]>.
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 |
2014 | Standardisation de HTML 5.0 |
2017 | Standardisation de HTML 5.2 |
Différences avec HTML:
Les avantages sont les suivants
Afin d'être compatible à la fois XHTML et HTML5, on utilisera les conventions suivantes :
area, base, br, col, command, embed, hr, img, input, keygen, link,
meta, param, source, track, wbr
Exemple :
<img src='toto.jpg' alt='une image' />
Toutes les autres balises
doivent obligatoirement être de la forme:
… ]]>
<!DOCTYPE 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:
Un titre
Titre de section
premier paragraphe de texte. On met
un lien ici.
]]>
Pour être valide un document HTML contient au moins les choses suivantes suivantes :
Les balises <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, permettent de créer des titres de section, sous-section , sous-sous-section ,…
Des paragraphes de textes sont introduits avec les balises <p>. Par défaut chaque paragraphe implique un retour à la ligne:
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamc
Nouveau paragraphe
]]>
Remarque : par défaut, les espaces, retour à la ligne, … sont ignorés et le texte est reformaté pour remplir la largeur de la page.
Les balises <b> (bold, gras), <i> (italic, italique), <u> (underlined, souligné) <em> (emphasis, important) et beaucoup d'autres permettent de décorer le texte.
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamc
Nouveau paragraphe
]]>
On peut formater des tables en utilisant :
Nom Prénom Note 1 Note 2
Foo Bar 15 12
Doe Jonh Absent
]]>
On peut créer des listes énumérées (avec <ol>, ordered list) ou non énumérées (avec <ul>, unordered list). Chaque ligne est limitée par une balise <li> ( list item)
Un élément
- Un autre élément
-
- Un sous-élément
- Un autre sous-élément
Le dernier
]]>
On peut faire référence à une autre ressource en
utilisant un lien hyper-texte
(balise <a/> et son
attribut href). La cible du lien peut être absolue
(une URL complète avec le protocole, par
exemple https://www.lri.fr) ou relative (par
exemple foo.html). Si l'URL est relative, le chemin est
substitué à la dernière composante de l'URL de la page courante. Si
l'URL commence par un # elle référence,
l'attribut id d'un élément de la page:
Le LRI
Un lien
On va vers le titre
…
Le titre
]]>
[] [[]] [[][]] [[][][]] [ [[][]] [] [[][]] ]
Différentes types de paires de parenthèses ⇒ différentes étiquettes pour les nœuds de l'arbre
Un document HTML peut être vu comme un arbre !
Voir un document HTML comme un arbre est fondamental :
On manipule ici des arbres enracinés, i.e. ayant un nœud particulier appelé racine (root) (on le dessine en général en haut !)
On appelle profondeur d'un nœud sa distance (en nombre d'arrête à) la racine
Les fils (children) d'un nœud n sont les nœuds relié directement à n et de profondeur plus grande.
Le parent d'un nœud n est le nœud relié directement à n et de profondeur inférieure.
Un nœud sans fils est appelé une feuille. L'unique nœud sans parent est la racine.
Les frères (siblings) d'un nœud n sont tous les nœud qui ont le même parent que n.
Les descendants d'un nœud sont ses fils et les fils de ses fils et … (jusqu'aux feuilles).
Un titre
Titre de section
premier paragraphe de texte. On met
un lien ici.
]]>
On peut appliquer un style CSS :
color:redUn lien]]>
Apperçu:
Inconvénients :