"Hallo Amigo!"
"Hallo Bilaabo!"
'Over welk nieuws ga je me vandaag vertellen?'
'Veel dingen. Maar ik denk dat we om te beginnen het werken met een netwerk en internet gaan bespreken. Geïnteresseerd?'
"Ja. Het galactische internet is supercool."
"Oké, maar laten we beginnen met wat geschiedenis. Aan het begin van de 21ste eeuw was de situatie zo..."
"Elke computer die op internet was aangesloten, had een uniek nummer. Dit was een gewoon nummer van 4 bytes. Het wordt het IP-adres genoemd."
"Maar mensen hebben een slecht geheugen en worstelen om zoiets als 2108458776 te onthouden, dus schrijven ze vaak elke byte afzonderlijk."
"Als we het nummer van vier bytes 2108458776 splitsen in afzonderlijke bytes, krijgen we 125.172.135.24. Zoals u zich zult herinneren, bestaat elke byte uit 8 bits en kan deze getallen van 0 tot 255 bevatten."
"Dus, zo schrijven we het nummer?"
"Ja. Het is gewoon gemakkelijker (voor mensen) om getallen van vier bytes te onthouden als ze op deze manier worden geschreven."
"Toevallig speelde de keuze om slechts 4 bytes te gebruiken al snel een wrede truc met hen uit. Het aantal apparaten dat op internet was aangesloten, groeide zo snel dat ze al snel geen nummers meer hadden."
"Hoe zijn ze daar omheen gekomen?"
"Ze deden wat mensen gewoonlijk doen."
"Ze bedachten een nieuwe standaard voor IP-adressen en noemden die met trots IPv6."
"In tegenstelling tot een normaal IP-adres (IPv4 genaamd) dat 4 bytes gebruikt om een uniek nummer te vormen, gebruikt de nieuwe standaard 16."
"Stel je eens voor, mensen konden geen 10 cijfers onthouden in een gewoon getal (zoals 2108458776), dus moesten ze ze in 4 delen verdelen, maar toen dachten ze om getallen te gebruiken die uit 16 bytes bestonden."
"Ja, soms zijn mensen raar."
"Ja. Mensen zijn mensen."
"Dat gezegd hebbende, ze zijn uit hun hachelijke situatie gekomen."
"Ze werden moe van het onthouden van de cijfers en besloten ze te vervangen door woorden."
'Hoezo? Kun je me een voorbeeld geven?'
"Natuurlijk, web.mail.com , google.com , new.books.amazon.com , …"
"Dit soort naam wordt een domein genoemd."
"Om dit internet goed te laten werken, hebben ze een speciale tabel gemaakt, het Domain Name System (DNS) genaamd, waarin het IP-adres van elke domeinnaam wordt opgeslagen."
"Dit is hoe het werkt."
1) Een gebruiker voert een adres in een browser in, bijvoorbeeld web.mail.com .
2) De browser krijgt toegang tot de DNS en gebruikt de domeinnaam om het IP-adres te verkrijgen.
3) Een verzoek met de vereiste URL wordt naar dit IP-adres gestuurd.
"Dat ziet er niet zo eenvoudig uit."
"Maar deze aanpak heeft verschillende voordelen:"
" 1) Mensen vinden het gemakkelijk om namen te onthouden die kunnen worden uitgesproken."
" 2) Domeinnamen kunnen hiërarchisch worden opgebouwd door subdomeinen toe te voegen aan het begin van een naam. Precies zoals een pakketnaam in Java."
" 3) Als u het IP-adres van de webserver moet wijzigen, hoeft u alleen het DNS-record te wijzigen en alles werkt zoals voorheen - gebruikers hoeven geen nieuw adres te onthouden."
"De DNS ziet er ongeveer zo uit:"
Domeinnaam | IP adres |
---|---|
mail.com | 128.35.36.189 |
web.mail.com | 145.12.17.13 |
nieuw.mail.com | 192.155.15.3 |
google.nl | 92.117.151.100 |
google.nl | 193.168.0.1 |
docs.google.com | 217.12.222.1 |
… |
"Klinkt logisch."
"Hoe dan ook, een domein is de naam van een computer, maar we hebben de computer niet nodig - we hebben nodig wat er op de computer staat. Dit is waar URL's voor zijn."
"Aanvankelijk was een URL eigenlijk een link naar een bestand op een andere computer. Bijvoorbeeld:"
Voorbeeld |
---|
http://info.codegym.cc / user / info /profile.html |
Beschrijving |
http is het protocol voor client-servercommunicatie info.codegym.cc is de domeinnaam van de computer user/info/profile.html is het pad naar het bestand op de computer |
"Aan het begin van de netwerkontwikkeling kon een webserver alleen een URL gebruiken om bestanden te bedienen die ergens waren opgeslagen. De URL was eigenlijk een globaal pad naar het bestand: computernaam + pad."
"Later, toen webservers zelf bestanden begonnen te genereren, veranderden URL's een beetje en werden ze een verzoek aan de webserver. Er werden ook verzoekparameters toegevoegd."
"Tegenwoordig is het zeldzaam om een bestandsextensie aan het einde van een URL te zien. "Een moderne URL is slechts een unieke link met parameters. Meer een methodeaanroep dan een globaal bestandspad."
"Een klassieke moderne URL ziet er zo uit:"
De URL parseren |
---|
http://codegym.cc/alpha/api/contacts ? _ _ _ _ userid=13&filter=geen&page=3 |
Beschrijving van delen van de URL |
codegym.cc is de domeinnaam — de unieke naam (adres) van een computer op internet |
http is het protocol voor client-servercommunicatie |
alpha/api/contacts is het verzoek van de webserver of het verzoek om een webpagina op de server |
userid=13 & filter=none & page=3 is een string met de verzoekparameters |
'Ja, dat weet ik nog. Je hebt me onlangs over URL's verteld.'
'En ook over havens. Je hebt het voorbeeld van een flatgebouw gebruikt.'
"Het is beter om me te vertellen wat 'http' is. Ik zie overal 'protocol' staan, maar ik weet niet precies wat dat is."
"OK. Ik zal het je zonder verder oponthoud vertellen."
" HTTP staat voor H yper T ext T ransport P rotocol en is voor het overbrengen van hypertekst."
"Wat is hypertekst?"
"Het is HTML."
"Gruwweg is een protocol een set regels voor communicatie. Het beschrijft de verzoeken die naar een webserver kunnen worden gestuurd, in welk formaat, en hoe de webserver moet reageren."
"Kortom, de situatie is deze. Gewone tekstbestanden of, zo u wilt, grote stukken tekst worden tussen de client en de server verzonden. "
"Er komt een verzoek naar de server en de server geeft een antwoord op elk verzoek."
"Hier zijn voorbeelden van een dergelijk verzoek en antwoord:"
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
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.
"De eerste regel is het eigenlijke verzoek. Wat volgt zijn aanvullende verzoekparameters, ook wel 'header-velden' genoemd."
"En hier is een voorbeeld van een reactie:"
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.
"Ik wil uw aandacht vestigen op twee dingen:"
"Ten eerste, wat je ook vraagt, het ziet eruit als een bestandsverzoek aan de server. Het maakt niet uit of het bestand op de server staat of dat de server het genereert als reactie op het verzoek."
"Ten tweede wordt het bestand zelf verzonden als onderdeel van het HTTP-antwoord . Met andere woorden, we zien wat aanvullende gegevens aan het begin van het antwoord van de server en vervolgens de hoofdtekst van het bestand dat wordt aangeboden. "
"Wat interessant! Ik weet niet zeker of ik alles heb begrepen. Ik lees dit later nog eens."
"Oh, ik wil je nog iets vertellen over een ander klein, maar interessant ding: koekjes."
"Wat zijn dat?"
"Volgens het HTTP-protocol zijn cookies kleine stukjes informatie die de server naar de client stuurt voor opslag op de client. En ze worden teruggestuurd naar de server als onderdeel van volgende verzoeken. "
"En wat heeft dat voor zin?"
"Stel dat een gebruiker zich aanmeldt op de startpagina van een website. De server maakt voor deze gebruiker een sessieobject aan op de server en er wordt een uniek sessienummer als cookie naar de client gestuurd. Bij het volgende verzoek van de client aan de server, wordt dit sessienummer samen met andere cookies teruggestuurd naar de server. Dit betekent dat de server de gebruiker kan herkennen die het nieuwe verzoek heeft verzonden."
"Hoe interessant!"
"Ja. Als je je eigen servlets schrijft, zullen we dit onderwerp nader bekijken. Maar laten we nu even pauzeren."
"Wat je ook zegt."
GO TO FULL VERSION