| 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 =0
Hö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 ID
Nä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 Daten
Da 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 Diagram
TCP 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.