| Internet- en netwerkprotokolle |
| --- |
| Toepassingvlak: | DNS  FTP  Gopher  HTTP  HTTPS  IMAP  IRC  NNTP  POP3  RTP  SIP  SMTP  SNMP  SSH  SSL  Telnet  UUCP  XMPP |
| Versendvlak: | DCCP  SCTP  TCP  UDP |
| Netwerkvlak: | ARP  ICMP  IGMP  IP(IPv4, IPv6)  RARP |
| Dataskakelvlak: | ATM  Ethernet  FDDI  PPP  Token ring  Wi-Fi |
| volgens die TCP/IP-model |

**HTTP** (hiperteksoordragprotokol) is ’n protokol wat gebruik word tydens die kommunikasie tussen ’n webkliënt (meestal ’n webblaaier) en ’n webbediener. Die protokol word nie net op die Internet gebruik nie, maar ook op lokale netwerke (ons praat dan van ’n intranet).

Die HTTP-protokol spesifiseer die versoeke (Engels: *requests*) wat 'n kliënt, byvoorbeeld ’n webblaaier, aan die bediener kan stel asook die antwoorde (Engels: *responses*) wat ’n webbediener kan terugstuur. Elke versoek bevat ’n URL wat verwys na die webkomponent of ’n statiese objek soos ’n webbladsy wat versoek word.

HTTP-versoeke
-------------

’n HTTP-versoek bestaan uit ’n metode, die URL, opskrifvelde (*header fields*) en uiteindelik die inhoud. ’n Oorsig van die HTTP-versoek metodes:

* GET – Ontvang die dokument gespesifiseer deur die URL.
* HEAD – Ontvang slegs die opskrifte (*headers*) van die gevraagde dokument.
* POST – Versend data na die bediener.
* PUT – Vervang die dokument op die bediener met die versende data.
* DELETE – Verwyder die dokument.
* OPTIONS – Vra die moontlike opsies wat die webbediener ondersteun aan.

’n Volledige versoek, met opskrifvelde, lyk tipies as volg:

```
GET /wiki/Tuisblad HTTP/1.1
Host: af.wikipedia.org
Connection: close
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Accept: text/xml,text/html,text/plain,image/png,image/jpeg,image/gif
Accept-Charset: ISO-8859-1,utf-8
Keep-Alive: 300
```

HTTP-antwoorde
--------------

’n HTTP-antwoord bestaan uit ’n resultaatkode, opskrifvelde (*header fields*) en ’n boodskap.
Die resultaatkode bestaan uit drie syfers, waarvan die eerste syfer die belangrikste is:

* 1xx: ’n informele boodskap van die webbediener wat gevolg sal word deur meer data
* 2xx: ’n boodskap van die bediener wat aandui dat die gevraagde aksie suksesvol voltooi is
* 3xx: ’n aanstuur (*redirect*) na 'n ander URL
* 4xx: ’n foutboodskap wat deur die kliënt (tipies ’n webblaaier) veroorsaak is, soos ’n verkeerde URL-tipe.
* 5xx: ’n foutboodskap wat deur die webbediener veroorsaak is, soos 'n fout in ’n CGI skrip
* 6xx: ’n proksiefout het voorgekom

Die resultaat-kodes wat die meeste gebruik word is:

* 200 OK – Die gevraagde dokument is suksesvol aangestuur.
* 304 Not Modified – T.o.v. die weergawe in die kas is die bladsy nie gewysig nie.
* 403 Forbidden – Die gevraagde dokument mag nie bekyk word nie.
* 404 Not Found – Die gevraagde dokument bestaan nie.
* 405 Not Allowed – Die gebruiker is nie geregtig om die dokument te sien nie.
* 500 Internal Server Error – Die webbediener kon nie die gevraagde aksie uitvoer nie.

’n Antwoord op die bostaande navraag kan moontlik as volg uitsien:

```
HTTP/1.0 200 OK
Date: Thu, 08 Apr 2004 18:24:33 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4
X-Powered-By: PHP/4.3.4
Content-Language: af
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from wikipedia.org
Connection: close
Content Type: TEXT/HTML
Content Length: 3'127 bytes (received)
--- Die HTML-kode ---
```

Geskiedenis
-----------

Die oorspronklike HTTP weergawe, weergawe HTTP 1.0 vaar aanvanklik baie goed, maar met die ontploffing in populariteit van die Internet kom ’n aantal tekortkominge aan die lig. Hierdie tekortkominge word in die volgende weergawe, weergawe HTTP 1.1 aangespreek. Vanaf ongeveer 1997 is die standaard op die Wêreldwye Web dan ook besig om te verskuif vanaf HTTP 1.0 na HTTP 1.1.

Een van die belangrikste beperkinge van HTTP 1.0 was dat elke IP-adres slegs 1 domein kon huisves. Vanweë die enorme groei in die aantal WWW-domeine, sou dit baie gou tot ’n tekort aan IP-adresse gelei het. HTTP 1.1 ondersteun die huisvesting van meer as 1 domein op dieselfde IP-adres. Andere belangrike toevoegings in HTTP 1.1 wat poog om spoed en werkverrigting te verhoog:

* ondersteuning van ’n kas (*cache*)
* die verbinding word nie noodwendig na elke antwoord, soos in HTTP 1.0, verbreek nie (sogenaamde *persistent connections*)
* die moontlikheid om (dinamies gegenereerde) bladsye gedeeltelik te versend. Hierdeur kan met die versending van die eerste deel begin word voordat die hele bladsy gegenereer is, selfs voordat dit bekend is hoe lank die bladsy uiteindelik sal wees.

Die tegniese details van die HTTP-protokol is opgeteken in verskillende RFC’s. HTTP weergawe 1.0 is gedokumenteer in RFC 1945, terwyl weergawe 1.1 van die protokol in RFC 2616 beskryf word. Hierdie spesifikasies kan vanaf  afgelaai word.