Internet 101: anatomie d'un site web
Ce document est rédigé à l'attention des juristes et journalistes de tous genres qui cherchent à comprendre les nouvelles technologies utilisées par différent groupes politiques, citoyens et corporatifs pour partager leurs discours et commentaires.
Maintenant que les médias traditionnels n'ont plus le monopole des moyens de communication, il devient de plus en plus fréquent que des hébergeurs comme Koumbit soient la cible de plaintes, mises en demeures et maintenant même d'injonctions tout à fait déplacées. De la même façon, des informations erronées voire calomnieuses peuvent même être publiés dans un article de presse. Cette série d'article a été écrite dans l'espoir de réduire l'incidence de ces fâcheux évènements.
Ne vous attendez pas à apprendre comment faire un site web ici, j'explique seulement le fonctionnement de l'internet et non comment l'opérer.
[toc]
Introduction
Un site web est composé d'un ensemble de fichiers sur un serveur connecté à internet, et généralement derrière un nom de domaine. Ces trois concepts (fichiers, serveurs, noms de domaines) sont très distincts et engendre différentes responsabilités à différents niveaux.
Leçon #1: qu'est-ce qu'un "site web"?
Un site web est une collection de fichiers "HTML" qui s'affichent dans un navigateur web (Firefox, Chrome, Internet Explorer, etc). Le HTML (HyperText Markup Language) est un language de programmation qui indique à votre navigateur web comment afficher les jolis images et textes que vous voyez en naviguant sur internet1.
Par principe, le code source (le "HTML") est standard ouvert, c'est à dire que tout le monde peut le consulter pour voir comment la page est construite. C'est grâce à cette ouverture que le web s'est si bien établi. Vous pouvez consulter le code source de n'importe quelle page web en choisissant le menu "Afficher le code source de cette page" dans votre navigateur. Vous pouvez même télécharger une copie intégrale de n'importe quelle page web que vous naviguer avec le menu "Enregistrer sous...", pour consultation ultérieure.
Un site web est ainsi facile à copier et sauvegarder, et c'est d'ailleurs ainsi que beaucoup de webmestres ont fait leurs premières page web, en copiant le code source d'autres sites afin de comprendre comment le web fonctionne. Cette pratique est donc très, très courante et généralement acceptée.
Ceci rend le web particulièrement propice à la parodie, mais c'est aussi une des choses qui le rend assez résistant à la censure.
À noter aussi que l'auteur ou l'éditeur du contenu se trouve généralement ici. C'est donc cette personne qui est ultimement responsable du contenu. Si vous voulez interviewer ou poursuivre en justice quelqu'un c'est cette personne qu'il faut contacter. Évidemment, s'il n'y a pas de contact annoncé sur le site web, il faut alors s'informer à une étape suivante.
Leçon #2: comment fonctionne un site web?
Pour arriver à ce qu'on voit dans son navigateur, cela peut être plus ou moins compliqué. Dans les débuts du web, les sites étaient écrits et maintenus à la main, dans un éditeur de texte ordinaire. Cette pratique est désormais plus ou moins révolue, personne ne voulant vraiment avoir à entrer les caractères ésotériques du code HTML à la main.
Désormais, la plupart des sites sont construits avec des logiciels qui eux génèrent du code HTML. Ils peuvent également fournir à l'éditeur du site une interface conviviale et interactive permettant de modifier le contenu du site, voire même faire des opérations tels que des achats en ligne ou l'envoi de courriel.
Pour qu'un tel logiciel fonctionne, il doit rouler sur un "serveur". Un serveur est simplement un ordinateur optimisé pour fonctionner 7 jours sur 7, mais en fait n'importe quel ordinateur (y compris votre téléphone, désormais!) peut faire office de serveur web, pour vu que les bons logiciels y soient installés. La règle de base est que l'ordinateur doit être connecté à internet, et donc avec une "adresse IP".
Une adresse IP est l'équivalent de l'adresse civique de votre maison sur internet. C'est ce qui permet aux ordinateurs sur internet de se trouver l'un et l'autre. Chaque communication que vous opérez sur internet se fait entre deux adresses IP2, et c'est seulement l'adresse IP qui peut permettre de savoir où est situé un site web.
Mais on voit rarement les adresses IP durant notre utilisation régulière du web. On voit plutôt des "noms de domaine". Par exemple, vous consultez cette page sur mon blog, sous le domaine anarcat.koumbit.org
. Les noms de domaines sont l'équivalent du bottin de téléphone d'autrefois qui donnait la correspondance entre le nom d'une personne ou d'une entreprise et, vous l'aurez deviné, son adresse IP! On nomme le protocle de résolution des noms de domaines, le DNS (Domaine Name System).
Exercice 2.1: trouver l'adresse IP d'un site web
Pour trouver où est un site web, on doit commencer par trouver son adresse IP. Plusieurs outils existent sur le web pour cela, mais je vais assumer que vous avez une machine Linux qui peut faire des opérations de base dans un terminal. Si vous avez une machine handicappée (ie. Windows) vous devriez quand même être capable de trouver un terminal et rouler des commandes similaires.
Donc la première étape est d'ouvrir un terminal, et taper la commande ping -c 1 koumbit.org
(sous windows, ne pas mettre -c 1
). Vous devriez voir quelquechose comme suit:
$ ping -c 1 anarcat.koumbit.org
PING cache.koumbit.net (199.58.80.78): 48 data bytes
56 bytes from 199.58.80.78: icmp_seq=0 ttl=54 time=100.246 ms
--- cache.koumbit.net ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 100.246/100.246/100.246/0.000 ms
La commande ping
nous donne une foule d'informations, et il est facile de s'y perdre. Allons y tranquillement.
PING cache.koumbit.net (199.58.80.78): 48 data bytes
Cette ligne nous indique que ping
lance ses opérations, et a résolu le nom de domaine de notre site (anarcat.koumbit.org
), en une adresse IP (199.58.80.78
). Il nous a également fait un petit cadeau en faisant la résolution inverse de l'adresse IP pour trouver le nom de domaine qui y est associé3. On voit ici que ce site web est hébergé sur le serveur de Koumbit nommé cache.koumbit.net
.
Les lignes suivantes de ping nous indiquent des statistiques sur la transmission de données avec le serveur. Par exemple:
56 bytes from 199.58.80.78: icmp_seq=0 ttl=54 time=100.246 ms
On remarque ici qu'un "paquet" a été reçu par le serveur, en 100 milisecondes. C'est relativement long pour l'internet, mais assez courant pour une connexion résidentielle comme la mienne. Un autre exemple:
--- cache.koumbit.net ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 100.246/100.246/100.246/0.000 ms
On voit ici que tous les paquets ont été transmis (0% packet loss
), et donc que le serveur est connecté à internet. Si le serveur n'était pas en ligne, on verrait 100% packet loss
.
Exercice 2.2: Trouver où se trouve le serveur sur internet: traceroute
Ceci nous dit seulement l'adresse IP du serveur, trouver l'emplacement géographique est beaucoup plus difficile. En fait ici, on a deux options. On peut essayer de trouver qui est le titulaire de l'adresse IP, ou trouver le chemin pour s'y rendre, qui devraient tous les deux donner une idée de l'emplacement du serveur.
Commençons par le chemin: ceci se fait avec la commande traceroute
(tracert
dans Windows), comme suit4:
$ traceroute anarcat.koumbit.org
traceroute to anarcat.koumbit.org (199.58.80.78), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 0.249 ms 0.415 ms 0.405 ms
2 H6.C31.B96.tor.eicat.ca (66.96.31.6) 15.323 ms 16.725 ms 18.422 ms
3 osprey.eicat.ca (66.96.16.11) 20.379 ms 21.591 ms 23.309 ms
4 yyz151-eicat.heavycomputing.ca (66.96.21.59) 25.759 ms 26.986 ms 29.682 ms
5 gi2-13.ccr01.yyz03.atlas.cogentco.com (38.122.70.93) 30.394 ms 32.103 ms 33.574 ms
6 te7-5.mag01.yyz02.atlas.cogentco.com (154.54.45.113) 35.526 ms 15.349 ms 16.299 ms
7 te0-3-0-0.mpd21.yyz02.atlas.cogentco.com (154.54.40.153) 17.286 ms te0-3-0-0.mpd22.yyz02.atlas.cogentco.com (154.54.40.177) 19.287 ms 19.970 ms
8 te0-7-0-9.mpd21.jfk02.atlas.cogentco.com (154.54.47.133) 34.515 ms te0-3-0-6.mpd21.jfk02.atlas.cogentco.com (154.54.47.137) 35.658 ms 36.374 ms
9 te0-0-0-6.ccr21.jfk05.atlas.cogentco.com (154.54.5.210) 38.831 ms te0-2-0-6.ccr21.jfk05.atlas.cogentco.com (154.54.3.98) 40.049 ms te0-2-0-0.ccr21.jfk05.atlas.cogentco.com (154.54.47.58) 42.010 ms
10 level3.jfk05.atlas.cogentco.com (154.54.11.218) 44.947 ms 45.677 ms xe-9-0-0.edge1.NewYork1.Level3.net (4.68.111.45) 47.398 ms
11 vlan70.csw2.NewYork1.Level3.net (4.69.155.126) 64.409 ms 66.396 ms vlan60.csw1.NewYork1.Level3.net (4.69.155.62) 66.844 ms
12 ae-62-62.ebr2.NewYork1.Level3.net (4.69.148.33) 57.204 ms 43.786 ms ae-92-92.ebr2.NewYork1.Level3.net (4.69.148.45) 44.178 ms
13 ae-5-5.car1.Montreal2.Level3.net (4.69.141.5) 44.890 ms * *
14 * * ae-11-11.car2.Montreal2.Level3.net (4.69.141.1) 52.687 ms
15 NHS.car2.Montreal2.Level3.net (4.59.178.6) 40.211 ms 41.583 ms 43.295 ms
16 209.44.125.184 (209.44.125.184) 45.492 ms 47.697 ms 50.132 ms
17 18.66.15.64.ic0-netel.koumbit.net (64.15.66.18) 51.597 ms 30.751 ms 32.923 ms
18 cache.koumbit.net (199.58.80.78) 33.440 ms 34.623 ms 36.083 ms
On peut voir ici les différentes étapes prises par les communications entre mon ordinateur et le serveur en question. Chaque étape est un "routeur", un serveur qui se spécialise dans le "routage" des communications sur internet. "L'internet" est un "réseau de réseau", et donc chaque réseau est interconnecté par un routeur, et c'est ce que montre traceroute
.
Chaque nom de domaine dans cette liste peut révéler des informations sur son emplacement, et il faut être imaginatif. Il est assez commun, par exemple, d'utiliser le nom des villes dans les résolutions inverses, ou le nom des aéroports. Par exemple:
2 H6.C31.B96.tor.eicat.ca (66.96.31.6) 15.323 ms 16.725 ms 18.422 ms
... ce serveur est à toronto. Alors que ceux-ci:
7 te0-3-0-0.mpd21.yyz02.atlas.cogentco.com (154.54.40.153) 17.286 ms te0-3-0-0.mpd22.yyz02.atlas.cogentco.com (154.54.40.177) 19.287 ms 19.970 ms
8 te0-7-0-9.mpd21.jfk02.atlas.cogentco.com (154.54.47.133) 34.515 ms te0-3-0-6.mpd21.jfk02.atlas.cogentco.com (154.54.47.137) 35.658 ms 36.374 ms
... sont respectivement à Toronto (YYZ, le code d'aéroport de Lester-Pearson) et New York (JFK). On arrive en suite enfin à Montréal:
15 NHS.car2.Montreal2.Level3.net (4.59.178.6) 40.211 ms 41.583 ms 43.295 ms
On peut donc affirmer que ces serveurs sont à Montréal, plus précisément chez Koumbit.
Exercice 2.3: Trouver à qui appartient le serveur sur internet: whois
Si traceroute ne donne pas des résultats concluant, un autre outil, whois
5, peut nous donner plus d'informations. :
$ whois 199.58.80.78
#
# The following results may also be obtained via:
# http://whois.arin.net/rest/nets;q=199.58.80.78?showDetails=true&showARIN=false&ext=netref2
#
NetRange: 199.58.80.0 - 199.58.83.255
CIDR: 199.58.80.0/22
OriginAS:
NetName: ARIN0
NetHandle: NET-199-58-80-0-1
Parent: NET-199-0-0-0-0
NetType: Direct Allocation
Comment: Koumbit - main network
Comment: http://koumbit.org/
RegDate: 2011-12-09
Updated: 2012-01-18
Ref: http://whois.arin.net/rest/net/NET-199-58-80-0-1
OrgName: Koumbit
OrgId: RKN
Address: 6833, avenue de l'Epee #308
City: Montreal
StateProv: QC
PostalCode: H3N 2C7
Country: CA
RegDate: 2007-04-06
Updated: 2011-12-12
Ref: http://whois.arin.net/rest/org/RKN
OrgTechHandle: NOC11998-ARIN
OrgTechName: Network Operations Center
OrgTechPhone: +1-514-387-6262
OrgTechEmail: noc@koumbit.net
OrgTechRef: http://whois.arin.net/rest/poc/NOC11998-ARIN
OrgNOCHandle: NOC11998-ARIN
OrgNOCName: Network Operations Center
OrgNOCPhone: +1-514-387-6262
OrgNOCEmail: noc@koumbit.net
OrgNOCRef: http://whois.arin.net/rest/poc/NOC11998-ARIN
OrgAbuseHandle: ABUSE3016-ARIN
OrgAbuseName: Abuse
OrgAbusePhone: +1-514-387-6262
OrgAbuseEmail: abuse@koumbit.net
OrgAbuseRef: http://whois.arin.net/rest/poc/ABUSE3016-ARIN
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
On voit ici que l'adresse IP en question est allouée à Koumbit par l'ARIN, une organisation américaine qui gère les adresses IP de l'Amérique du nord. Elle fait partie d'un bloc d'IP couvrant de 199.58.80.0
à 199.58.83.255
, qui est en fait décrit ci-haut, et donne l'adresse des bureaux de Koumbit.
On peut donc dire avec certitude que ce site est hébergé chez Koumbit.
Leçon #3: comment fonctionne l'enregistrement des noms de domaines?
On voit donc ici que derrière chaque site web, il y a une adresse IP, et généralement un nom de domaine pour rendre le tout plus utilisable et joli. L'adresse IP est généralement assignée par votre fournisseur de bande passante, votre connexion résidentielle si vous hébergez un serveur à la maison (ce qui est parfaitement possible, si votre fournisseur d'accès le permet) ou votre fournisseur de d'hébergement si vous êtes sur un serveur professionnel.
Le nom de domaine lui, vient d'ailleurs complètement. Les noms de domaines, comme l'espace pour stocker les fichiers du site web et l'addresse IP, sont loués à un "registraire". Le registraire est une compagnie privée qui est responsable de vendre des noms de domaines et de faire du profit sur la vente, l'infrastructure nécessaire au service (le DNS) étant généralement opérée par une autre entreprise, le registrariat.
Quelles compagnies gèrent le domaine à enregistrer dépend du TLD ("top level domain" ou "domaines de premier niveau" en français), la dernière partie du domaine. Par exemple, pour Koumbit, il s'agit de ".org" ("point org"). On pourrait aussi mentionner .com ou .net, qui sont des noms de domaines "génériques" et .ca ou .fr, qui sont des noms de domaines "nationaux", c'est à dire associés à une juridiction nationale. Chaque TLD a son propre registrariat qui établi ses propre règles mais le TLD sera aussi vendu par un certain nombre de registraires, qui eux-mêmes on leurs propres règles6.
Exercice 3.1: trouver le registraire d'un domaine
Encore une fois, l'outil whois
permet de localiser le propriétaire d'un nom de domaine, mais aussi le registraire. Prenons par exemple koumbit.org
:
$ whois koumbit.org
Access to .ORG WHOIS information is provided to assist persons in
determining the contents of a domain name registration record in the
Public Interest Registry registry database. The data in this record is provided by
Public Interest Registry for informational purposes only, and Public Interest Registry does not
guarantee its accuracy. This service is intended only for query-based
access. You agree that you will use this data only for lawful purposes
and that, under no circumstances will you use this data to: (a) allow,
enable, or otherwise support the transmission by e-mail, telephone, or
facsimile of mass unsolicited, commercial advertising or solicitations
to entities other than the data recipient's own existing customers; or
(b) enable high volume, automated, electronic processes that send
queries or data to the systems of Registry Operator, a Registrar, or
Afilias except as reasonably necessary to register domain names or
modify existing registrations. All rights reserved. Public Interest Registry reserves
the right to modify these terms at any time. By submitting this query,
you agree to abide by this policy.
Domain ID:D103944927-LROR
Domain Name:KOUMBIT.ORG
Created On:06-Feb-2004 04:52:38 UTC
Last Updated On:22-Jan-2013 00:57:33 UTC
Expiration Date:06-Feb-2014 04:52:38 UTC
Sponsoring Registrar:Gandi SAS (R42-LROR)
Status:CLIENT TRANSFER PROHIBITED
Registrant ID:LRK1-GANDI
Registrant Name:Le RAseau Koumbit, Inc.
Registrant Organization:Reseau Koumbit Inc.
Registrant Street1:6833-308 de l'Epee
Registrant Street2:
Registrant Street3:
Registrant City:Montreal
Registrant State/Province:QC
Registrant Postal Code:H3N 2C7
Registrant Country:CA
Registrant Phone:+1.5143876262
Registrant Phone Ext.:
Registrant FAX:+1.5143876262
Registrant FAX Ext.:
Registrant Email:ns@koumbit.net
Admin ID:LRK1-GANDI
Admin Name:Le RAseau Koumbit, Inc.
Admin Organization:Reseau Koumbit Inc.
Admin Street1:6833-308 de l'Epee
Admin Street2:
Admin Street3:
Admin City:Montreal
Admin State/Province:QC
Admin Postal Code:H3N 2C7
Admin Country:CA
Admin Phone:+1.5143876262
Admin Phone Ext.:
Admin FAX:+1.5143876262
Admin FAX Ext.:
Admin Email:ns@koumbit.net
Tech ID:LRK1-GANDI
Tech Name:Le RAseau Koumbit, Inc.
Tech Organization:Reseau Koumbit Inc.
Tech Street1:6833-308 de l'Epee
Tech Street2:
Tech Street3:
Tech City:Montreal
Tech State/Province:QC
Tech Postal Code:H3N 2C7
Tech Country:CA
Tech Phone:+1.5143876262
Tech Phone Ext.:
Tech FAX:+1.5143876262
Tech FAX Ext.:
Tech Email:ns@koumbit.net
Name Server:NS1.KOUMBIT.NET
Name Server:NS2.KOUMBIT.NET
Name Server:NS3.KOUMBIT.NET
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
DNSSEC:Unsigned
On voit d'emblée que les domaines .org sont gérés par le registrariat ("registry" en anglais) Public Interest Registry. On peut ensuite voir les dates de création, d'expiration et de modification du domaine, qui devrait être assez claires pour ne pas demander d'explication, sauf peut-être la date de modification. Un domaine est considéré comme modifié quand une des informations de sa fiche est modifiée, bien sûr, mais ceci peut inclure par exemple le renouvellement du domaine ou le changement des serveurs DNS, qu'on verra plus bas.
On voit ensuite que le domaine est enregistré avec le registraire Gandi SAS, une compagnie française qu'on peut trouver sur n'importe quel engin de recherche (http://gandi.net/). On voit ensuite le nom et l'addresse du titulaire ("registrant", en anglais) du domaine, Koumbit dans ce cas. Il y a plusieurs fois la même information car il y a un contact technique, administratif et de facturation.
On peut donc déjà conclure que c'est la compagnie Réseau Koumbit qui est propriétaire du nom de domaine Koumbit.org, et donc client de Gandi SAS. On peut également y voir l'adresse civique de Koumbit.
Finalement, on voit une liste de "name servers" pour le domaine. Ces "serveurs" sont simplement des machines enregistrées auprès du registrariat pour gérer le domaine koumbit.org
. En effet, il y a plusieurs sous-domaines à koumbit.org: anarcat.koumbit.org
, www.koumbit.org
, qui sont tous des sites web différents et donc de différentes responsabilité (potentiellement). Koumbit est donc responsable du domaine Koumbit.org et peut ainsi créer plusieurs sous-domaines pour héberger plusieuers sites.
Pour ce faire, votre navigateur web va consulter les serveurs DNS de Koumbit indiqués dans le whois.
À noter qu'il serait parfaitement possible pour Koumbit d'héberger seulement une ou plusieurs parties de mon site, sans en héberger la totalité. Koumbit pourrait enregistrer le nom de domaine, mais ne pas héberger le nom de domaine - les enregistrements "Name server" pointeraient alors vers d'autres serveurs. Ou alors Koumbit pourrait héberger le nom de domaine et non l'enregistrer, comme c'est souvent le cas pour les clients de Koumbit. Ou encore Koumbit pourrait héberger seulement le site web, et le nom de domaine pourrait être complètement hors de son contrôle.
Conclusion du cours Internet 101
Il m'apparaît assez clair ici qu'il est parfaitement possible pour toute personne ayant accès à internet de déterminer qui est l'organisation qui héberge un site web, que ce soit au niveau des fichiers HTML, de l'hébergement du nom de domaine ou de l'enregistrement du domaine, et donc des champs de compétences de chacun.
Ainsi, ne blâmez pas l'hébergeur du site web pour le choix du nom de domaine ou le registraire du domaine pour le contenu du site. En fait, on doit en général assumer que l'hébergeur n'est jamais au courant du contenu des sites hébergés sur son serveur, ça serait l'équivalent de demander à l'imprimeur de lire tous les livres sortant de ses presses ou au facteur de lire chaque carte postale qu'il livre.
Nous sommes des messagers, des architectes de vos moyens de communication. Ne tirez pas le messager et informez-vous sur les responsabilités légales des différentes organisations qui opèrent sur l'internet avant d'envoyer des menaces légales. C'est notre monde ici, et il serait plus poli de vous en informer minimalement avant d'en parler.
Le prochain article portera justement sur l'anonymat et la responsabilité des opérateurs internet.
- Je simplifie ici: je fais par exemple omission ici des autres languages du web tels que le Javascript et le CSS. De plus, le HTML n'est pas exactement un language de programmation complet. On dit plutôt que c'est un "language de balisage", voir Wikipedia pour plus d'informations sur le HTML et les technologies reliées.↩
- IP ("Internet Protocol") est un autre standard ouvert qui permet à tout le monde de se parler de façon égale sur internet.↩
- Le DNS a cet avantage sur les pages jaunes qu'on peut faire la résolution inverse, l'analogie avec les pages jaunes serait qu'on aurait une autre bottin à côté indexé par numéro de téléphone et qui nous donnerait chaque nom associé à n'importe quel numéro de téléphone. Comme dans le bottin, il est possible qu'aucun nom ne soit pas associé à un numéro, notez bien.↩
-
Notez que cette commande peut prendre un certain temps à s'exécuter car, comme
ping
,traceroute
est gentil et fait la résolution inverse de chaque adresse IP rencontrée sur le chemin.↩ - à noter que Whois n'est pas disponible sur Windows, vous devrez consulter un site web à cet effet. Par exemple, dans la sortie de la commande ci-haut, on peut voir l'adresse du site de l'ARIN pour faire de telles requêtes par le web.↩
- Pour plus d'informations sur les TLDs, je vous invite à nouveau à consulter Wikipedia.↩