Hypertext Transfer Protocol -- HTTP/1.1

RFC2068 kuvaa World Wide Webissä käytettävän siirtoprotokollan, HTTP:n (Hypertext Transfer Protocol), uusimman version 1.1:n, standardin. Standardi määrittää käytettävän protokollan peruspiirteet, terminologian, siirrettävän tiedon muotoilun, HTTP-cacheamisen sekä tiettyjä turvallisuus- näkökohtia. HTTP/1.1 on parannettu versio HTTP/1.0:sta, mm. 1.1 tarjoaa mahdollisuuden saman yhteyden aikana hoitaa useita yhteydenottoja (request/ response), kun taas 1.0 käytti jokaiseen toimintoon oman yhteydenmuodostuksen. Vuodesta 1990 kehitetyn HTTP:n päällä toimivan WWW:n räjähdysmäinen kasvu pakottaa protokollan suorituskyvyn ja mm. käyttäjän autentikoinnin ym. turval- lisuusominaisuuksien kehittämiseen.

RFC kuvaa protokollan parametrit, joihin kuuluvat:

HTTP:n viestityypit (message type) koostuvat pyyntö- tai vastauskentästä, sekä eri tyyppisistä headereista, joita pyyntöihin lisätään sekä viestin rungosta. Perustyyppejä (metodeja, methods) ovat GET, HEAD, POST, OPTIONS, PUT, DELETE ja TRACE ja näihin liitetään haluttu URI, johon em. toiminnot kohdistuvat.

Suurin uudistus 1.1:ssä verrattuna edelliseen on ns. jatkuvien yhteyksien (persistent connections) käyttö. Tällä tarkoitetaan sitä, että sen sijaan että avattaisiin uusi TCP-yhteys jokaista URL:ia varten, käytetään yhteyttä, joka katkaistaan vasta (suositeltuna oletusarvona, voi vaihdella) 6 sekunnin kuluttua, jolloin säästetään verkkoliikennettä, CPU:ta ja pyyntöjä tai vastauksia voidaan tunneloida samaan yhteyteen odottamatta vastausta jokaiseen pyyntöön/vastaukseen erikseen, jolloin samaa TCP-yhteyttä voidaan käyttää tehokkaammin. Myös virhetilanteet voidaan raportoida, ilman että niille tarvitsee avata uusi yhteys.

1.1:ssä on myös helpotettu cacheamista tarjoamalla protokollassa erilaisia määrittelyheadereita, joilla voidaan joko vähentää tai jopa poistaa useita pyyntöjä ja tarjota dokumentti cachesta, ja tehdä tämä "läpinäkyvästi" eli siten ettei käyttäjä välttämättä huomaa tätä toiminnetta. Asiakas voi pyytää sivun suoraan cachesta, varmistaa serveriltä että cachessa oleva dokumentti on "ajan tasalla" tai asiakas voi pyytää hakemaan tuoreimman version, siitä huolimatta että cachessa oleva dokumentti on tuore. Cache taas voi antaa varoituksen asiakkaalle, että dokumenttiin liitetty aikatieto osoittaa ko. dokumentin mahdollisesti vanhentuneen. Asiakas tai palvelin voi myös lähettää cachelle erinäisiä vaatimuksia, joilla oletusarvoisia cachenohjausalgoritmeja voidaan ohittaa.

Turvallisuusnäkökohtia pohtiessaan RFC:ssä kiinnitetään huomiota mm. HTTP/1.1:n rajoituksiin. Protokolla ei tarjoa turvallista menetelmää käyttäjän autenti- kointiin, mutta tarjoaa mahdollisuuden rakentaa lisäautentikointia tai salausta protokollan päälle. Erityisesti varoitetaan siitä että protokolla kuljettaa salasanat selväkielisinä. Lisäautentikointiin voidaan käyttää RFC:ssä 2069 esitettyä "Digest Authentication" menetelmää. Serverien logien tarjoamaa informaatiota käyttäjien hakemista dokumenteista taas voidaan käyttää esim. käyttäjien profilointiin ja tätä informaatiota tulisi suojata ja siihen pääsyä rajoittaa, kuten myös proxyjen keräämää tietoa käyttäjistä (esim. sitä, mistä palomuurin takaisesta koneesta yhteys on tullut, mitä dokumentteja on haettu tai mistä dokumentista haku on tapahtunut). Lisäksi varoitetaan palvelimien konfiguroinnissa tapahtuvista virheistä, joilla voidaan hakea dokumentteja, jotka eivät ole tarkoitettu julkisiksi, asiakasohjelmien levittämästä käyttä- jätiedosta ja niiden suojaamisesta (käyttäjätunnus, salasanat, salausavaimet).

Kimmo Pyykkö <kimmo@iki.fi>