internet

Internet

Que se passe-t-il lorsque vous tapez dans la barre d'adresse de votre navigateur «http://www.google.fr» ? Votre ordinateur va chercher à entrer en communication avec un autre ordinateur se trouvant probablement à des milliers de kilomètres de chez vous. Pour pouvoir établir cette communication, il faut bien sûr que les 2 ordinateurs soient « reliés ». On dira que nos 2 ordinateurs sont en réseau. Il existe énormément de réseaux (la plupart des ordinateurs du lycée sont en « réseau »), certains réseaux sont reliés à d'autres réseaux qui sont eux-mêmes reliés à d'autres réseaux... ce qui forme « des réseaux de réseaux de réseaux...». Savez-vous comment on appelle cet assemblage multiple de réseaux ? Internet !

L'idée de relier des réseaux d'ordinateurs à d'autres réseaux d'ordinateurs date du début des années 70 avec le projet ARPAnet qui est, avec juste raison, considéré comme l'ancêtre d'internet.

Afin de pouvoir s'identifier, tout ordinateur possède une adresse sur un réseau : son adresse IP.

Une adresse IP est de la forme "74.125.133.94" (cette adresse IP correspond au serveur de google "google.fr")

Les adresses IP sont de la forme : "a.b.c.d", avec a, b, c et d compris entre 0 et 255. Nous aurons l'occasion de revenir là-dessus un peu plus tard.

N.B. Une autre norme est en train d'être déployée, la norme IPV6 (alors que les adresses IP vues ci-dessus appartiennent à la norme IPV4). Pourquoi cette nouvelle norme ? Parce qu' avec le système IPV4, il risque, dans les prochaines années, de manquer d'adresses IP disponibles sur internet.


Sur internet l'échange de données entre deux ordinateurs est basé sur deux protocoles : le protocole IP et le protocole TCP. Mais qu'est-ce qu'un protocole ?

Selon Wikipedia, dans le cas général : On nomme protocole les conventions qui facilitent une communication sans faire directement partie du sujet de la communication elle-même. En électronique et en informatique (toujours selon Wikipedia) : un protocole de communication est un ensemble de contraintes permettant d'établir une communication entre deux entités (dans le cas qui nous intéresse 2 ordinateurs).

Il existe de nombreux protocoles qui permettent à deux ordinateurs de communiquer entre eux. Parmi ces nombreux protocoles, nous allons en étudier deux qui ont une importance fondamentale dans le fonctionnement d'internet : le protocole IP et le protocole TCP (d'un point de vue technique, les protocoles TCP et IP sont au coeur d'internet. Ils sont tellement liés entre eux que l'on parle souvent de protocole TCP/IP).

Quand un ordinateur A "désire" envoyer des données à un ordinateur B, après quelques opérations qui ne seront pas abordées ici, l'ordinateur A "utilise" le protocole TCP pour mettre en forme les données à envoyer.

Ensuite le protocole IP prend le relai et utilise les données mises en forme par le protocole TCP afin de créer des paquets des données. Après quelques autres opérations qui ne seront non plus évoquées ici, les paquets de données pourront commencer leur voyage sur le réseau jusqu'à l'ordinateur B. Il est important de bien comprendre que le protocole IP "encapsule" les données issues du protocole TCP afin de constituer des paquets de données.

Une fois arrivées à destination (ordinateur B), les données sont "désencapsulées" : on récupère les données TCP contenues dans les paquets afin de pouvoir les utiliser.

Le protocole IP s'occupe uniquement de faire arriver à destination les paquets en utilisant l'adresse IP de l'ordinateur de destination. Les adresses IP de l'ordinateur de départ (ordinateur A) et de l'ordinateur destination (ordinateur B) sont ajoutées aux paquets de données.

Le protocole TCP permet de s'assurer qu'un paquet est bien arrivé à destination. En effet quand l'ordinateur B reçoit un paquet de données en provenance de l'ordinateur A, l'ordinateur B envoie un accusé de réception à l'ordinateur A (un peu dans le genre "OK, j'ai bien reçu le paquet"). Si l'ordinateur A ne reçoit pas cet accusé de réception en provenance de B, après un temps prédéfini, l'ordinateur A renverra le paquet de données vers l'ordinateur B. L'envoi de donner se faisant rarement en une seule fois, l'ordinateur A, après avoir envoyé à l'ordinateur B un paquet de données, attendra l'accusé de réception en provenance de B avant d'envoyer le paquet de données suivant.

Nous pouvons donc résumer le processus d'envoi d'un paquet de données comme suit :

