« Salut Amigo ! »

"Salut, Bilaabo !"

« Quelle nouvelle chose allez-vous me dire aujourd'hui ? »

"Beaucoup de choses. Mais pour commencer, je pense que nous allons discuter du travail avec un réseau et Internet. Intéressé ?"

"Ouais. L'Internet Galactique est super cool."

"D'accord, mais commençons par un peu d'histoire. Au début du 21e siècle, la situation était la suivante…"

"Chaque ordinateur connecté à Internet avait un numéro unique. C'était un numéro ordinaire de 4 octets. C'est ce qu'on appelle l'adresse IP."

"Mais les humains ont une mauvaise mémoire et ont du mal à se souvenir de quelque chose comme 2108458776, alors ils écrivent souvent chaque octet séparément."

"Si nous divisons le nombre à quatre octets 2108458776 en octets séparés, nous obtenons 125.172.135.24. Comme vous vous en souviendrez, chaque octet se compose de 8 bits et peut contenir des nombres de 0 à 255."

"Alors, c'est comme ça qu'on écrit le numéro ?"

"Oui. C'est juste plus facile (pour les humains) de se souvenir des nombres à quatre octets quand ils sont écrits de cette façon."

"En l'occurrence, le choix de n'utiliser que 4 octets leur a rapidement joué un tour cruel. Le nombre d'appareils connectés à Internet a augmenté si rapidement qu'ils ont rapidement manqué de nombre."

"Comment ont-ils contourné cela?"

"Ils ont fait ce que les humains font habituellement."

"Ils ont proposé une nouvelle norme pour les adresses IP et l'ont fièrement nommée IPv6."

"Contrairement à une adresse IP normale (appelée IPv4) qui utilise 4 octets pour former un numéro unique, la nouvelle norme en utilise 16."

"Pensez-y, les humains ne pouvaient pas se souvenir de 10 chiffres dans un nombre ordinaire (comme 2108458776), ils ont donc dû les diviser en 4 parties, mais ils ont ensuite pensé à utiliser des nombres composés de 16 octets."

« Ouais, parfois les humains sont bizarres.

"Ouais. Les humains sont des humains."

"Cela dit, ils se sont sortis de leur situation difficile."

"Ils en ont eu assez de se souvenir des chiffres et ont décidé de les remplacer par des mots."

« Comment ça ? Pourriez-vous me donner un exemple ? »

"Bien sûr, web.mail.com , google.com , new.books.amazon.com , …"

"Ce type de nom s'appelle un domaine."

"Pour que cet Internet fonctionne correctement, ils ont créé une table spéciale appelée Domain Name System (DNS) qui stocke l'adresse IP de chaque nom de domaine."

"Voici comment cela fonctionne."

1)  Un utilisateur saisit une adresse dans un navigateur, par exemple, web.mail.com .

2)  Le navigateur accède au DNS et utilise le nom de domaine pour obtenir l'adresse IP.

3)  Une requête avec l'URL requise est envoyée à cette adresse IP.

"Cela n'a pas l'air très simple."

"Mais cette approche présente plusieurs avantages :"

" 1) Les humains se souviennent facilement des noms qui peuvent être verbalisés."

" 2) Les noms de domaine peuvent être construits de manière hiérarchique en ajoutant des sous-domaines au début d'un nom. Exactement comme un nom de package en Java."

" 3) Si vous devez modifier l'adresse IP du serveur Web, il vous suffit de modifier l'enregistrement DNS, et tout fonctionnera comme avant - les utilisateurs n'ont pas à se souvenir d'une nouvelle adresse."

"Le DNS ressemble à ceci :"

Nom de domaine adresse IP
mail.com 128.35.36.189
web.mail.com 145.12.17.13
nouveau.mail.com 192.155.15.3
google.com 92.117.151.100
google.com 193.168.0.1
docs.google.com 217.12.222.1

"Logique."

"De toute façon, un domaine est le nom d'un ordinateur, mais nous n'avons pas besoin de l'ordinateur - nous avons besoin de ce qu'il y a sur l'ordinateur. C'est à cela que servent les URL."

"Au départ, une URL était en fait un lien vers un fichier sur un autre ordinateur. Par exemple :"

