HTTP
Fra Wikipedia, den frie encyklopedi
Applikasjonslaget | HTTP, HTTPS, SMTP, FTP, SSH, IRC, SNMP ... |
Transportlaget | TCP, UDP, SCTP, RTP, DCCP ... |
Nettverkslaget | IPv4, IPv6, ARP, IPX ... |
Datalink-laget | Ethernet, 802.11 WiFi, Token ring, FDDI, ... |
HTTP (Hypertext Transfer Protocol) er protokollen som primært benyttes på Verdensveven for å utveksle informasjon. Utviklinga av HTTP ble gjort av World Wide Web Consortium og arbeidsgrupper i Internet Engineering Task Force og resulterte i en serie med RFCer med RFC 2616 som spesifiserer HTTP/1.1 (versjonen som vanligvis brukes i dag) som den viktigste.
HTTP er en forespørsel/respons protokoll mellom klienter og tjenere. En HTTP klient slik som en vev-leser oppretter typisk en TCP forbindelse over IP-protokollen til en spesiell port (typisk port 80) på en annen vert. En HTTP tjener lytter på den porten og venter på at klienten skal sende en forespørsel-streng, slik som «GET / HTTP/1.1» (som vil resultere i at tjeneren sender standardsida fra en vev-tjener). Etter Forespørsel-strengen kan en epost-aktig MIME melding følge, som har et hode som inneholder et antall parametre som beskriver ulike aspekter av forespørslen og en valgfri kropp som kan inneholde villkårlige data. Når en tjener mottar en forespørsel-streng (og muligens ei melding) så sender tjenren tilbake en respons-streng som foreksempel «200 OK», og ei melding der kroppen kan være fila som ble forespurt, ei feilmelding eller annen informasjon.
HTTP er forskjellig fra andre TCP-baserte protokoller slik som FTP på den måten at forbindelser vanligvis terminieres så snart en bestemt forespørsel (eller en serie med relaterte forespørsler) har blitt fullført. Denne teknikken gjør HTTP velegnet for Verdensveven der sider ofte lenkes til sider på andre tjenere. Teknikken kan noen ganger føre til problemer for vev-utformere (?) siden mangelen på en varig forbindelse gjør det nødvendig å ha andre måter å ta vare på tilstandsinformasjon for brukere. De fleste løsninger på problemet involverer bruken av informasjonskapsler.
Det finnes også en sikker variant av HTTP som kalles HTTPS som kan bruke hvilken som helst krypteringsmetode så lenge den er forstått av begge sider av forbindelsen.
Lokasjoner til HTTP (og HTTPS) sider oppgis som Uniform Resource Locators. Denne adresseringsmåten ble lagd for lenking i HTML-dokumenter.
[rediger] Eksempel
Nedenfor er et eksempel på ei samtale mellom en HTTP klient og en HTTP tjener (www.google.com, lytter på port 80).
Klientforespørsel:
GET / HTTP/1.1 Host: www.google.com
(Fulgt av et linjeskift, i form av vognretur (carriage return) fulgt av linjeskift)
Tjenerrespons:
HTTP/1.1 200 OK Content-Length: 3059 Server: GWS/2.0 Date: Sat, 11 Jan 2003 02:44:04 GMT Content-Type: text/html Cache-control: private Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Connection: keep-alive
(Fulgt av ei blank linje og HTML tekst som består av google hjemmesida.)
I HTTP versjon 1.0 sender en klient en forsepørsel til en tjener. Tjeneren svarer klienten. Etter denne utvekslinga så vil forbindelsen bli frigitt. I HTTP 1.1 derimot så støttes varige forbindelser. Dette gjør det mulig for klienten å sende en forespørsel og få et svar, for deretter å sende flere forespørsler og få svar over samme TCP forbindelsen. TCP forbindelsen blir altså ikke frigjort for hver forespørsel, men brukes til flere. Dette reduserer overhead?? i forbindelse med TCP, så kostnaden i form av nettverk og systemressurser reduseres. Det er også mulig å sende flere enn en (vanligvis to) forespørsler før noe svar mottas fra foregående forespørsler. Denne teknikken er også kjent som HTTP pipelining.
[rediger] Eksterne Lenker
- Tim Berners-Lee's originale kladd fra 1992 http://www.w3.org/Protocols/HTTP/HTTP2.html
- RFC 2616 - Nåværende HTTP/1.1 spesifikasjon.
- HTTP/1.1 specification errata
- HTTP hode framviser
- Liste over HTTP status koder
- Kommando-linje HTTP klienter: cURL, Wget