"Bună, Amigo!"

— Bună, Bilaabo!

— Despre ce lucru nou îmi vei spune astăzi?

„Multe lucruri. Dar, pentru început, cred că vom discuta despre lucrul cu o rețea și internetul. Vă interesează?”

"Da. Internetul Galactic este super tare."

„Bine, dar să începem cu puțină istorie. La începutul secolului 21, situația era așa...”

"Fiecare computer conectat la Internet avea un număr unic. Acesta era un număr obișnuit de 4 octeți. Se numește adresa IP."

„Dar oamenii au memorie slabă și se luptă să-și amintească ceva de genul 2108458776, așa că adesea scriu fiecare octet separat.”

„Dacă împărțim numărul de patru octeți 2108458776 în octeți separați, obținem 125.172.135.24. După cum vă veți aminti, fiecare octet este format din 8 biți și poate conține numere de la 0 la 255.”

— Deci, așa scriem numărul?

"Da. Este mai ușor (pentru oameni) să-și amintească numerele de patru octeți când sunt scrise în acest fel."

„După cum s-a întâmplat, alegerea de a folosi doar 4 octeți le-a jucat curând un truc crud. Numărul de dispozitive conectate la internet a crescut atât de repede încât au rămas în scurt timp fără numere”.

— Cum au ocolit asta?

„Au făcut ceea ce fac oamenii de obicei”.

„Au venit cu un nou standard pentru adresele IP și l-au numit cu mândrie IPv6.”

„Spre deosebire de o adresă IP normală (numită IPv4) care utilizează 4 octeți pentru a forma un număr unic, noul standard folosește 16”.

„Gândește-te, oamenii nu-și puteau aminti 10 cifre dintr-un număr obișnuit (cum ar fi 2108458776), așa că au trebuit să le împartă în 4 părți, dar apoi s-au gândit să folosească numere formate din 16 octeți”.

— Da, uneori oamenii sunt ciudați.

"Da. Oamenii sunt oameni."

„Aceasta fiind spuse, au ieșit din situația lor”.

„S-au săturat să-și amintească numerele și au decis să le înlocuiască cu cuvinte”.

"Cum e? Ai putea să-mi dai un exemplu?"

„Desigur, web.mail.com , google.com , new.books.amazon.com , …”

„Acest tip de nume se numește domeniu”.

„Pentru ca acest internet să funcționeze corect, au creat un tabel special numit Domain Name System (DNS) care stochează adresa IP a fiecărui nume de domeniu”.

"Iată cum funcționează."

1)  Un utilizator introduce o adresă într-un browser, de exemplu, web.mail.com .

2)  Browserul accesează DNS-ul și folosește numele domeniului pentru a obține adresa IP.

3)  O solicitare cu adresa URL necesară este trimisă la această adresă IP.

— Asta nu pare foarte simplu.

„Dar această abordare are mai multe beneficii:”

1) Oamenilor le este ușor să-și amintească nume care pot fi verbalizate.”

" 2) Numele de domenii pot fi construite ierarhic prin adăugarea de subdomenii la începutul unui nume. Exact ca un nume de pachet în Java."

" 3) Dacă trebuie să schimbați adresa IP a serverului web, trebuie doar să schimbați înregistrarea DNS și totul va funcționa ca înainte - utilizatorii nu trebuie să-și amintească o nouă adresă."

„DNS-ul arată cam așa:”

Numele domeniului adresa IP
mail.com 128.35.36.189
web.mail.com 145.12.17.13
new.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

"Are sens."

"Oricum, un domeniu este numele unui computer, dar nu avem nevoie de computer - avem nevoie de ceea ce este pe computer. Pentru asta sunt URL-urile."

„Inițial, o adresă URL era de fapt un link către un fișier de pe alt computer. De exemplu:”

Exemplu
http :// info.codegym.cc / user/info/profile.html
Descriere
http  este protocolul de comunicare client-server
info.codegym.cc  este numele de domeniu al computerului
user/info/profile.html  este calea către fișierul de pe computer

