2011 Caching, Cookies och DNS-servrar Patrick Lindell (Patli193@student.liu.se Rasmus Lindström (Rasli490@student.liu.se Linköping Universitet 2011-02-23
Sammanfattning I denna rapport tas huvudsakligen tre ämnen upp. Dessa är DNS-servrar, caching och cookies. Dessa tekniker möjliggör ett smidigare och snabbare internetanvändande. Men dessa funktioner jobbar i det tysta, bakom den vanlige användarens ögon. Genom att läsa denna rapport hoppas vi att läsaren får en ökad förståelse om vad som egentligen händer när du skriver in en adress i adressfältet i din webbläsare. Vi tar upp för- och nackdelar med alla dessa tekniker och jämför olika sätt att använda dem. Vi har även gjort ett eget experiment för att bevisa att det som fungerar i teorin även fungerar i praktiken. sida 1
Innehåll Sammanfattning... 1 1. Inledning... 3 1.1. Syfte... 3 1.2. Metod och källor... 3 1.3. Avgränsningar... 3 2. Huvuddel... 4 2.1. Cookies... 4 2.1.1. Tekniken... 4 2.1.2. Användningsområden... 4 2.1.3. Cookie-exempel... 5 2.2. DNS-servrar... 6 2.2.1. DNS-Hierarki... 7 2.2.2. Trafikfördelning och Host-alias... 8 2.3. Caching... 8 2.3.1. Web-caching (Proxy server)... 8 2.3.2. Browser Caching (Temporary Internet Files)... 10 2.3.3. DNS-cacher... 12 3. Slutsats... 13 Källförteckning... 14 sida 2
1. Inledning Idag används internet av en stor del av världens befolkning. Men de flesta av användarna (inklusive vi själva) har en väldigt begränsad förståelse för hur saker och ting egentligen fungerar. Efter viss efterforskning har vi även hittat tekniker (som inte alltid är absolut nödvändiga) som finns för att göra användningen smidigare. I början av internets era var internet ett långsamt och väldigt tidkrävande nätverket att använda sig ut av. Genom att bygga ut bandbredden har internetleverantörer (ISP) till viss del effektiviserat internet, men det finns även andra faktorer som bidragit till den ökande hastigheten. Det är just dessa faktorer vi inriktat oss på för att skriva denna rapport. De tre huvudsakliga termer vi tagit upp, och försökt förklara är DNS-server, caching och cookies. 1.1. Syfte Syftet med denna rapport är att utreda hur de olika sätten att effektivisera internetanvändning med hjälp av caching, cookies och DNS-servrar. Vårt mål är att få en djupare (egen) kunskap men även försöka förklara de olika teknikerna på ett lättförståeligt sätt. 1.2. Metod och källor Denna rapport är framförallt baserad på elektroniska källor och vår kurslitteratur. Vi har även använt så kallade RFCer, vilka kan betraktas som standarder för hur protokoll fungerar. Den enda metod, bortsett från litteraturläsning (faktisk och elektronisk), är ett praktiskt experiment ang. cookies, med hjälp av våra egna datorer. 1.3. Avgränsningar Vi har valt att hålla oss på en ganska allmän nivå för att en relativt oinsatt användare ska kunna förstå den verkliga tekniken bakom sin internetanvändning. Vi har även valt att avgränsa oss på så sätt att vi försökt ta med de viktigaste sorterna av de tre metoder vi tar upp, DNS, caching och cookies. sida 3
2. Huvuddel 2.1. Cookies De flesta stora webbplatser använder sig idag av så kallade cookies, det är ett sätt att kunna identifiera och komma ihåg användare. De kan användas för att underlätta surfandet genom att t.ex. komma ihåg vilket språk användaren använder. Men de kan även användas för att hålla koll på en användares intressen och på så sätt kunna anpassa sin reklam efter användaren, vilket i slutänden leder till större intäkter för webbplatsen. Specifikationer om hur cookies fungerar finns beskrivet i RFC 2965. 2.1.1. Tekniken Cookies är en liten textfil som skapas på användarens dator första gången han eller hon surfar in på en webbplats som använder sig av cookies. Användaren och dess cookie får sedan en sorts av id i form av ett fält i den HTTP-trafik som går mellan användaren och servern, fältet heter Set-cookie: och innehåller en sträng som blir ditt id. Detta id skickas med all följande HTTP-trafik mellan servern och användaren, och saker som sökhistorik och personliga inställningar sparas vartefter, antingen i cookien eller på en plats på webbplatsens server, som cookien refererar till. (Kurose och Ross, 2010) Cookies är ett sätt att kunna göra så att de tillståndslösa protokollet HTTP kan hålla koll och komma ihåg vad som skickats i tidigare paket, vilket de annars inte kan göra. Detta är till stor nytta på många stora webbplatser. (RFC 2965) 2.1.2. Användningsområden De finns framförallt tre stora användningsområden för cookies: Session management, Personalization och Tracking. Dessa tre beskriv nedan.(kristol, David M. 2001) Session management innebär som vi tidigare beskrev att man kan tilldela det annars tillståndslösa HTTP-protokollet ett minne. Detta möjliggör sådant som vi i dagsläget på många webbplatser tar för givet, t.ex. möjligheten att på många hemsidor lägga saker i en s.k. kundkorg, för att när du tillslut handlat klart kan betala alla varor på en gång. Detta hade inte varit möjligt utan cookies. Man brukar kalla de cookies som sköter denna typ av saker för Session cookies vilket innebär att de försvinner när du avslutar din webbläsare, eller, i vissa fall, efter en viss tids inaktivitet. (Rajiv C. Shah, Jay P. Kesan, 2004) sida 4
Ett annat användningsområde är Personalization. Detta innebär att en webbplats kan komma ihåg personliga saker om användaren som kan underlätta för dennes framtida användande av tjänsten. Ett vanligt område för detta är att man på många webbplatser som kräver autentisering via login, kan kryssa i en liten box som gör att användarens alias och lösenord sparas i en cookie. Denna cookie skickas då med i framtida besök på webbplatsen så att användaren inte behöver fylla i användarnamn och lösenord, vilket bidrar till ett effektivare surfande. Andra exempel på användande kan vara på sidor som det kan väljas teman och språk på. Dessa cookies är s.k. Persistent cookies, vilket betyder att de finns kvar även efter att du stängt av webbläsaren, och även efter en ev. omstart av datorn. Hur länge den ska finnas kvar på användarens dator finns specificerat i ett fält med titeln Max-Age, som anger en exakt tid då cookien slutar gälla.(kristol, David M. 2001) Det tredje användningsområdet som vi tar upp är Tracking, och detta är kanske ett av de mest kontroversiella användningsområdena för cookies, då många användare anser att det i vissa fall vara ett intrång på den personliga integriteten. Detta användningsområde är dock ganska likt det som vi nämnde tidigare, Personalization, då de använder persistant cookies på ungefär samma sätt. Det som skiljer sig mellan de båda områdena är dock ändamålet. Då Personalization handlar om att spara information för att göra användandet effektivare för användaren, så handlar istället Tracking mer om webbplatsens egna vinstintresse. De som menas med Tracking är helt enkelt att cookien sparar information om vad användaren gör för sökningar på deras webbplats, vad användaren tittar på för artiklar och när den gör det. Detta för att kunna göra en profil på användaren, och på så sätt veta vad användaren är intresserad av. När webbplatsen sedan vet vad användaren tycker om, så är det lättare att kunna göra effektivare reklam, och därmed öka sin vinst. (Rajiv C. Shah, Jay P. Kesan, 2004) 2.1.3. Cookie-exempel En webbplats bland många som använder sig utav Tracking cookies är www.amazon.com, som är ett amerikanskt företag som säljer olika typer av media (böcker, filmer, spel m.m.) över internet. Vi ville undersöka hur detta gick till i praktiken, och gjorde ett mindre experiment. sida 5
Bild 1 Vi började med att starta upp Internet Explorer 7, tömde all tidigare historik och tog bort alla cookies. Sedan öppnade vi upp den mapp på datorn där cookies sparas, i detta fall C:\Users\iPatrish\AppData\Roaming\Microsoft\Windows\Cookies, som i detta fall var tom. Vi gick sedan in på www.amazon.com, gjorde en artikelsökning med söktermen lol, och stängde sedan ner webbläsaren. Efter detta kunde vi direkt se att de lagts till en cookie i våran cookie-mapp med namnet ipatrish@amazon[1].txt, och filen innehöll en rad på 595 tecken. Texten bestod till största del av stora och små bokstäver blandade med siffror och en del andra tecken som vi inte kunde tolka, ett exempel taget ur cookien är rcrxc05+x/j3e. De som vi däremot kunde se var bl.a. session-idtime och session-id, men ingenstans i dokumentet stod söktermen lol. Detta tyder på att Amazon.com förmodligen lagrar informationen om användaren på sina egna servrar, och cookien endast hänvisar till den platsen. Vi gick sedan åter igen på webbplatsen www.amazon.com för att se ifall sidan kom ihåg oss. Och redan på förstasidan kunde vi se att sådant var fallet, då det kom upp rekommendationer på filmer och böcker med termen lol i namnet, ett exempel var LOL <(^^,)> by Basshunter. För att testa vår teori ytterligare så stängde vi ner webbläsaren, öppnade cookien och tog bort ett tecken mitt i all text för att sedan återansluta till Amazon.com. Denna gång fick vi inte upp några rekommendationer. Detta tyder på att de vi läst även stämmer i praktiken. 2.2. DNS-servrar Domain Name System (DNS) är ett system som används i nätverk som t.ex. internet, dess huvudsakliga uppgift är att binda samman adresser i text-format med adresser i IP-format. Så att när en användare skriver in en adress i sin webbläsare, t.ex. www.amazon.com, så skickas det ut en förfrågan över nätverket till en DNS-server om vilken IP-adress denna webbplats har. Men DNS:er fyller även andra funktioner som vi ska titta närmare på. En närmare beskrivning av DNS finns i RFC 1034 och RFC 1035. sida 6
2.2.1. DNS-Hierarki DNS-protokollet är ett hierarkiskt uppbyggt protokoll, som bygger på tre olika servertyper: Rotservrar, toppdomäner och Authoriative DNS-servers. De som skiljer de olika typerna av servrar är vad för adresser de innehåller. Detta ska vi nu gå igenom, och för att illustrera detta på ett tydligt sätt tar vi hjälp av denna bild: Bild 2 (Ollmann, Gunter, 2007) Processen börjar med att en klient frågar efter en IP-adress till en webbplats, i detta fall www.mybank.com. Förfrågan skickas då till en lokal DNS-server som i detta fall inte har något cachead information (Mer om detta under rubriken DNS-cacher) om mybank.com. DNS-servern inleder då med att kontakta en rotserver. Rotservrar har information om hur du kan kontakta de olika toppdomänerna t.ex..com,.se och.org. Så i detta fall frågar DNS-servern efter adressen till toppdomänen.com, och får tillbaka den. Toppdomänerna har information om hur man kommer i kontakt med alla de webbplatser som ingår i deras toppdomäner. Så när DNS-servern frågar toppdomänen.com efter IP-adressen till www.mybank.com så får de tillbaks en adress till mybank.com s Authoriative DNS-server. När DNS-servern kontaktar denna server så får den i sin tur tillbaka en IP-adress som DNS-servern då kan skicka tillbaka till klienten, för att sedan exempelvis starta en http-överföring med mybank.com.(ollmann, Gunter, 2007) sida 7
2.2.2. Trafikfördelning och Host-alias DNS uppfyller även andra funktioner som gör webbsurfandet betydligt smidigare än vad de hade varit annars, två av dessa saker är trafikfördelning och Host-alias. Trafikfördelning innebär att DNS protokollet hjälper till att få en jämn fördelning på trafiken som går till större webbplatser. Detta eftersom att stora webbplatser som t.ex. Cnn.com har flera servrar som de delar upp trafiken på, varav varje server har en egen IP-adress. När DNS-servern får en förfrågan om IP-adressen till Cnn.com så skickar servern tillbaks den IP-adress som står överst i listan över tillgängliga IP-adresser och lägger den sedan underst listan. Detta resulterar i att Cnn.com får en jämn fördelning av trafik på sina servrar. (Kurose och Ross, 2010) Host-alias innebär att en webbplats kan ha flera olika adresser i textformat bundna till en och samma IP-adress. Detta kan vara bra för att kunna fånga upp personer som stavar fel, om en webbplats har ett långt och svårt namn eller om de finns nån annan anledning till att webbplatsen vill kunna ha fler alias. Ett exempel på detta är www.facebook.com som man kan komma åt via båda facebook.com och thefacebook.com. Detta används även för mailservrar, och det är anledningen till att så många kan ha mailadresser som @hotmail.com. Om det inte vore för DNS-servrar så skulle det behöva delas upp på olika ändelser, t.ex. @co122w.col122.mail.live.com, vilket vore betydligt krångligare att komma ihåg.(kurose och Ross, 2010) 2.3. Caching Det finns många olika sorters cacher som t.ex. olika sorters cacheminnen i din dator, cacher som din webbläsare implementerar (Temporary Internet Files i Internet Explorer) samt externa webb-cacher (proxy-servrar eller DNS-cache). I denna del av rapporten kommer vi klargöra hur tre av dessa (webbläsare-cacher, proxy-servrar och DNS-cacher) fungerar. Den sortens cache vi kommer att ta upp är ett tillfälligt lagringsutrymme på en dator (eller server). I cachen samlas information (som ofta används) upp för att snabba på din internetanvändning genom att minska antalet TCP-anslutningar och därmed reducera tiden det tar för webbsidor att laddas. (Hansson, Roger, 1998). 2.3.1. Web-caching (Proxy server) En web-cache är en enhet, ofta utanför det interna nätverket, som det mesta av all internettrafik strömmas igenom. Web-cachen har en egen hårddisk, där en kopia av den information som begärts av användaren sparas. Oftast är dessa servrar köpta av stora ISP (Internet Service Provider) men ibland köps de även in av stora bolag eller universitet med stora interna nätverk. Genom att placera sida 8
en proxy-server innan länken ut mot internet kan man snabba på överföringen men också slippa köpa en dyrare (snabbare) internetanslutning. För att klargöra hur en proxyserver fungerar använder vi oss av denna bild: Bild 3 (tech-faq.com) När en av datorerna (A, B eller C) gör en förfrågan om en webbsida skickas denne direkt till proxyservern. Om webbsidan nyligen besökts av någon av datorerna har proxy-servern med största sannolikhet en kopia av hemsidan sparad på sin hårddisk. Om sidan nyligen besökts (och därmed antagligen inte ändrats) kommer denna kopia genast skickas till användaren. Om det istället var ett tag sedan webbsidan senast hämtades från webb-servern kommer en förfrågan om när hemsidan senast uppdaterades skickas till densamma. Om den inte uppdaterats skickar proxy-servern den sparade kopian till användaren. Genom att web-servern bara skickat ett kort svar (304 Not modified) till proxy-servern sparas tid då överföring mellan dessa två parter inte behöver göras. Om den däremot har uppdateras skickas en ny verision tillbaka till proxy-servern (som sparar den nya verisionen på sin hårddisk) för att sedan skickas till användaren. Om proxy-servern aldrig tidigare sett begäran som gjorts av användaren skickar den i sin tur en begäran till ursprungsservern. Därefter sker samma sak som om sidan nyligen uppdaterats. (Kurose och Ross, 2010). För att effektivisera proxy-serveranvändandet ytterligare kan man ansluta flera proxy-servrar till ett proxy-nätverk. I detta fall tillfrågar proxy-servern som du gjort din begäran till, ett antal andra proxyserver (som finns tillgängliga i proxy-nätverket) om de har informationen du söker. Om de andra proxy-servrarna inte heller har informationen som efterfrågats skickas förfrågan till slut till ursprungsservern. (www.intranetica.com) sida 9
2.3.2. Browser Caching (Temporary Internet Files) En annan sorts av caching som används idag är den så kallade browser cachingen. Det hela går till ungefär som beskrivits i stycket ovan men med vissa olikheter. Därför har vi i nästa paragraf tänkt att ta upp hur denna sorts caching används av bland annat två stora internetbrowsers (Mozilla Firefox (MF) och Internet Explorer (IE)).( Prior, Sandra 2010) Både MF och IE använder sig idag av en mapp kallad Temporary Internet Files. Denna mapp upptar en del av hårddisken på den egna datorn. I mappen sparas en stor del av all information du begärt från internet för att effektivisera användningen av internet. Om du till exempel trycker på backaknappen är sannolikheten att, sidan uppdaterats sedan den senast visats, mycket låg. Webbläsaren skickar då bara en förfrågan om sidan uppdaterats sedan den senast laddats. Om så inte är fallet går din webbläsare istället in på den interna hårddisken för att leta upp information som söks. Med hjälp av denna sorts caching slipper användaren att onödig tid, för att till exempel etablera ett flertal TCPanslutningar, slösas. För att illustrera lite mer lättförståeligt tänkte vi ta hjälp av två bilder: Bild 4 (milincorporated.com) Första steget: Denna bild symboliserar första gången en websida begärs av en användare. Förfrågan går till en ursprungsserver (eller en proxy-server) som skickar webbsidan till användaren. Därefter sparas en kopia av informationen som begärts ner i mappen Temporary Internet Files. ( www.milincorporated.com) sida 10
Bild 5 (milincorporated.com) Andra steget: I detta fall har webbsidan laddats nyligen. Istället för att återigen ladda ner (samma) information från ursprungsservern (eller proxy-servern) så letar din webbläsare istället upp informationen som redan finns sparad på din hårddisk. Genom att slippa överföringen över din internetlina sparas tid då de interna åtgärderna tar betydligt mindre tid att utföra. (Prior, Sandra 2010). Utöver att denna sorts caching effektiviserar din internetanvändning i avseende på tid så har den åtminstone en till fördel; den tillåter så kallad offline browsing vilket kan vara till stor fördel när användaren befinner sig på en plats utan internetanslutning. Trots de positiva aspekterna av browser caching finns det människor som väljer att inte använda sig av denna sorts caching. Nästintill alla användare som är av denna åsikt, beror på en sak; de tycker att de förlorar sin personliga integritet. De menar att alla som någon gång har haft tillgång till deras PC kan gå in i din Temporary Internet Files-mapp och därmed studera personens internetanvändning. Trots att det går att radera filerna i denna mapp försvinner de inte, utan sparas desseutom ner i filer som heter index.dat. Dessa filer (det finns ett stort antal gömda i din dator) är betydligt svårare att hitta, men innehåller ändå nästan all information om din internetanvändning. (www.milincorporated.com) sida 11
2.3.3. DNS-cacher Så fort du kopplar upp dig mot internet kommer du använda dig utav en DNS-server (se avsnitt om DNS-server). Med tanke på att din begäran ofta är en av tusentals (ibland miljontals) skulle det ta allt för lång tid om ursprungsservern var tvungen att svara alla dessa förfrågningar. Lösningen på detta problem, som idag används heter DNS-cacher. Cacherna finns inbyggda i de tusentals DNS-servrar som finns uppkopplade världen över. Idén med att cachea DNS-adresser är kort och gott att (precis som alla andra sorters cacher) minimera tiden det tar för internetanvändaren att ladda webbsidor. I DNS-cachens fall minimerar man tiden det tar för en användare att ta reda på vilken IP-adress en viss hemsida har. Genom att spara dessa IP-adresser i ett mellansteg sparar man inte bara tid, men också på serverkraften som behövs för att upprätthålla hastigheten till stora kommersiella hemsidor (Facebook, Amazon etc). (www.lcn.com) Det finns dock ett problem med denna sorts cachning (precis som alla andra sorters cachning). Problemet är att IP-adresser kan ligga kvar i DNS-cacher trots att IP-adressen(er) har ändrats. Det kan ta upp till en dag för DNS-cacherna att rätta till felet, vilket i många fall kan ha en motsatt verkan på internetanvändarning. Istället för att höja hastigheten, sänks densamma. För att förhindra detta problem kan användaren (efter en längre frånvaro från datorn) manuellt spola sin DNS-cache vilket har till följd att den töms, och förfrågningar om de nya DNS-adresser då måste skickas. sida 12
3. Slutsats Med denna rapport har vi fått erfara att: För att öka (eller i alla fall bibehålla) hastigheten på internet krävs att många faktorer upprätthålls eller utvecklas. Cookies har i många sammanhang fått ett onödigt dåligt rykte. I många fall hjälper dessa cookies till snarare än att förstöra vår internetanvändning. Det är nämligen bara vissa sorters cookies som kan räknas som integritetskränkande. Caching är en bra idé men kräver ständig utveckling. Som vi tagit upp i rapporten finns fortfarande en hel del negativa effekter av caching. DNS-servrar är en viktig faktor i att internet går att använda. Utan dessa servrar skulle det vara nästintill omöjligt att hålla reda på alla olika IP-adresser (för att kontakta webbplatser). sida 13
Källförteckning Kurose, James F. och Ross, Keith W. (2010). Computer Networking. 5.uppl. Pearson Education. Ollmann, Gunter (2007), Understanding & Preventing DNS-related Attacks by Phishers, Gunter Ollmann 2001 2008. [Elektronisk] Available: <http://www.technicalinfo.net/papers/pharming.html> 2011-02-23. Jey Kesan and Rajiv Shah. (2003-2004), Deconstructing Code, Yale Journal of Law and Technology [Elektronisk] Available: <http://papers.ssrn.com/sol3/papers.cfm?abstract_id=597543> 2011-02-23. Kristol, David M. (2001), ACM Transactions on Internet Technology, ACM New York. [ELEKTRONISK] Available: <http://portal.acm.org/citation.cfm?doid=502152.502153> 2011-02-23. Anonyma 2011, 2011-01-10-last update, Temporary Internet Files, [Elektronisk]. Available: <http://www.milincorporated.com/a-temporary-internet-files.html> 2011-02-23. Anonyma 2006, 2006-10-20-last update, How Web Caches Work, [Elektronisk]. Available: <http://www.web-caching.com/mnot_tutorial/how.html> 2011-02-23. Prior, Sandra 2010, 13-11-10-last update, Understanding Browser Cache, [Elektronisk]. Available: <http://www.articlesbase.com/software-articles/understanding-browser-cache-3661118.html> 2011-02-23. Hansson, Roger, 1998, 25-08-00-last update, Cache Teknisk Förklaring, [Elektronisk]. Available: <http://www.nada.kth.se/dataterm/artikel-2.html> 2011-02-23. Anonyma 2011, What is DNS caching?, [Elektronisk]. Available: <http://www.lcn.com/faqs/general/what-is-dns-caching> 2011-02-23. Anonyma 2002, Cache och proxy på Internet, [Elektronisk]. Available: <http://www.intranetica.com/intranetica/proxy/proxy-04.shtml#topofpage> 2011-02-23. sida 14