Exemple
http://info.codegym.cc/user/info/profile.html _ _ _ _
Description
http  est le protocole de communication client-serveur
info.codegym.cc  est le nom de domaine de l'ordinateur
user/info/profile.html  est le chemin d'accès au fichier sur l'ordinateur

"Au tout début du développement du réseau, un serveur Web ne pouvait utiliser une URL que pour servir des fichiers qu'il stockait quelque part. L'URL était en fait un chemin global vers le fichier : nom de l'ordinateur + chemin."

"Plus tard, lorsque les serveurs Web ont commencé à générer eux-mêmes des fichiers, les URL ont un peu changé et sont devenues une requête adressée au serveur Web. Des paramètres de requête ont également été ajoutés."

"Aujourd'hui, il est rare de voir une extension de fichier à la fin d'une URL. "Une URL moderne n'est qu'un lien unique avec des paramètres. Plus comme un appel de méthode plutôt qu'un chemin de fichier global."

"Une URL moderne classique ressemble à ceci :"

Analyser l'URL
http://codegym.cc/alpha/api/contacts ? _ _ _ _ ID utilisateur=13&filter=aucun&page=3
Description des parties de l'URL
codegym.cc  est le nom de domaine — le nom unique (adresse) d'un ordinateur sur Internet
http  est le protocole de communication client-serveur
alpha/api/contacts  est la demande du serveur Web ou la demande d'une page Web sur le serveur
userid=13 & filter=none & page=3  est une chaîne avec les paramètres de la requête

"Ouais, je me souviens. Tu m'as parlé des URL récemment."

"Et sur les ports aussi. Vous avez utilisé l'exemple d'un immeuble à appartements."

"Il vaudrait mieux me dire ce qu'est 'http'. Je vois 'protocole' écrit partout, mais je ne sais pas ce que c'est."

"OK. Je vais vous le dire sans plus tarder."

Adresse IP, domaine, URL - 1

" HTTP signifie H yper T ext T ransport P rotocol et sert à transférer de l'hypertexte."

"Qu'est-ce que l'hypertexte ?"

"C'est HTML."

"En gros, un protocole est un ensemble de règles de communication. Il décrit les requêtes qui peuvent être envoyées à un serveur Web, et dans quel format, ainsi que la façon dont le serveur Web doit répondre."

"En bref, la situation est la suivante. Des fichiers texte ordinaires ou, si vous préférez, de gros morceaux de texte sont envoyés entre le client et le serveur. "

"Une requête arrive au serveur, et le serveur fournit une réponse à chaque requête."

"Voici des exemples d'une telle demande et réponse :"

Demande
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Description
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5… – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"La première ligne est la demande réelle. Ce qui suit sont des paramètres de demande supplémentaires, également appelés" champs d'en-tête "."

"Et voici un exemple de réponse :"

Réponse
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8 – This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"Je veux attirer votre attention sur deux choses :"

"Premièrement, peu importe ce que vous demandez, cela ressemble à une demande de fichier au serveur. Peu importe que le fichier soit sur le serveur ou que le serveur le génère en réponse à la demande."

"Deuxièmement, le fichier lui-même est envoyé dans le cadre de la réponse HTTP . En d'autres termes, nous voyons des données supplémentaires au début de la réponse du serveur, puis le corps du fichier en cours de diffusion. "

« Comme c'est intéressant ! Je ne suis pas sûr d'avoir tout compris. Je relirai ça plus tard.

"Oh, je veux te parler d'une autre chose petite mais intéressante : les cookies."

"Quels sont ces?"

"Selon le protocole HTTP, les cookies sont de petites informations que le serveur envoie au client pour être stockées sur le client. Et ils sont renvoyés au serveur dans le cadre de requêtes ultérieures. "

"Et à quoi ça sert ?"

"Supposons qu'un utilisateur se connecte sur la page d'accueil d'un site Web. Le serveur crée un objet de session sur le serveur pour cet utilisateur, et un numéro de session unique est envoyé au client sous forme de cookie. Lors de la prochaine requête du client au serveur, ce numéro de session, ainsi que d'autres cookies, seront renvoyés au serveur. Cela signifie que le serveur peut reconnaître l'utilisateur qui a envoyé la nouvelle demande."

"Comme c'est intéressant !"

"Oui. Lorsque vous écrivez vos propres servlets, nous examinerons ce sujet de plus près. Mais pour l'instant, faisons une pause."

"Peu importe ce que tu dis."