"Hej, Amigo!"

"Hej, Bilaabo!"

"Hvad nyt vil du fortælle mig om i dag?"

"Mange ting. Men til at begynde med tror jeg, vi vil diskutere arbejdet med et netværk og internettet. Er du interesseret?"

"Jep. Det galaktiske internet er super fedt."

"Okay, men lad os starte med lidt historie. I begyndelsen af ​​det 21. århundrede var situationen denne..."

"Hver computer forbundet til internettet havde et unikt nummer. Dette var et almindeligt 4-byte nummer. Det kaldes IP-adressen."

"Men mennesker har dårlig hukommelse og kæmper for at huske noget som 2108458776, så de skriver ofte hver byte separat."

"Hvis vi opdeler fire-byte-tallet 2108458776 i separate bytes, får vi 125.172.135.24. Som du vil huske, består hver byte af 8 bit og kan indeholde tal fra 0 til 255."

"Så det er sådan, vi skriver nummeret?"

"Ja. Det er bare nemmere (for mennesker) at huske fire-byte tal, når de er skrevet på denne måde."

"Som det skete, spillede valget om kun at bruge 4 bytes hurtigt et grusomt puds på dem. Antallet af enheder forbundet til internettet voksede så hurtigt, at de hurtigt løb tør for tal."

"Hvordan kom de uden om det?"

"De gjorde, hvad mennesker typisk gør."

"De kom med en ny standard for IP-adresser og kaldte den stolt IPv6."

"I modsætning til en normal IP-adresse (kaldet IPv4), der bruger 4 bytes til at danne et unikt nummer, bruger den nye standard 16."

"Tænk bare over det, mennesker kunne ikke huske 10 cifre i et almindeligt tal (som 2108458776), så de var nødt til at dele dem i 4 dele, men så tænkte de at bruge tal bestående af 16 bytes."

"Ja, nogle gange er mennesker mærkelige."

"Jep. Mennesker er mennesker."

"Når det er sagt, så kom de ud af deres knibe."

"De blev trætte af at huske tallene og besluttede at erstatte dem med ord."

"Hvordan er det? Kan du give mig et eksempel?"

"Selvfølgelig, web.mail.com , google.com , new.books.amazon.com , ..."

"Denne slags navne kaldes et domæne."

"For at dette internet skulle fungere korrekt, oprettede de en speciel tabel kaldet Domain Name System (DNS), der gemmer IP-adressen for hvert domænenavn."

"Sådan fungerer det."

1)  En bruger indtaster en adresse i en browser, for eksempel web.mail.com .

2)  Browseren tilgår DNS og bruger domænenavnet til at få IP-adressen.

3)  En anmodning med den nødvendige URL sendes til denne IP-adresse.

"Det ser ikke særlig simpelt ud."

"Men denne tilgang har flere fordele:"

" 1) Mennesker har let ved at huske navne, der kan verbaliseres."

" 2) Domænenavne kan bygges hierarkisk ved at tilføje underdomæner til begyndelsen af ​​et navn. Præcis som et pakkenavn i Java."

" 3) Hvis du har brug for at ændre IP-adressen på webserveren, behøver du kun at ændre DNS-posten, og alt vil fungere, som det gjorde før - brugerne behøver ikke at huske en ny adresse."

"DNS ser sådan ud:"

Domænenavn IP-adresse
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

"Giver mening."

"Under alle omstændigheder er et domæne navnet på en computer, men vi har ikke brug for computeren - vi har brug for det, der er på computeren. Det er hvad URL'er er til."

"Oprindeligt var en URL faktisk et link til en fil på en anden computer. For eksempel:"

Eksempel
http :// info.codegym.cc / bruger/info/profile.html
Beskrivelse
http  er protokollen for klient-server kommunikation
info.codegym.cc  er computerens domænenavn
user/info/profile.html  er stien til filen på computeren

"I begyndelsen af ​​netværksudviklingen var en webserver kun i stand til at bruge en URL til at servere filer, som den gemte et sted. URL'en var faktisk en global sti til filen: computernavn + sti."

"Senere, da webservere begyndte at generere filer selv, ændrede URL'er sig en smule og blev til en anmodning til webserveren. Forespørgselsparametre blev også tilføjet."

"I dag er det sjældent at se en filtypenavn i slutningen af ​​en URL. "En moderne URL er blot et unikt link med parametre. Mere som et metodekald snarere end en global filsti."

"En klassisk moderne URL ser sådan ud:"

Parser URL'en
http : // codegym.cc/alpha/api/contacts ? _ userid=13&filter=none&page=3
Beskrivelse af dele af URL'en
codegym.cc  er domænenavnet - det unikke navn (adresse) på en computer på internettet
http  er protokollen for klient-server kommunikation
alpha/api/contacts  er webserverens anmodning eller anmodning om en webside på serveren
userid=13 & filter=none & page=3  er en streng med anmodningsparametrene

"Ja, jeg kan huske. Du fortalte mig om URL'er for nylig."

"Og om havne også. Du brugte eksemplet med en lejlighedsbygning."

"Det ville være bedre at fortælle mig, hvad 'http' er. Jeg ser 'protokol' skrevet overalt, men jeg er ikke klar over, hvad det er."

"OK. Jeg fortæller dig det uden videre."

IP-adresse, domæne, URL - 1

" HTTP står for Hyper T ext T ransport P rotocol og er for overførsel af hypertekst. "

"Hvad er hypertekst?"

"Det er HTML."

"En protokol er groft sagt et sæt regler for kommunikation. Den beskriver de anmodninger, der kan sendes til en webserver, og i hvilket format, samt hvordan webserveren skal reagere."

"Kort sagt, situationen er denne. Almindelige tekstfiler eller, hvis du vil, store bidder af tekst sendes mellem klienten og serveren. "

"En anmodning kommer til serveren, og serveren giver et svar på hver anmodning."

"Her er eksempler på en sådan anmodning og svar:"

Anmodning
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
Beskrivelse
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.

"Den første linje er den faktiske anmodning. Det følgende er yderligere anmodningsparametre, også kendt som 'header fields'."

"Og her er et eksempel på et svar:"

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

"Jeg vil gerne henlede din opmærksomhed på to ting:"

"For det første, uanset hvad du anmoder om, ligner det en filanmodning til serveren. Det er ligegyldigt, om filen er på serveren, eller om serveren genererer den som svar på anmodningen."

"For det andet sendes selve filen som en del af HTTP-svaret . Med andre ord ser vi nogle ekstra data i begyndelsen af ​​serverens svar og derefter brødteksten af ​​filen, der serveres. "

"Hvor interessant! Jeg er ikke sikker på, jeg har forstået alt. Jeg læser det her igen senere."

"Åh, jeg vil gerne fortælle dig om en anden lille, men interessant ting: småkager."

"Hvad er det for nogle?"

"Ifølge HTTP-protokollen er cookies små stykker information, som serveren sender til klienten til lagring på klienten. Og de sendes tilbage til serveren som en del af efterfølgende anmodninger. "

"Og hvad er meningen med det?"

"Antag at en bruger logger ind på hjemmesiden på et websted. Serveren opretter et sessionsobjekt på serveren for denne bruger, og et unikt sessionsnummer sendes til klienten som en cookie. Under den næste anmodning fra klienten til server, vil dette sessionsnummer sammen med andre cookies blive sendt tilbage til serveren. Det betyder, at serveren kan genkende den bruger, der sendte den nye anmodning."

"Hvor interessant!"

"Jep. Når du skriver dine egne servlets, vil vi se nærmere på dette emne. Men for nu, lad os tage en pause."

"Hvad end du siger."