1) | Standart: IPv4 Heute |
1.1) | Header |
1.2) | Adressbelegung |
1.3) | Network Adress Translation |
1.4) | Fazit (zu IPv4) |
2) | Zukünftiger Standard: IPv6 |
2.1) | Header-Format |
2.2) | Adressbelegung |
2.3) | Auto-Konfiguration (übernommen) |
3) | Protokolle der Transportschicht |
3.1) | UDP |
3.2) | TCP |
3.3) | RTP (neu) |
Header 4 Bit Version(=4) 4 Bit HLN(=Header-Länge in 32-Bit-Wörtern) 8 Bit Type-Of-Service (4 Bit benutzt, höchstens eins gesetzt) 16 Bit Länge 16 Bit Identifikation (für Fragmentierung) 1 Bit Reserviert 1 Bit nicht Fragmentieren 1 Bit Fragment-Flag (nicht letztes Fragment) 13 Bit Fragment-Offset in 64-Bit-Wörtern 8 Bit TTL 8 Bit Protokoll-Nummer 16 Bit Prüfsumme 32 Bit Quell-Adresse 32 Bit Ziel-Adresse <=40 Byte Optionen ?? Byte DatenTOS-Werte:
Typischer Gebrauch n. std5 3 Bit Priorität/Wichtigkeit 111 Netzwerk-Kontrolle 110 Zwischen-Netzwerk-Kontrolle 101 "CRITIC/ECP" 100 Flash Override 011 Flash 010 Immediate 001 Priorität 000 Standard 1 Bit Kurze Verzögerung FTP 1 Bit Hoher Durchsatz FTP-Daten 1 Bit Hohe Zuverlässigkeit SNMP 1 Bit Minimale Kosten NNTP 1 Bit Reserviert =0Höchstens eines der Flags darf gesetzt werden.
Adressen werden als Quartet von bis zu dreistelligen Dezimalzahlen, getrennt duech je einen Punkt, angegeben.
Bsp: 134.100.9.71
Diese Adresse wird in vier Byte-Werte umgewandelt, die zusammengesetzt die Adresse ergeben.
Der vorhandene Adressraum ist folgendermaßen aufgeteilt.
Adressbelegung IPv4: 0. 0. 0. 0 - 0.255.255.255 Bootp 1. 0. 0. 0 - 126.255.255.255 Class A 127. 0. 0. 0 - 127.255.255.255 Test area (127.0.0.1=loopback test) 128. 0. 0. 0 - 191.255.255.255 Class B 192. 0. 0. 0 - 223.255.254.255 Class C 223.255.255. 0 - 223.255.255.255 (Reserviert) 224. 0. 0. 0 - 239.255.255.254 Multicast (Class D) 240. 0. 0. 0 - 254.255.255.254 Experimentale/zukünftige Nutzung (Class E) 255.255.255.255 locales Broadcast (Netzwerkstrang) Private nichtgeroutete Adresssen: (RFC1918) 10. 0. 0. 0/8: private Class A 172. 16. 0. 0/12: private Class B range ( 16 Subnetze) 192.168. 0. 0/16: private class C range (255 Subnetze)
Die Adresse wird durch die Subnetzmaske in einen Netzwerk- und einen Host-Teil
unterteilt. Die Subnetzmaske wird traditionell als Subnetz-Maske ähnlich einer IPv4-Adresse angegeben.
Hierbei sind die Bits von links nach rechts zu setzen.
Bsp: 255.255.240.0
Da diese Darstelllung Unsinn ist, setzt sich langsam die Angabe als Prefix-Länge durch.
Hierbei wird die Anzahl der gesetzten Bits getrennt durch einen Schrägstrich (/) von der Adresse angegeben.
Bsp: 192.168.0.1/24 = Netzwerkadresse 192.168.0.1 Subnetzmaske 255.255.255.0
Stimmt die Netzwerk-Nummer des sendenden Hosts mit der des Zielrechners überein, so kann direkt an diesen gesendet werden.
Anderenfalls müssen die Daten zunächst an ein Gateway, zum Beispiel einen Router, weitergeleitet werden.
Will man alle Hosts auf einem Netzwerkstrang erreichen, so setzt man alle Bits der Host-Nummer auf 1 (Multicast)
Hosts auf einem Netzwerkstrang sollten daher eine gemeinsamme Netzwerkadresse mit Subnetzmaske und individuelle Hostnummern erhalten.
Für die Verbindung mit dem Internet sind folgende Regeln zu beachten:
-> | Jeder vom Internet zu erreichende Host benötigt eine offizielle IP(-Adresse) (mittlerweile knapp) | |
-> | Kein Host, der vom Internet aus erreichbar ist oder der von einem Host aus erreichbar ist, der Hosts im Internet erreichen kann, darf eine IP ausserhalb der privaten IP-Adressen oder der zugewiesenen Netzwerkadressen besitzen | |
Header: 4 Bit Version 8 Bit Traffic Class 20 Bit Flow Label 16 Bit Datenlänge 8 Bit Next Header Typ 8 Bit Hop Limit alias TTL 128 Bit Quelle 128 Bit Ziel ?? Byte folgende Header und Daten Traffic Class 0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | DSCP | CU | +---+---+---+---+---+---+---+---+ DSCP: "differentiated services codepoint", Index des gewählten QoS (zu definieren) CU: Reserviert folgende optionale Header: 8 Bit Nächster Header-Typ 8 Bit Header-Länge ?? Byte Header-Daten verfügbare optionale Header Funktion Hop-by-Hop Options Header Liste von Übermittlungsoptionen (wie Jumbogrammen) wird von jedem Router ausgewertet Routing Header Liste von zu besuchenden Netzwerkknoten wird vin Zwischenstationen ausgewertet Fragment-Header aufteilung in mehrere Datenpakete (keine dynamische Fragmentierung) wird von Endknoten ausgewertet Authentication Header Identifizierung des Senders Destination Option Header Liste von Empfangsoptionen
Jedes Interface benötigt eine IP-Adresse.
Nicht-Endpunkte benötigen keine globale IP, auch wenn sie zwischen lokalem und Internet weiterleiten. (PPP-Verbindungen)
Eine IP kann mehreren Interfaces zugewiesen werden, so lange sie der Internet-Schicht (Schicht 3) als ein Interface dargestellt werden. (Load Balancing)
Einem Interface ist mindestens eine Subnetz-Maske zugewiesen.
Die Adresse wird durch acht Blöcke 16-Bittiger hexadezimaler Zahlen, jeweils getrennt durch Doppelpunkte, angegeben.
Genau eine Folge von 0-Werten kann durch genau zwei aufeinanderfolgende Doppelpunkte ersetzt werden.
Die letzten 32 Bit einer IPv4-Kompatible Adressen können im alten Format angegeben werden.
Bsp.: FF01:0:0:0:0:0:0:101 = FF01::10; 0:0:0:0.0:0:192.168.0.2; 0:0:0:0:0:0:0:0 = ::
Allocation Prefix Fraction of Hexadezimal (binary) Address Space ----------------------------------- -------- ------------- ----------- Nicht-Angegeben :: Loopback 1/2^128 ::1 IPv4-Kompatibel 1/96 ::(IPv4-Part) IPv4-Only 1/96 ::FFFF:(IPv4-Part) Reserviert 0000 0000 1/256 00* Unassigned 0000 0001 1/256 01* Reserviert für NSAP 0000 001 1/128 02* - 03* Reserviert für IPX 0000 010 1/128 04* - 05* Nicht Zugewiesen 0000 011 1/128 06* - 07* Nicht Zugewiesen 0000 1 1/32 08* - 0F* Nicht Zugewiesen 0001 1/16 1* Zuweisbare Globale Unicast-Addressese 001 1/8 2* - 3* Nicht Zugewiesen 010 1/8 04* - Nicht Zugewiesen 011 1/8 Nicht Zugewiesen 100 1/8 - Nicht Zugewiesen 101 1/8 Nicht Zugewiesen 110 1/8 - Nicht Zugewiesen 1110 1/16 - Nicht Zugewiesen 1111 0 1/32 Nicht Zugewiesen 1111 10 1/64 - Nicht Zugewiesen 1111 110 1/128 Nicht Zugewiesen 1111 1110 0 1/512 - FE7* Link-Lokale Unicast-Addressese 1111 1110 10 1/1024 FE8* - FEB* Site-Lokale Unicast-Addressese 1111 1110 11 1/1024 FEC* - FEF* Multicast Addressesen 1111 1111 1/256 FF*
| 10 | | bits | n bits | 118-n bits | +----------+-------------------------+----------------------------+ |1111111010| 0 | INTERFACE ID | +----------+-------------------------+----------------------------+Site-Lokalen Unicast-Adressen:
| 3| 13 | 8 | 24 | 16 | 64 bits | +--+-----+---+--------+--------+--------------------------------+ |FP| TLA |RES| NLA | SLA | Interface ID | | | ID | | ID | ID | | +--+-----+---+--------+--------+--------------------------------+ FP=001 Format Prefix TLA ID Top-Level Aggregation RES Reserviert NLA ID Next-Level Aggregation SLA ID Site-Level Aggregation ("Subnetz-ID") INTERFACE ID Interface IDNäheres in RFC 2374
| 3 | n bits | m bits | o bits | p bits | 64 bits | +---+-----------+-----------+-------------+---------+----------+ |010|REGISTRY ID|PROVIDER ID|SUBSCRIBER ID|SUBNET ID| INTF. ID | +---+-----------+-----------+-------------+---------+----------+Die ersten Drei Bits identifizieren den Adress-Typ (Global/Unicast). Die folgenden n Bits geben die Vergabestelle für Provoider-IDs an, welche widerum den Kunden eine Subscriber-ID zuweisen. Die Subnetz-ID gibt wie üblich den Netzwerk-Strang an.
| 8 | 4 | 4 | 112 bits | +------ -+----+----+---------------------------------------------+ |11111111|FLGS|SCOP| GROUP ID | +--------+----+----+---------------------------------------------+11111111 am Anfang der Adresse identifiziert den Adress-Typ. Das niederwertigste Bit von FL(a)GS identifiziert temporäre (=1) gegenüber einer permanenten Adresse. Die anderen Bits sind unbelegt und gleich 0.
0 Reserviert 8 Organisations-lokal 1 Node-lokal 9 (unassigned) 2 Link-lokal A (unassigned) 3 (unassigned) B (unassigned) 4 (unassigned) C (unassigned) 5 Site-lokal D (unassigned) 6 (unassigned) E Global 7 (unassigned) F ReservedGROUP ID gibt die ID der Multicast-Gruppe an.
FF0?:0:0:0:0:0:0:0 Reserviert FF01:0:0:0:0:0:0:1 Alle Interfaces des Hosts FF02:0:0:0:0:0:0:1 Alle Interfaces des Netzwerkstrangs FF01:0:0:0:0:0:0:2 Alle Router im Host FF02:0:0:0:0:0:0:2 Alle Router im Netzwerkstrang FF05:0:0:0:0:0:0:2 Alle Router der Site FF02:0:0:0:0:1:FFXX:XXXX "Solicited-Node"-Addresse: Die X entsprechen den unteren 24 Bit der Interface-Adresse. Ein Host muß Mitglied jeder zu einem seiner Interfaces passenden Multicast-Gruppe sein.IPv4-Kompatible Addresse The IPv6 transition mechanisms [TRAN] include a technique for hosts and routers to dynamically tunnel IPv6 packets over IPv4 routing infrastructure. IPv6 nodes that utilize this technique are assigned special IPv6 unicast addresses that carry an IPv4 address in the low- order 32-bits. This type of address is termed an "IPv4-compatible IPv6 address" and has the format:
| 80 bits | 16 | 32 bits | +--------------------------------------+--------------------------+ |0000..............................0000|0000| IPv4 address | +--------------------------------------+----+---------------------+Dieser Adresstyp wird für Hosts verwendet, die über IPv4-Router hinweg kommunizieren.
| 80 bits | 16 | 32 bits | +--------------------------------------+--------------------------+ |0000..............................0000|FFFF| IPv4 address | +--------------------------------------+----+---------------------+Diese Adresse wird für Hosts verwendet, welche nur IPv4 verstehen. Dies kann z.B. genutzt werden, um IPv6-Pakete dynamisch in IPv4-Pakete umzusetzen.
+------+ +-----+ +-----+ +-----+ |Telnet| | FTP | |Voice| ... | NFS | Application Level +------+ +-----+ +-----+ +-----+ | | | | +-----+ +-----+ +-----+ | TCP | | RTP | ... | UDP | Host Level +-----+ +-----+ +-----+ | | | +-------------------------------+ | Internet Protocol & ICMP | Gateway Level +-------------------------------+ | +---------------------------+ | Local Network Protocol | Network Level +---------------------------+
IPv4: 0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | data octets ... +---------------- ... IPv6: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Source Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Destination Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Upper-Layer Packet Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | zero | Next Header | <- = UDP (17) oder TCP (6) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+UDP: Quadratisch - Praktisch - kann-nicht-viel.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequenz-Nummer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Nummer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Sequenz-Nummer Nummer des ersten Datenbytes (Bei Verbindungsaufbau -1) Acknowledgment Nummer Nummer des nächsten erwarteten Paketes Data Offset Header-Länge in 32-Bit-Wörtern URG Wichtige-Daten-Flag ACK Acknowledgment Nummer gültig (Nach Verbindungsaufbau ständig) PSH Übermittlungspuffer leeren RST Verbindung zurücksetzen SYN Sequenz-Synchronisation FIN Verbindung schließen Window freier Empfangspuffer nach dem letzten bestätigten Bytes Checksum Prüfsumme, schließt UDP-ähnlichen Psudo-Header ein Urgent Pointer Zeiger auf wichtige DatenDa das TCP-Protokoll eine gesicherte Verbindung über ein ungesichertes Paketvermittlungsnetz bietet (bieten soll), muß bei einer Verbindung folgendes Protokoll eingehalten werden:
+---------+ ---------\ active OPEN | CLOSED | \ ----------- +---------+<---------\ \ create TCB | ^ \ \ snd SYN passive OPEN | | CLOSE \ \ ------------ | | ---------- \ \ create TCB | | delete TCB \ \ V | \ \ +---------+ CLOSE | \ | LISTEN | ---------- | | +---------+ delete TCB | | rcv SYN | | SEND | | ----------- | | ------- | V +---------+ snd SYN,ACK / \ snd SYN +---------+ | |<----------------- ------------------>| | | SYN | rcv SYN | SYN | | RCVD |<-----------------------------------------------| SENT | | | snd ACK | | | |------------------ -------------------| | +---------+ rcv ACK of SYN \ / rcv SYN,ACK +---------+ | -------------- | | ----------- | x | | snd ACK | V V | CLOSE +---------+ | ------- | ESTAB | | snd FIN +---------+ | CLOSE | | rcv FIN V ------- | | ------- +---------+ snd FIN / \ snd ACK +---------+ | FIN |<----------------- ------------------>| CLOSE | | WAIT-1 |------------------ | WAIT | +---------+ rcv FIN \ +---------+ | rcv ACK of FIN ------- | CLOSE | | -------------- snd ACK | ------- | V x V snd FIN V +---------+ +---------+ +---------+ |FINWAIT-2| | CLOSING | | LAST-ACK| +---------+ +---------+ +---------+ | rcv ACK of FIN | rcv ACK of FIN | | rcv FIN -------------- | Timeout=2MSL -------------- | | ------- x V ------------ x V \ snd ACK +---------+delete TCB +---------+ ------------------------>|TIME WAIT|------------------>| CLOSED | +---------+ +---------+ TCP Connection State DiagramTCP ist für viele Arten von Verbindung das Protokoll der Wahl, da auf Anwendungsebene Fehlerprüfung und Flußkontrolle entfällt. Für Echtzeitdatenströme ist es jedoch nicht geeignet, da die erneute Übermittlung, die im Protokoll vorgesehen ist, den Datenstrom bei Bedarf ausbremst.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V=2|P|X| CC |M| PT | sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | synchronization source (SSRC) identifier | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | contributing source (CSRC) identifiers | | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1 Bit V Version=2 1 Bit P Padding vorhanden (Länge im letzten Byte des Padding-Bereichs) 1 Bit X Exakt 1 Erweiterungsheader folgt (Benutzerdefiniert) 4 Bit CC Anzahl Empfänger 1 Bit M Marker, Benutzerdefiniert 7 Bit PT Daten-Format 16 Bit sequence number Sequenz-Nummer 32 Bit timestamp logische Uhrzeit nach einem linearen Zeitzähler 32 Bit SSRC Sender-ID 32 Bit CSRC Empfänger-ID (CC mal)Dieses Protokoll setzt auf UDP auf, wurde in den Standard-Dokumenten jedoch als eigenständiges Protokoll dargestellt.