Title: 3.%20Internet%20Protocol%20(IP)
13. Internet Protocol (IP)
- Lernziele
- Detailliertes Verständnis von IP
- Praktische Einsetzbarkeit dieses Wissens
23.1 Paketformat und Grundlagen
3RFCs
- J. Postel. Internet Protocol. RFC 791. 1981.
- J. Mogul and J. Postel. Internet Standard
Subnetting Procedure. RFC 950. 1985.
4Hauptaufgabe von IP
- Ãœbermittlung von Daten von einem System
- im Internet zu einem beliebigen anderen
- System im Internet.
- IP bietet diese Funktionalität als einen
- verbindungslosen und unzuverlässigen
- Datagramm Dienst an.
5IP Paketformat
version
total length
type of service
hlength
identification
flags
fragment offset
time to live
header checksum
protocol
source IP address
destination IP address
options (if any)
data
6IP Header Felder I
- version (4-bits)
- aktuell IPv4, Nachfolger IPv6
- header length (4 bits)
- Anzahl an 32-bit Worten im Header
- type-of-service (8 bits)
- nur 4 bits werden tatsächlich verwendet
- minimize-delay, maximize throughput, maximize
reliability, minimize monetary costs - signalisiert den Wunsch des Senders nach einer
bestimmten Handhabung des Datagrammes - keine Garantie!
- weitgehend von Routern ignoriert
7IP Header Felder II
- total length (16 bits)
- Gesamtgröße des Datagramms in byte
- identification (16 bits), flags (3 bits),
fragment offset (13 bit) - dienen zur Identifizierung der im Datagramm
enthaltenen Daten - werden später bei der Fragmentierung behandelt
8IP Header Felder III
- time-to-live (8 bits)
- begrenzt die Anzahl der Router, die durchlaufen
werden dürfen, schützt vor zirkulierenden
Datagrammen - wird in jedem Router dekrementiert
- wenn 0 ? Datagramm wird verworfen
- protocol
- identifiziert das Protokoll welches das IP
Datagramm erzeugte (z.B. TCP, UDP) - Empfänger kann anhand dieses Feldes das Datagramm
an die richtige Protokollinstanz weiterleiten
(demultiplexen)
9IP Header Felder IV
- checksum (16 bits)
- wird über den gesamten IP Header berechnet
- Berechnung beim Sender
- setze das checksum Feld auf 0
- XOR über alle 16-bit Worte im Header
- das Ergebnis wird bitweise invertiert und stellt
dann den Wert für das checksum Feld dar. - Check beim Emfänger
- XOR über alle 16-bit Worte im Header (inkl.
checksum) - OK, wenn im Ergebnis alle bits auf 1 stehen
10IP Header Felder V
- source/destination IP address (32 bits)
11Subnetz Adressierung I
- Class A und Class B Adressen ? mehr Bits für
hostid als nötig (222 bzw. 216 Hosts) für ein
Netzwerk - Weitere Strukturierung der Adresse
- Aufteilung der bits subnetid, hostid ? lokal und
verschieden für jede netid
14 bits
8 bits
8 bits
Class B
0
netid
hostid
1
subnetid
12Subnetz Adressierung II
- subnetid ist ausserhalb eines Netzes nicht
sichtbar, wird nur lokal verwendet (z.B.
innerhalb der Uni Mannheim)
134.155.xxx.xxx
Uni-MannheimRouter
Internet
subnetid 15
weitere subnetids
LAN in L15,16
13Subnet Adressierung III
- subnet mask
- identifiziert das subnet einer IP Adresse
- muß auf jedem System zu jeder IP Adresse
vorhanden sein
16 bits
8 bits
8 bits
Bsp. für Class B
00000000
11111111
1111111111111111
subnet mask 0xffffff00255.255.255.0
14Subnet Adressierung
- Eigene IP Adresse subnetid erlaubt für ein
IP-Datagramm festzustellen wo der Empfänger ist - im selben Subnetz
- im selben Netz aber in anderem Subnetz
- in anderem Netz
15Weiteres Vorgehen
- Internet Control Message Protocol
- IP tools - ping/traceroute
- IP-Routing
- IPv6
- Wireless IP
162.1 Internet Control Message Protocol (ICMP)
17RFCs
- J. Postel. Internet Control Message Protocol. RFC
792. 1981
18Problem
- Man braucht IP um ICMP Nachrichten zu übertragen.
- Man braucht ICMP um IP zu verstehen.
- Wir gehen im folgenden davon aus das IP auf eine
später zu beschreibende Art Pakete von einem
System zu einem beliebigen anderen System
weiterleiten kann und erkunden zunächst ICMP.
19ICMP Aufgabe
- Ãœbertragung von Fehlernachrichten und
Netzwerkspezifischen Informationen - echo request (8)
- echo reply (0)
- destination unreachable (3)
- timestamp request (13)
- timestamp reply (14)
- ICMP ist Bestandteil jeder IP Implementierung
20ICMP Packetformat
IP header (20 bytes)
type
checksum
code
content abhängig von type und code
21ICMP Header Felder
- type um welche ICMP Nachrichtentyp handelt es
sich? Z.B. 3 für destination unreachable. - code um welche Unterklasse handelt es sich? Z.B.
type3 code0 für network unreachable. - checksum wie für IP berechnet, bezieht sich
jedoch auf die vollständige ICMP Nachricht (nicht
den IP header!).
22Zwei Klassen von ICMP Nachrichten
- query
- bestehen jeweils aus 2 Typen, einen für request
und einen für reply - wird aktiv benutzt um Informationen von einem
System zu bekommen - ein Beispiel ist echo request/reply, wird u.A.
für das ping Tool verwendet (behandeln wir
ausführlich im Anschluß an dieses Kapitel!)
23Zwei Klassen von ICMP Nachrichten
- error
- wird ausgelöst durch ein IP Paket, i.d.R. weil
ein Fehler aufgetreten ist - enthält im Paket Rumpf immer den IP Header und
die ersten 8 Bytes des Paketes das den ICMP error
ausgelöst hat - im Folgenden genauer betrachtet
24ICMP Error
- werden nicht generiert als Reaktion auf
- ICMP error Nachricht
- IP Paket an einen broadcast oder multicast
Adresse - ein IP Paket das als link layer broadcast
verschickt wurde - ein Fragment welches nicht das erste eines IP
Paketes ist - ein IP Paket dessen Absender keine einzelnes
System ist (multicast/broadcast/etc.)
25ICMP Port Unreachable Error
- Wird von einem System erzeugt, wenn ein UDP Paket
empfangen wurde für einen Port der von keinem
Prozeß auf diesem System benutzt wird. - wird an den Absender des Pakets geschickt - das
ist üblich für ICMP Pakete!
26ICMP Port Unreachable Nachricht
IP header (20 bytes)
type (3)
checksum
code (3)
unused (0)
IP header (incl. options) first 8 bytes of
original IP packet data
27Demo
- tfpt - trivial file transfer protocol -
Dateiübertragung per UDP - tftp
- connect lthostgt ltportgt - illegalen port verwenden!
- get ltfilegt
- tcpdump host lthostgt and icmp(parallel zu get)
283.3 ping
29ping
- wird benutzt um festzustellen, ob zwei Systeme
über IP miteinander kommunizieren können - ping-client sendet einen ICMP echo request
- ping-server antwortet mit einem ICMP echo reply
- ping client/server ist Bestandteil der meisten
Betriebssysteme
30ICMP echo request/reply
IP header (20 bytes)
type0/8
checksum
code0
identifier
sequence number
timestamp
data (optional)
31Demo
- ping lthostgt
- Achtung, ping ist auf verschiedenen
Betriebssystemen verschieden implementiert!
Insbesondere die Optionen heissen immer anders
als man denkt. - ein Blick in die man pages hilft!
32IP Record Route Option
- IP (nicht ICMP!) hat eine Option, die dafür
sorgt, daß jeder Router seine IP Adresse in den
IP header einträgt. - Dies ist die IP Adresse des Interfaces auf
welches das Paket weitergeleitet wird. - Diese Option kann von ping eingeschaltet werden
um den Weg zu bestimmen, den ein IP Paket
zurücklegt. - Diese Informationen werden vom ping-server im
Datenteil des echo reply zum client
zurückgeschickt.
33IP Paketformat
version
total length
type of service
hlength
identification
flags
fragment offset
time to live
header checksum
protocol
source IP address
destination IP address
options (if any)
data
34IP Record Route Option Paketformat
version
total length
type of service
hlength
identification
flags
fragment offset
time to live
header checksum
protocol
source IP address
destination IP address
option length
code (7)
pointer
IP address 1
IP address 1
IP address 2
IP address 9
data
data
35Demo
- record route kann bei ping üblicherweise mit -R
eingestellt werden - funktioniert nicht auf allen Systemen/mit allen
routern - maximal 9! router haben Platz im header
- traceroute ist besser geeignet für diese Aufgabe!
363.4 traceroute
37traceroute - Aufgabe
- traceroute gibt Informationen über alle Router,
die auf dem Weg zu einer IP Adresse liegen. - Dabei wird auch die round-trip Zeit zu jedem
router bestimmt. - Es gibt keine Beschränkung über die Anzahl der
Router (wie etwa bei ping).
38traceroute - Funktionsweise I
- traceroute schickt ein UDP Paket an die Adresse,
für die der Weg untersucht werden soll ttl im IP
header wird auf 1 gesetzt - der erste Router verwirft das IP Paket (ttl1!)
und schickt ein ICMP time exceeded error an den
Absender - traceroute wiederholt dies mit ttl2, etc.
39ICMP time exceeded Nachricht
IP header (20 bytes)
type (11)
checksum
code (0)
unused (0)
IP header (incl. options) first 8 bytes of
original IP packet data
40traceroute - Funktionsweise II
- Wie erkennt man ob das Paket schließlich beim
Empfänger angekommen ist? - traceroute sendet UDP an einen Port der
wahrscheinlich nicht verwendet wird und erwartet
eine ICMP port unreachable Nachricht vom
Empfänger! - traceroute ist ein hack, besser wäre ein
geeignetes Protokoll Design!
41Demo
- traceroute lthostgt
- Achtung! Traceroute berichtet die IP Adresse des
Interfaces auf dem das Paket ankommt! Unterschied
zu ping -R!
42traceroute source routing
- es gibt eine IP Option für source routing die von
manchen traceroute Implementierungen verwendet
werden kann (-g Parameter) - source routing
- erlaubt es dem Absender eine Liste von IP
Adressen (i.d.R. von Routern) im IP header
anzugeben, die nacheinander durchlaufen werden,
bevor das Paket dem Empfänger zugestellt wird - ermöglicht es als Absender den Weg eines Paketes
zum großen Teil zu bestimmen
43IP Source Routing Option Paketformat
version
total length
type of service
hlength
identification
flags
fragment offset
time to live
header checksum
protocol
source IP address
destination IP address (erste angegebene IP
Adresse)
option length
code (0x83/0x87)
pointer
IP address 1
IP address 1 (zweite angegebene IP Adresse)
IP address 2
IP address 9 (eigentliche Zieladresse)
data
data
44IP Source Routing Funktionsweise I
- der Sender nimmt die source route Liste von der
Anwendung, und hängt die eigentliche Zieladresse
an diese Liste an. Die Empfänger Adresse im IP
Paket wird auf den ersten Eintrag in der Liste
gesetzt und der Rest der Liste in die IP Source
Routing Option geschrieben (max. 9 Eintäge!)
45IP Source Routing Funktionsweise II
- Ein Empfänger eines IP Paketes überprüft, ob die
Liste vollständig abgearbeitet wurde. - Wenn ja, dann ist er endgültiger Empfänger.
- Wenn nein, dann wird die IP Adresse auf die das
pointer Feld zeigt als neue Empfänger Adresse in
das IP Paket eingetragen. Die IP Adresse des
Interfaces auf welches das IP Paket
weitergeleitet wird wird in das Feld geschrieben
(auf die Position auf die das pointer Feld
zeigt). - Der Inhalt des pointer Feldes wird um 4 erhöht.
46IP Source Routing Beispiel
134.155.48.97
thales
129.143.61.5
Mannheim1.BelWue.de
129.143.1.161
194.163.254.162
www.spiegel.de
47IP Source Routing Beispiel
version
total length
type of service
hlength
identification
flags
fragment offset
time to live
header checksum
protocol
134.155.48.97 (thales)
129.143.61.5 (Mannheim1.....)
option length 7
code (0x83)
pointer4
194.163.254.162
194.163.254.162 www.spiegel.de
data
data
48IP Source Routing Beispiel
version
total length
type of service
hlength
identification
flags
fragment offset
time to live
header checksum
protocol
134.155.48.97 (thales)
194.163.254.162 (www.spiegel.de)
option length 7
code (0x83)
pointer8
129.143.1.161
129.143.1.161 (Mannheim1.....)
data
data
49IP Source Routing
- loose die Angegebenen IP Adressen müssen nicht
benachbart sein - strict die Angegebenen IP Adressen müssen
benachbart sein, sonst wird das Paket verworfen
und eine ICMP source route failed Nachricht an
den Sender geschickt.
50Keine Live-Demo!
- Source Routing ist nahezu überall abgeschaltet da
es ein Sicherheitsrisiko darstellt - IP Spoofing!
513.5 IP-Routing
52Begriffe
- Endsystem
- mindestens ein Netzwerkinterface/eine IP Adresse
- kann IP Pakete empfangen und senden
- leitet keine Pakete weiter
- Router oder Gateway
- mindestens zwei Netzwerkinterfaces/zwei IP
Adressen - kann IP Pakete empfangen, senden und weiterleiten
- System Endsystem oder Router
53Routing Tabelle
- Gibt es in jedem System!
- Einträge haben die folgenden Felder
- Destination
- vollständige IP Adresse oder
- netz/subnetz Bezeichnung
- künstliche Adresse z.B. local host 127.0.0.1
- Gateway
- Mask
- Interface
- Flags (U route ist up, G route führt über
einen Router, H route ist zu einem Endsystem)
54Demo
- ifconfig wird zur Einrichtung von
Netzwerkschnittstellen verwendet - ifconfig -a gibt uns detaillierte Infos über die
Schnittstellen - netstat gibt uns Netzwerkinfos über eine System
- netstat -r Routingtabelle
- netstat -i Interfaceinfos
55Routing bei gegebener Routing Tabelle
- Ist die Empfägeradresse des IP Paketes identisch
mit einer vollständigen destination Adresse in
der Routing Tabelle erkennbar an flag H? - ja wähle diesen Eintrag und handele
entsprechend! - nein weiter.
56Routing bei gegebener Routing Tabelle
- Gehört die Empfägeradresse des IP Paketes zu
einem der Subnetze die unter den Destination
Adressen in der Routing Tabelle genannt sind? - um dies festzustellen nimm die Emfängeradresse
des IP Pakete, führe eine logische UND
Verknüpfung mit der (subnet) Mask durch und
schaue, ob das Ergebnis mit dem Eintrag unter
Destination übereinstimmt. - Wenn ja wähle diesen Entrag und handele
entsprechend - Wenn nein wähle den default Eintrag und handele
entsprechend
57Beispiel
- Destination Gateway Mask Flags Interface
- 134.155.48.0 255.255.240.0 U eth0
- 127.0.0.0 255.0.0.0 U lo
- default mannhattan 0.0.0.0 UG
eth0 - IP Empfängeradresse
- 134.155.48.10
- Es gibt keine passende vollständige IP Adresse
unter - Destination!
- 134.155.48.10 255.255.240.0 134.155.48.0
- d.h. es wird der erste Eintrag der Routing
Tabelle benutzt!
58Eintrag gefunden, was nun?
- Ist ein Gateway angegenben (flag G gesetzt)?
- ja leite das Paket an das Gateway (Router)
weiter. Benutze dazu das in der Tabelle
angegebene Schicht 2 Interface. Schicht 2 Adresse
Adresse des Routers. - nein Empfänger ist in einem Netzt an das wir
direkt angrenzen. Das Paket kann direkt an den
Empfänger weitergeleitet werden. Eventuell wird
dazu ARP benötigt! Schicht 2 Adresse Adresse
des Empfängers.
59Live Ãœbung
- Destination Gateway Mask
Flags Interface - 134.155.0.0 132.15.50.200 255.255.0.0
UG eth1 - 134.155.48.10 132.15.50.100 255.255.255.255
UHG eth1 - 134.155.48.11 132.15.50.100 255.255.255.255
UHG eth1 - 134.155.48.20 132.15.50.100 255.255.255.255
HG eth1 - 134.156.110.0 255.255.240.0 U
eth0 - 134.156.110.2 255.255.255.255
UH eth0 - 127.0.0.0 255.0.0.0 U
lo - default 138.154.20.100 0.0.0.0
UG eth3 - Routen sie die folgenden IP Adressen
- 134.155.48.30 134.155.48.20 134.155.48.11
110.40.4.4 - 134.156.111.1 134.156.200.1 134.156.110.2
134.155.59.50
60Wie kommen die Einträge in die Routing Tabelle?
- Wenn das System gestartet wird, werden vom
Systemverwalter konfigurierte Einträge geladen. - Zur Laufzeit kann man Einträge mit dem route
Befehl hinzufügen/löschen - Beispielroute add -host 134.155.48.10 -gw
134.155.50.200 eth0 - Endsystem dynamic default router discovery.
- Router Dynamisch mit Hilfe von Routing
Protokollen
61Dynamic Default Router Discovery
- ICMP Router Advertisement Messages werden
periodisch auf die all hosts multicast Adresse
224.0.0.1 gesendet (üblicherweise alle 7
Minuten). - ICMP Router Solicitation Messages werden von
Endsystemen auf die all routers multicast
adresse 224.0.0.2 geschickt um ICMP Router
Advertisment Messages ausser der Reihe zu
erzeugen.
62ICMP Router Advertisement Nachricht
IP header (20 bytes)
type (9)
checksum
code (0)
num addr.
addr. size
lifetime
Router Address 1
preference 1
Router Address 2
preference 2
63ICMP Router Solicitation Nachricht
IP header (20 bytes)
type (10)
checksum
code (0)
reserved
64Problem
Endsystem
LAN
default router
router
Internet
LAN
65Lösung(sversuch)
- Wenn ein Router ein Paket auf das selbe Interface
zurückschickt von dem er es bekommen hat, kann er
einen ICMP redirect error an den Absender des
Paketes verschicken. - Empfäng ein Endsystem einen ICMP redirect error,
so sollte er seine Routingtabelle entsprechen
ändern.
66ICMP Redirect Error
IP header (20 bytes)
type (5)
checksum
code (0-3)
IP Adresse des alternativen Routers der besser
geeignet ist
IP header (incl. options) first 8 bytes of
original IP packet data
code 0 redirect packet for the network
code 1 redirect packet for the host
code 2 redirect packet for the Type of Service
and network
code 1 redirect packet for the Type of Service
and host
67ICMP Redirect Probleme
- Sicherheitsrisiko! Man kann damit das routing
eines Endsystems beeinflussen. - Keine Unterstützung für subnets.
- Meist abgeschaltet!