„La începutul dezvoltării rețelei, un server web putea să folosească doar o adresă URL pentru a difuza fișierele pe care le stoca undeva. Adresa URL era de fapt o cale globală către fișier: nume computer + cale.”

„Mai târziu, când serverele web au început să genereze fișiere, adresele URL s-au schimbat puțin și au devenit o solicitare către serverul web. Au fost adăugați și parametrii de solicitare”.

„Astăzi este rar să vezi o extensie de fișier la sfârșitul unei adrese URL. „O adresă URL modernă este doar o legătură unică cu parametri. Mai degrabă un apel de metodă decât o cale globală a fișierului.”

„O adresă URL clasică modernă arată astfel:”

Analizarea URL-ului
http : // codegym.cc/alpha/api/contacts ? _ userid=13&filter=none&page=3
Descrierea unor părți ale URL-ului
codegym.cc  este numele de domeniu — numele (adresa) unic al unui computer de pe Internet
http  este protocolul de comunicare client-server
alpha/api/contacts  este cererea sau cererea serverului web pentru o pagină web pe server
userid=13 & filter=none & page=3  este un șir cu parametrii de solicitare

"Da, îmi amintesc. Mi-ai vorbit recent despre URL-uri."

„Și despre porturi. Ai folosit exemplul unui bloc de apartamente”.

„Ar fi mai bine să-mi spuneți ce este „http”. Văd „protocol” scris peste tot, dar nu sunt clar ce este acesta”.

— Bine. Îți spun fără alte prelungiri.

Adresă IP, domeniu, URL - 1

HTTP înseamnă H yper T ext T ransport Protocol și este pentru transferul de hipertext.

„Ce este hipertextul?”

„Este HTML”.

„În linii mari, un protocol este un set de reguli de comunicare. Descrie cererile care pot fi trimise către un server web și în ce format, precum și cum ar trebui să răspundă serverul web.”

„Pe scurt, situația este aceasta. Fișierele text obișnuite sau, dacă doriți, bucăți mari de text sunt trimise între client și server.

„O cerere vine la server, iar serverul oferă un răspuns la fiecare cerere.”

„Iată exemple de astfel de solicitare și răspuns:”

Cerere
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
Descriere
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.

„Prima linie este cererea reală. Ceea ce urmează sunt parametri suplimentari de solicitare, cunoscuți și sub denumirea de „câmpuri antet”.

„Și iată un exemplu de răspuns:”

Raspuns
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.

„Vreau să vă atrag atenția asupra a două lucruri:”

„În primul rând, indiferent de ce solicitați, arată ca o cerere de fișier către server. Nu contează dacă fișierul se află pe server sau serverul îl generează ca răspuns la cerere.”

„În al doilea rând, fișierul în sine este trimis ca parte a răspunsului HTTP . Cu alte cuvinte, vedem câteva date suplimentare la începutul răspunsului serverului și apoi corpul fișierului care este servit.

"Ce interesant! Nu sunt sigur că am înțeles totul. Voi citi asta din nou mai târziu."

„Oh, vreau să vă spun despre încă un lucru mic, dar interesant: prăjiturile.”

"Ce sunt acelea?"

„Conform protocolului HTTP, cookie-urile sunt mici informații pe care serverul le trimite clientului pentru stocare pe client. Și sunt trimise înapoi la server ca parte a solicitărilor ulterioare.

— Și ce rost are asta?

„Să presupunem că un utilizator se conectează pe pagina de pornire a unui site web. Serverul creează un obiect de sesiune pe server pentru acest utilizator și un număr unic de sesiune este trimis clientului ca cookie. În timpul următoarei solicitări de la client către server, acest număr de sesiune, împreună cu alte cookie-uri, vor fi trimise înapoi către server. Aceasta înseamnă că serverul poate recunoaște utilizatorul care a trimis noua solicitare."

"Ce interesant!"

"Da. Când vă scrieți propriile servlet-uri, vom arunca o privire mai atentă la acest subiect. Dar deocamdată, să luăm o pauză."

"Orice ai spune."