Une fois l'accusé de réception reçu par l'ordinateur A, ce dernier envoi un deuxième paquet vers B, et ainsi de suite...(jusqu'au moment où toutes les données auront été transmises)

À noter qu'il existe aussi le protocole UDP qui ressemble beaucoup au protocole TCP. La grande différence entre UDP et TCP est que le protocole UDP ne gère pas les accusés de réception. Les échanges de données avec UDP sont donc moins fiables qu'avec TCP (un paquet "perdu" est définitivement "perdu" et ne sera pas renvoyé) mais beaucoup plus rapides (puisqu' il n'y a pas d'accusé de réception à transmettre). UDP est donc très souvent utilisé pour les échanges de données qui doivent être rapides, mais où la perte d'un paquet de données de temps en temps n'est pas un gros problème (par exemple le streaming vidéo).

La plupart du temps, les échanges sur internet sont basés sur l'architecture "client-serveur", nous reviendrons plus tard sur cette notion, mais nous pouvons déjà dire que l'on trouve deux types d'ordinateurs reliés au réseau internet : les clients et les serveurs. Les clients vont demander des ressources (pages web, fichiers...) aux serveurs. La plupart des ordinateurs que l'on utilise tous les jours sont des clients : quand ils sont reliés à internet, ils passent leur temps à demander des ressources à des serveurs. Dans ce type d'architecture un ordinateur qui joue le rôle de client jouera le rôle de client en permanence, un ordinateur qui joue le rôle de serveur jouera le rôle de serveur en permanence : les rôles sont bien définis une fois pour toutes, sans doute que votre ordinateur personnel a toujours joué le rôle de client, enfin..., sauf s'il s'est déjà connecté à un réseau pair-à-pair.

Les réseaux pair-à-pair ou peer to peer en anglais (abréviation "p2p"), ne sont pas basés sur l'architecture client-serveur classique. En effet, la notion de client et de serveur n'a pas vraiment de sens dans les réseaux p2p, puisqu'un ordinateur (on parle de "noeud") peut être tour à tour client et serveur, et même client et serveur en même temps !

>modèle client-serveur
modèle client-serveur
p2p
réseau pair-à-pair

Prenons un exemple, volontairement simple : 3 machines A, B et C appartenant toutes les trois au même réseau p2p. Un fichier "fic1" est disponible sur la machine A, un fichier "fic2" est disponible sur la machine B et un fichier "fic3" est disponible sur la machine C. Le noeud (machine) B désire obtenir le fichier "fic1", le noeud A désire obtenir le fichier "fic3" et le noeud C désire aussi obtenir le fichier "fic1". Intéressons-nous au noeud A : le noeud A va envoyer le fichier "fic1" vers le noeud B et le noeud C, dans le même temps le noeud C va envoyer le fichier "fic3" vers le noeud A, le noeud A va donc recevoir le fichier "fic3". Bilan : le noeud A est à la fois client (il reçoit le fichier "fic3") et serveur (il envoie le fichier "fic1" vers le noeud B et vers le noeud C).

p2p
exemple mini-réseau p2p

Il existe énormément de protocoles qui s'appuient sur des réseaux de pair-à-pair. La plupart de ces "protocoles p2p" sont destinés au partage de fichier, mais il est aussi possible de créer des systèmes de "calculs distribués" grâce au réseau p2p, comme dans le cas du projet BOINC "Compute for Science", qui propose de répartir des calculs extrêmement complexes sur un grand d'ordinateurs personnels, chaque ordinateur ayant "un petit bout" du calcul à effectuer, et tout cela dans le but de faire avancer la recherche scientifique.

Mais revenons à l'utilisation principale des réseaux p2p, le partage de fichier. Il existe un grand nombre de protocoles s'appuyant sur le p2p qui permettent de partager des fichiers, par exemple emule, BitTorent... Souvent le BitTorent est associé au "piratage" de contenus (à ne pas confondre avec le piratage de système informatique), ouvrons donc une petite parenthèse sur ce sujet :

Partager un contenu (musique, film, logiciel...) de façon illicite est puni par la loi (voir ici pour plus de détails). À chaque contenu peut être associée une "licence", avec certaine licence vous êtes uniquement autorisé à utiliser les fichiers que vous avez acheté, mais vous n'avez pas le droit de les partager avec qui que ce soit. Dans d'autres cas, la licence liée à un contenu vous autorise à modifier, partager,...le contenu, on parle alors souvent de licence "libre". Il est important de bien comprendre qu'une licence libre ne veut pas dire que l'on peut faire ce que l'on veut avec un contenu, dans tous les cas il faut se renseigner sur la licence attachée à un contenu afin de pouvoir l'utiliser en toute légalité.

À faire vous-même 1

Le contenu que vous êtes en train de lire est publié sous licence "Creative Common BY SA", recherchez sur le web "les droits et les devoirs" attachés à cette licence.


Refermons la parenthèse et revenons au protocole BitTorent : l'utilisation du BitTorent n'a rien d'illégal en soi, vous pouvez l'utiliser tant que vous voulez à condition de bien vérifier que la licence du contenu partagé autorise bien le partage. Quelque soit votre utilisation du protocole BitTorent, il est nécessaire d'attirer votre attention sur le fait qu'une personne mal intentionnée peut partager, en vous faisant croire qu'il s'agit du dernier jeu à la mode, des logiciels malveillants (vers, virus,...) qui pourront potentiellement endommager votre ordinateur, par exemple en chiffrant les données contenues sur votre disque dur afin de les rendre inaccessibles...pour en savoir plus : article rançongiciel de Wikipédia