"Hei, Amigo!"

"Hei, Bilaabo!"

"Hva nytt vil du fortelle meg om i dag?"

"Mange ting. Men til å begynne med tror jeg vi skal diskutere arbeid med nettverk og internett. Interessert?"

"Jepp. The Galactic Internet er superkult."

"Ok, men la oss starte med litt historie. På begynnelsen av det 21. århundre var situasjonen denne..."

"Hver datamaskin koblet til Internett hadde et unikt nummer. Dette var et vanlig 4-byte nummer. Det kalles IP-adressen."

"Men mennesker har dårlig hukommelse og sliter med å huske noe sånt som 2108458776, så de skriver ofte hver byte separat."

"Hvis vi deler fire-byte-tallet 2108458776 i separate byte, får vi 125.172.135.24. Som du vil huske, består hver byte av 8 biter og kan inneholde tall fra 0 til 255."

"Så, det er slik vi skriver nummeret?"

"Ja. Det er bare lettere (for mennesker) å huske fire-byte tall når de er skrevet på denne måten."

"Som det skjedde, spilte valget om å bruke bare 4 byte snart et grusomt puss på dem. Antall enheter koblet til Internett vokste så raskt at de snart gikk tom for tall."

– Hvordan kom de seg rundt det?

"De gjorde det mennesker vanligvis gjør."

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

"I motsetning til en vanlig IP-adresse (kalt IPv4) som bruker 4 byte for å danne et unikt nummer, bruker den nye standarden 16."

"Bare tenk på det, mennesker kunne ikke huske 10 sifre i et vanlig tall (som 2108458776), så de måtte dele dem i 4 deler, men så tenkte de å bruke tall som består av 16 byte."

"Ja, noen ganger er mennesker rare."

"Jepp. Mennesker er mennesker."

"Når det er sagt, kom de seg ut av knipen."

"De ble lei av å huske tallene og bestemte seg for å erstatte dem med ord."

"Hvordan er det? Kan du gi meg et eksempel?"

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

"Denne typen navn kalles et domene."

"For at dette Internett skulle fungere ordentlig, opprettet de en spesiell tabell kalt Domain Name System (DNS) som lagrer IP-adressen til hvert domenenavn."

"Slik fungerer det."

1)  En bruker skriver inn en adresse i en nettleser, for eksempel web.mail.com .

2)  Nettleseren får tilgang til DNS og bruker domenenavnet for å få IP-adressen.

3)  En forespørsel med nødvendig URL sendes til denne IP-adressen.

– Det ser ikke veldig enkelt ut.

"Men denne tilnærmingen har flere fordeler:"

" 1) Mennesker finner det lett å huske navn som kan verbaliseres."

" 2) Domenenavn kan bygges hierarkisk ved å legge til underdomener i begynnelsen av et navn. Akkurat som et pakkenavn i Java."

" 3) Hvis du trenger å endre IP-adressen til webserveren, trenger du bare å endre DNS-posten, og alt vil fungere som det gjorde før - brukere trenger ikke å huske en ny adresse."

"DNS ser omtrent slik ut:"

Domenenavn 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

"Gir mening."

"Uansett, et domene er navnet på en datamaskin, men vi trenger ikke datamaskinen - vi trenger det som er på datamaskinen. Dette er hva URL-er er for."

"I utgangspunktet var en URL faktisk en kobling til en fil på en annen datamaskin. For eksempel:"

Eksempel
http :// info.codegym.cc / user/info/profile.html
Beskrivelse
http  er protokollen for klient-server kommunikasjon
info.codegym.cc  er datamaskinens domenenavn
user/info/profile.html  er banen til filen på datamaskinen

"Helt i begynnelsen av nettverksutviklingen var en webserver bare i stand til å bruke en URL for å vise filer som den lagret et sted. URLen var faktisk en global sti til filen: datamaskinnavn + bane."

"Senere, da webservere begynte å generere filer selv, endret URL-er seg litt og ble en forespørsel til webserveren. Forespørselsparametere ble også lagt til."

"I dag er det sjelden å se en filtype på slutten av en URL. "En moderne URL er bare en unik lenke med parametere. Mer som et metodekall i stedet for en global filbane."

"En klassisk moderne nettadresse ser slik ut:"

Parsing URL
http :// codegym.cc / alpha/api/contacts ? userid=13&filter=none&page=3
Beskrivelse av deler av nettadressen
codegym.cc  er domenenavnet – det unike navnet (adressen) til en datamaskin på Internett
http  er protokollen for klient-server-kommunikasjon
alpha/api/contacts  er webserverforespørselen eller forespørselen om en nettside på serveren
userid=13 & filter=none & page=3  er en streng med forespørselsparametrene

"Ja, jeg husker. Du fortalte meg om nettadresser nylig."

"Og om havner også. Du brukte eksemplet med en bygård."

"Det ville være bedre å fortelle meg hva 'http' er. Jeg ser 'protokoll' skrevet overalt, men jeg er ikke klar over hva det er."

"OK. Jeg skal fortelle deg det uten videre."

IP-adresse, domene, URL - 1

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

"Hva er hypertekst?"

"Det er HTML."

"Grovt sett er en protokoll et sett med regler for kommunikasjon. Den beskriver forespørslene som kan sendes til en webserver, og i hvilket format, samt hvordan webserveren skal svare."

"Kort sagt, situasjonen er denne. Vanlige tekstfiler eller, om du vil, store biter av tekst sendes mellom klient og server. "

"En forespørsel kommer til serveren, og serveren gir et svar på hver forespørsel."

"Her er eksempler på en slik forespørsel og svar:"

Be om
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 linjen er den faktiske forespørselen. Det som følger er ytterligere forespørselsparametere, også kjent som 'overskriftsfelt'."

"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 gjøre deg oppmerksom på to ting:"

"For det første, uansett hva du ber om, ser det ut som en filforespørsel til serveren. Det spiller ingen rolle om filen er på serveren eller om serveren genererer den som svar på forespørselen."

"For det andre sendes selve filen som en del av HTTP-svaret . Med andre ord ser vi noen tilleggsdata i begynnelsen av serverens svar, og deretter brødteksten til filen som blir servert. "

"Så interessant! Jeg er ikke sikker på at jeg forsto alt. Jeg skal lese dette igjen senere."

"Å, jeg vil fortelle deg om en annen liten, men interessant ting: informasjonskapsler."

"Hva er de?"

"I henhold til HTTP-protokollen er informasjonskapsler små deler av informasjon som serveren sender til klienten for lagring på klienten. Og de sendes tilbake til serveren som en del av påfølgende forespørsler. "

"Og hva er vitsen med det?"

"Anta at en bruker logger inn på hjemmesiden til et nettsted. Serveren oppretter et sesjonsobjekt på serveren for denne brukeren, og et unikt sesjonsnummer sendes til klienten som en informasjonskapsel. Under neste forespørsel fra klienten til server, vil dette øktnummeret, sammen med andre informasjonskapsler, bli sendt tilbake til serveren. Dette betyr at serveren kan gjenkjenne brukeren som sendte den nye forespørselen."

"Hvor interessant!"

"Japp. Når du skriver dine egne servletter, skal vi se nærmere på dette emnet. Men foreløpig, la oss ta en pause."

"Hva enn du sier."