Hjälpprotokoll till IP IP-protokollet är ju Internets nätverksprotokoll En filosofi vad gäller Internetprotokollen är att man inte ska försöka skapa ett protokoll som kan hantera alla tänkbara problem, utan allt göras så enkelt så möjligt (till skillnad från OSI-protokollen). (= K.I.S.S. -principen Keep It Simple, Stupid ) Om behov uppstår skapar man i stället ett nytt (hjälp-) protokoll som löser den specifika uppgiften. Denna princip är antagligen ett skäl till Internetprotokollens framgångar. Vi ska här titta på några av hjälpprotokollen på lager 3. Boken nämner (s449) några. De viktigaste idag är ARP, ICMP och DHCP. Inför laborationen på kursmoment 2 bör ni känna till ARP och ICMP även om de ligger på lager 3
ARP-protokollet Används för att koppla samman datalänkadresser (MAC-adresser) med nätverksadresser (IP-adresser) Antag att vi vill skicka ett paket från host A till host B Vi vet IP-adressen, men vanligtvis inte MAC-adressen Men om vi inte har rätt MAC-adress kommer paketet att stoppas av mottagarens MAC-lager. Det har ju bl a som uppgift att filtrera bort paket och bara släppa igenom de som har rätt adress. Hur får vi då reda på mottagarens MAC-adress? Host A Host B IP 130.1.0.3 I IP 130.1.0.4 P Host C IP 130.1.0.5
ARP-protokollet För att veta vilken MAC-adress som hör ihop med en viss IP-adress har varje host en så kallad ARP-tabell innehållande IP-adresser och tillhörande MAC-adresser Tabellen lagras dock i ett flyktigt minne, vilket gör att den alltid är tom då datorn slås på. Dessutom raderas värdena normalt automatiskt efter en viss tid, i storleksordningen någon minut. Skälet är att det annars skulle bli problem om man tex byter nätverkskort. MAC-adressen är ju bunden till kortet. Hur byggs då tabellen upp? Här används ett särskilt protokoll, ARP-protokollet (Address Resolution Protocol) I följande exempel visas hur det fungerar:
EXEMPEL Host A vill skicka ett datapaket till Host B och vet IP-adressen 1 Kolla i ARP-tabellen efter MAC-adressen. Finns den där? Ja! -Inga problem. Sätt in rätt MAC-adress i datapaketet och skicka Nej! Ta reda på den med hjälp av ARP-protokollet 2 Skicka en ARP-request : Vilken MAC-adress har datorn med IP-adress 130.1.0.4? Måste skickas med en broadcast som MAC-adress (Varför?) 3 Eftersom det skickas som broadcast kommer alla datorer på nätet att få frågan, även host C men bara host B vet svaret och svarar. Jag, med IP 130.1.0.4 har MAC-adress xxxxxx 4 Host A tar emot svaret och lägger in det i sin ARP-tabell. Åter till 1 Host A Host B IP 130.1.0.3 I IP 130.1.0.4 P Host C IP 130.1.0.5 ARP-request ARP-reply Datapaket
ICMP (Internet Control Message Protocol) Som namnet anger används protokollet för att skicka meddelanden. Detta mellan noder som kan vara routrar eller vanliga datorer. Meddelandena innehåller lager 3 -relaterad information och kan indelas i två kategorier: Felmeddelanden (Errors) och frågor (Querys). I boken s 449 nämns de vanligaste och på nästa sida finns en förteckning över samtliga ICMP-meddelanden Även om meddelandet bara handlar om lager 3 kan det ibland även utnyttjas av någon applikation för att ge information. Exempelvis om mottagarens nät inte är nåbart kanske webläsaren berättar om det för användaren tack vare ett ICMP error meddelande. Vissa applikationer bygger helt på ICMP-meddelanden. Vi ska titta på två sådana, PING och TRACEROUTE. Båda är mycket användbara vid felsökning av nätverk. PING använder vi i laborationen på kursmoment 2 och på laborationen på kursmoment 4 används dessutom TRACEROUTE
PING PING är en applikation som nyttjar ICMP-meddelandena echo request och echo reply Den skickar ett testpaket till en angiven IP-adress och erhåller förhoppningsvis ett svar. Om så är fallet vet man att både sändarens och mottagarens protokoll fungerar, åtminstone upp till och med lager 3. Dessutom vet man att förbindelsen mellan de två datorerna fungerar. I Windows öppnar du kommandopromten och skriver PING [IP-nummer] tex PING 130.1.0.4 Default skickar den 4 echo requests men detta och ett antal andra options går att styra. Dessa listas om du skriver PING /? Host A Host B IP 130.1.0.3 I IP 130.1.0.4 P ECHO-request ECHO-reply
Traceroute Traceroute-applikationen nyttjar ICMP-meddelandet time-to-live equals 0 during transit Varje gång ett IP-paket passerar en router räknas en räknare kallad TTL (time-to-live) ner och då den är på noll kastas paketet och ett ICMP-meddelande skickas till avsändaren med beskedet att paketet tyvärr kastats. I meddelandet anges även vilken router det är som kastat paketet. Funktionen är till för att förhindra att paket fastnar i loopar och snurrar runt i evighet. Räknaren kan anta ett startvärde mellan 1 och 255. Oftast sätts 255 för normala datapaket, dvs paketet tillåts passera 255 routrar vilket med råge räcker för att nå alla destinationer på Internet. Traceroute- applikationen däremot sänder ett första paket med TTL=1 Det innebär att redan den första routern kommer att kasta paketet och sända ett ICMP-meddelande tillbaka. Därefter sänds ett nytt paket med TTL=2 osv till dess paketet når slutmottagaren Syftet är att skapa en lista över vilka routrar som passeras på vägen
Exempel Traceroute- applikationen i Host A sänder ett första paket till Host B med TTL=1 Det innebär att redan den första routern kommer att kasta paketet och sända ett ICMP-meddelande tillbaka. Därefter sänds ett nytt paket. Denna gång med TTL=2. Router 1 räknar ner TTL med 1 och skickar vidare till Router2 som också räknar ner Men nu blir TTL=0 så paketet kastas och ett ICMP-meddelande sänds. Så fortsätter det ända till dess ett paket når slutmottagare, nämligen Host B Eftersom varje ICMP-paket innehåller den avsändande routerns IP kommer Host A att få en lista över alla routrar på vägen. Syntaxen (i Windowsmiljö) är TRACERT [ip-adress], tex TRACEROUTE 130.1.0.4 Host A 130.1.0.3 Första paketet Andra paketet Tredje paketet Fjärde paketet Host B 130.1.0.4 Router1 Router2 Router3