IP Vad är Internet? - Flera olika slags nät - Vill kunna kommunicera över dessa nät - Vad gör man? Internet Internet använder sig av protokollbaserad kommunikation. Ett protokoll kan jämföras med att man måste följa vissa regler vid kommunikation. - människor - datorer Inkapsling Ett paket består av ett huvud (header) och en del. (Ibland även av en svans (tail)) Huvud: Alla detaljer som har med protokollet att göra. Kan jämföras med texten på ett kuvert Datadel: Olika Kan jämföras med innehållet i ett kuvert När man programmerar vill man dölja alla detaljer och använder sig därför av abstraktion. Paketbaserad kommunikation är uppbyggt på samma sätt, man använder sig av inkapsling för att dölja detaljer. Protokoll a kan använda sig av protokoll b genom att lägga sig i b s area. Detta kan ske i flera steg. (Man kan jämföra detta med ryska dockor.) ISO / OSI International Standard Organization / Open Standard Interconnection Modell över hur man ska kommunicera mellan datorer på internet. Applikation Applikationer mot användare Presentation Systemoberoende representation Session Sessionshantering hdr C hdr B hdr A a är inuti b, b är inuti c. Transport Nätverk Datalänk Fysiska Skicka paket över olika nät felfritt (ofta ES-ES) Skicka paket över olika nät Skicka paket inom samma LAN Kabelstandarder, etc.
Modifierad TCP/IP modell (Transmission Control protocol / Internet Protocol) TCP/IP modellen är döpt efter namnen på de två mest kända protokoll som ingår i modellen. Applikation Applikationer mot människor Transport Skicka paket över olika när felfritt Nätverk Skicka paket över olika nät IP - Internet adress: En 32-bitars adress Identifierar ett unikt nät på Internet, samt en unik dator på det nätet. - Nät Dator - Detta kan jämföras med telefon nummer idag, som består av ett riktnummer och ett abonentnummer. Den gamla onda tiden Klass nät: Klass Inledande bit-sekvens Adressområde A 0 0-127 B 10 128-191 C 110 192-223 D 1110 224-239 E 1111 240-255 Datalänk Fysiska Skicka paket inom samma LAN Kabelstandarder, etc. Gränsen mellan nät-del och dator-del märks ut m h a en nät-mask. - Skrivs som fyra oktetter med punkter mellan delarna. exempel: 10.4.6.12 eller 130.237.72.201 Var går gränsen mellan nät och dator del? Klass A nät: 8 bitar nät-del 24 bitar dator del 0 7 8 31 0------- Totalt 127 nät med vardera 16777216 datoradresser. (nät 0 går bort) Klass B nät: 16 bitar nät-del 16 bitar dator-del 0 15 16 31 10-------------- Totalt 16384 nät med vardera 65536 datoradresser. Klass C nät: 24 bitar nät-del 8 bitar dator-del 0 23 24 31 110--------------------- Totalt 2097152 nät med vardera 256 datorer.
Exempel: Specialadresser: Den nya goda tiden - klasslösa nät IP- adress: 32.56.7.0 IP- adress: 00100000.00111000.00000111.00000000 nätmask: 11111111.00000000.00000000.00000000 (8 bitar) AND Nät ID: 00100000.00000000.00000000.00000000 Nät ID: 32.0.0.0/8 Alla bitar satta till 0 i datordelen: Används för att betekna nätverket (används i routing-sammanhang) Alla bitar satta till 1 i dator-delen: Används för massutsändning (broadcast) (skicka till alla datorer på nätet samtidigt) Klasser används inte idag, istället har man en nätmask som visar var grän mellan nätdel och datordel går. IP nummret består alltså fortfarande av nätdel och datordel, men gränsen behöver inte nödvändigtvis gå vid jämna oktetter. Nätmasken består av 0 eller flera 1:or, som markerar hur långt nätdelen sträcker sig, samt 0 eller flera 0:or. Exempel 32.56.7.0/25 IP- adress: 32.56.7.1 IP- adress: 00100000.00111000.00000111.00000001 nätmask: 11111111.11111111.11111111.10000000 (25 bitar) AND Nät ID: 00100000.00111000.00000111.00000000 Nät ID: 32.56.7.0/25 Special Nätmasker: Alla 1:or = 255.255.255.255 En adress Alla 0:or = 0.0.0.0 Hela Internet Grundläggande ruttplanering: - Routrar har flera IP-adresser, ett för varje nätgränsnitt. (Network interface) - Om en dator flyttas från ett nät till ett annat, måste man byta IP-adre - Routing styrs av mottagarens nät-id. Ett nät ID = Ett fysiskt nät (enkelt sett)
Exempel på hur ett nät kan se ut: a 130.237.5.0/24 130.237.129.0/24 130.237.34.0/24.1.1 130.237.8.0/24 R1 R2 R1.1.2.1.2.1 130.237.12.0/24.1.1 130.237.130.0/24 130.237.33.0/24.63.17 d c.66 b.231 På dator b: > netstat -r destination gateway flags if 127.0.0.1/32 127.0.0.1 UH lo0 130.237.8.0/24 130.237.12.1 UG hme0 130.237.12.0/24 130.237.12.231 U hme0 130.237.34.0/24 130.237.12.1 UG hme0 130.237.12.231/32 130.237.12.231 UH lo0 IP-protokollet - Paket kan komma bort på vägen Lovar bara att göra sitt bästa för att leverera paketen - Paket kan bli duplicerade - Paketen kan komma fram i oordning - Förbindelselöst - Datagrambaserat (paketorienterat) - IP-protokollet är inte bara utseendet av paketformatet, utan även regl hur man ska bete sig i vissa situationer. - Ett paket kallas också för ett Internetgram Ruttabellen kan ändras med kommandot: >route IP-paketens utseende 0 4 8 16 19 32 Vers Len TOS Total length ID Flags Fragment offset TTL Protocol header checksum Source address Destination address Options Options Data Data Vers: Version av IP protokollet, bör vara 4 (än så länge) Len: Längden på headern i 32-bitars klunkar räknat. TOS: Type of Service - Parametrar för hur paketet ska behandlas. Tot len: Paketets totala längd Id: Paketets id-nummer Flags: Flaggor för fragmentering Frag off: Fragmentets förskjutning inom det ursprungliga IP-paketet TTL: Time To Live - Paketets livstid Proto: Vilket protokoll som fraktas Hdr chksum:checksumma för huvudet Src adr: Sändarens adress Dst adr: Mottagarens adress Type of Service (TOS) 0 3 4 5 6 7 Precedence D T R C precedence D T R C = Prioritet på ett gram, används sällan = Low Delay = High Throughput = High Reliability = Cost - TOS används sällan eller aldrig idag - TOS är bara en snäll förfrågan, inte ett krav - Endast en TOS - bit får sättas
MTU - Maximum Transmission Unit Hur stort paket kan skickas på det lokala segmentet? - IP klarar att skicka 2 16 = 65536 bytes som mest i ett paket - Onödigt eftersom de flesta LAN-protokoll inte klarar av att hantera så stora paket. - Om IP-paketet är större än MTU kommer det att fragmenteras. - IP skulle egentligen inte behöva bry sig om MTU, men det besparar alla en massa arbete om det gör det. Fragmentering Ett IP-paket som är för stort för LAN-protokollet för att överföras kommer att delas upp i mindre delar, s k fragment. Exempel: Ett IP-paket har storleken 2000 bytes och kommer fram till ett nätverk där MTU är 532 bytes. Paketnr storlek offset flag Id (i bytes) (i 64-bitar) 1 512 0 MF 123 2 512 64 MF 123 3 512 128 MF 123 4 464 192 123 Flags: Unused DF MF Flaggor: More fragments Do not fragment Offset: Räknar i 64-bits klunkar Fragment offset Upptäck minsta MTU dynamiskt (Path MTU Discovery) 1 Skicka ett stort paket med Do not fragment -biten satt. 2 Om det kommer ett felmeddelande (MAX MTU: XX), skicka ett paket med den storleken... 3) goto 2; Trafikstockningskontroll (Congestion Control) Skillnad flödeskontroll/trafikstockningskontroll - Flödeskontroll: För att en snabb sändare inte ska dränka en långsam mottagare. - Trafikstockningskontroll: För att den totala lasten på nätet (vägarna) inte ska bli för stor. Traffikstockningskontroll (Congestion Control) - Leacky bucket - Token bucket
ARP (Address Resolution Protocol) Ett protokoll för att ta reda på vilken MAC-adress en viss IP-adress har. När behövs ARP? Exempel: Du skriver in www.nada.kth.se i din webbläsare. Du får tillbaka ett IP-nummer av din DNS. Datorn avgör m h a nätmasken om den ska skicka paketet lokalt på LANet eller till en gateway (router) Men för att skicka till det IP-nummret måste du veta MAC-adressen. Då behöver man ARP. Hur fungerar ARP? - Skicka ut ett MAC-broadcast meddelande Vem har den här IP-adressen? - Vänta på svar Optimeringar som kan göras: - Skicka med den egna MAC-adressen så att mottagaren inte behöver göra samma procedur. - Lagra alla svar som fås i en cache. RARP (Reverse Address Resolution Protocol) Om man vet en MAC-adress och vill veta en IP adress. Varför behövs RARP? Exempel: Dumburkar som bootar ARP är nödvändigt, RARP används mindre och mindre. Man löser problemen på andra sätt istället, t ex DHCP (Dynamic Host Control Protocol). ICMP (Internet Control Message Protocol) - Protokoll byggt ovanpå IP - Används för att skicka kontroll- och felmeddelanden - Paketen kan komma bort - ICMP är en del av IP standarden - Inga ICMP meddelanden genereras av ICMP paket ICMP - paketens utseende type code checksum ICMP type 0 Echo Reply 3 Destination Unreachable 4 Source Quench 5 Redirect 8 Echo Request 11 Time Exceeded 12 Parameter Problem 13 Timestamp Request 14 Timestamp Reply 15 Information Request 16 Information Reply
Exempel på type och code: type = 11 code = 0: Time to live exceeded in transit Exempel på type och code: type = 3 code = 0: Network unreachable Hur fungerar ping? Hur fungerar traceroute? Hur fungerar arp? Hur fungerar proxy-arp? 1: Fragment reassembly time exceeded 1: Host unreachable 2: Protocol unreachable 3: Port unreachable Exempel: Telnet till port 4711 4: Fragmentation needed and DF set 5: Source route failed Transportlagret UDP (User Datagram Protocol) UDP paketformat Varför behövs transportlagret, varför räcker inte nätverkslagret? - Vill kunna nå mer än bara en viss dator, vill kunna styra paketen in i datorn (till en viss port) - Paket kan komma bort - Förbindelselöst - Kan styra till en angvien port i datorn - Checksumma på Source port Length Destination port Checksum - För att få säkra förbindelser (utan att tappa paket) Sourceport: Sändarens portnr Destination port: Mottagarens portnr Length: UDP-Paketets längd Checksum: Inkluderar både huvud och
TCP (Transmission Control Protocol) - Tillhandahåller en tillförlitlig förbindelse där alla paket är garanterade att komma fram i rätt ordning. - Förbindelseorienterad - Full duplex, man kan prata i båda riktingarna - Buffrad överföring - Ostrukturerad ström av. TCP paketformat 0 4 8 16 32 Source port Destination port Sequence number ACK number Length Res Code Window Source port: Destination port: Sequence number: ACK number: Length: Res: Code: Window: Check sum: Urgent pointer: Sändarens portnummer Mottagarens portnummer Sekvensnummer på paketet Det sekvensnummer på paket tog jag emot senast Längden på TCP headern Reserved (Används inte idag) Olika förbindeleserelaterade koder Fönsterstorlek Inkluderar både header och Pekar ut viktig inom fältet. Checksum Urgent pointer Code TCPs tillförlitlighet Hur initieras en TCP förbindelse? syn (seq = x) (seq = x + 1, ack = y + 1) URG ACK PSH RST SYN FIN URG ACK PSH RST SYN FIN URGENT pointer valid ACKNOWLEDGE number valid PUSH to applikation (request) RESET connection SYNCHRONIZE (initiate) connection FINNISH connection ack ack syn (seq = y, ack = x + 1)
Hur avslutas en TCP-förbindelse? Sliding windows i TCP Exempel (Envägskommunikation) - The two army problem Varför? Flödeskontroll Sender App write 2K 2K SEQ = 0 Receiver Receiver 0 ACK = 2048 WIN = 2048 FIN ACK ACK + ACK FIN + ACK App write 3K sender blocked 2K SEQ = 2048 ACK = 4096 WIN = 0 Full Applikati reads 2K ACK = 4096 WIN = 2048 1K SEQ = 4096 Problem - Nagel s algorithm - Silly window syndrome - Clark s solution TCP Congestion control - Slowstart 1) Växer exponentiellt tills TCP upptäcker paketförlust eller någon router skickar tillbaka ett ICMP (source quench) paket. 2) Börjar då om och växer exponentiellt till halva stocknings-fönstersorleken. Växer sedan linjärt till ett nytt ICMP (source quench) kommer. Börja då om på 2) Tidräknarhantering i TCP (Timer handling) - Varför annorlunda än i länklagret? - Roundtrip time (RTT) Timeout = RTT + 4*D (D = Medelvärde för avikelsen)