HTTP

T. Issaris

12 Januari 2021

Overzicht

  • Intro
  • Gebruik
  • URL
  • HTTP

Intro

Eerste versie van het web in 1989. Oorspronkelijk gemaakt om tekstdocumenten over het Internet te delen.

Gebruik HTTP

Momenteel gebruikt voor:

  • websites
  • webapplicaties
  • configuratie software voor devices (b.v. routers)
  • APIs

URL

Uniform Resource Locator: tekst die aangeeft waar iets gevonden kan worden op het Internet.

URL - protocol

Enkele voorbeelden:

  • http: websites
  • https: websites over beveiligde verbinding
  • file: lokale bestanden
  • ftp: remote bestanden op FTP-server
  • mailto: email adressen
  • irc: chat servers

URL - mailto

mailto:takis@gmail.com?subject=Les%20van%20vandaag&body=Weer%20online

  • protocol/schema: mailto
  • adres: takis@gmail.com
  • subject: Les van vandaag
  • body: Weer online

URL - mailto

<a href="mailto:takis@gmail.com?subject=Les%20van%20vandaag&body=Weer%20online">stuur e-mail</a>

email

Opgave: Voeg een mailto link toe aan je webpagina.

URLs voor het web

https://www.google.be:443/search?q=the+last+kingdom+novel#section2

  • protocol/schema: https
  • domein naam: www.google.be
  • poort: 443
  • pad: /search
  • parameters: ?q=the+last+kingdom+novel
  • anchor: #section2

URLs voor het web

Opgave: Copy en paste bovenstaande URL en verifieer dat je hiermee op Google zoekt.

URLs voor het web

Opgave: Zoek op duckduckgo.com naar je favoriete game/film/muziek en bestudeer de URL.

Domein naam

DNS (Domain Name System): Systeem om geregistreerde namen om te zetten naar IP-adressen.

Denk aan een telefoonboek: Iemands naam onthouden is makkelijker dan iemands telefoonnummer.

Domein naam

Met het nslookup commando kan je zo’n DNS-query zelf uitvoeren in een commandovenster.

Opgave: Zoek het IP-adres van www.google.be op en bezoek de site door middel van het IP-adres.

Poort

Het IP-adres dat we via het DNS-systeem verkregen identificeert een unieke computer. Op deze computer kunnen echter meerdere software services tegelijk uitgevoerd worden:

  • web
  • email
  • Minecraft server

Om deze services te kunnen onderscheiden worden poorten gebruiken. Dit zijn nummers tussen 0 en 65535:

  • webserver:
    • http: 80
    • https: 443
  • email:
    • SMTP: 25
  • Minecraft server: 25565

Poort

Opgave: Zoek het poortnummer voor telnet op.

https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Protocol

Het protocol dat op het web gebruikt wordt heet HTTP: Hypertext Transfer Protocol. Voor HTTPS is het protocol hetzelfde maar wordt de communicatie versleuteld.

Protocol

curl is een programma om HTTP in een commandovenster te kunnen gebruiken. Het programma werkt gelijkaardig aan een webbrowser, in die zin dat het net zoals een webbrowser een webpagina downloadt.

Curl

Controleer of je curl reeds beschikbaar hebt, en zo niet, installeer dan curl:

https://curl.se/windows/

Curl

Bezoek www.example.com met je favoriete webbrowser. Bezoek nu deze website met curl: curl http://www.example.com

Wat zie je?

Curl

Door middel van de -v parameter, kan je meer informatie zien.

Voer nu dit commando uit: curl -v http://www.example.com

Wat zie je?

Packet analyzer

Met behulp van een zogenoemde “packet analyzer” of “sniffer” kan je de gegevens die over het netwerk gaan bekijken. Ze zijn o.a. handig om netwerk problemen te debuggen of om netwerkprotocollen te bestuderen.

Enkele populaire sniffers zijn:

  • Wireshark
  • tcpdump

Wireshark

Installeer de packet analyzer Wireshark:

Wireshark

Opgave:

  • Start Wireshark op
  • Begin met het opslaan van netwerkdata
  • Voer curl http://www.example.com?pw=mijn_password uit

tcpdump

Installeer tcpdump:

tcpdump

Opgave:

  • Start tcpdump: tcpdump -vv -i interfacenaam port 80
  • Voer curl http://www.example.com?pw=mijn_password uit

netcat/telnet

Met netcat/telnet kan je TCP-connecties maken naar willekeurige IP-adressen, op willekeurige poorten. Als de protocollen tekstgebaseerd zijn, kan je er mee communiceren in een commandovenster.

netcat/telnet

Opgave:

  • Controleer of je netcat of telnet te beschikking hebt.
  • Gebruik netcat om een verbinding te maken met www.example.com op port 80
  • Voer het HTTP commando in om de homepage van de site te downloaden:
    • GET / HTTP/1.1
    • Host: www.example.com

Webserver

Opgave:

  • Start je eigen webserver met Python: python3 -m http.server 8080
  • Gebruik curl om de webpagina te tonen: curl http://localhost:8080
  • Gebruik netcat om de webpagina te tonen

HTTP

De term “verbs” kan je zien als commando’s in het HTTP protocol:

  • GET: pagina downloaden
  • POST: informatie versturen
  • HEAD: informatie over pagina downloaden
  • PUT: informatie uploaden
  • DELETE: iets verwijderen

HTTP status codes

Een webserver geeft via een status code weer of het commando dat de client gaf, gelukt was.

  • 1xx: informatie
  • 2xx: succes
    • 200: OK standaard code bij succesvolle request
  • 3xx: redirection
    • 301: permanent verplaatst

HTTP status codes

  • 4xx: client fout
  • 5xx: server fout
    • 500: interne server fout

HTTP

Hoewel het oorspronkelijk de bedoeling was om b.v. met verb “GET” webpagina’s te downloaden, kan je er gelijk welke functionaliteit achter steken.

Dit is ook wat sinds 1998 meer en meer gebeurde via:

  • XML-RPC
  • SOAP
  • REST
  • web APIs (algemeen)

Web APIs

apimeme public-apis api-list

// reveal.js plugins