Inhalt:

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)

1) Standart: IPv4 Heute

1.1) Header

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 Daten
TOS-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.
Die TOS-Werte werden theoretisch vom jeweiligen übermittelndem System in lokale Quality-of-Service-Stufen umgesetzt die dann angewandt werden. Praktisch werden diese Werte beim Internet-Provoider (noch?) häufig gelöscht, um eine faire Nutzung des Internets zu gewährleisten.
Dieses Feld soll durch den IPv6-Standard abgelöst werden.
 
Optionen:
 
Es sind Optionsfelder verfügbar, um eine Source-Route anzugebren. eine Sicherheitsstufe festzulegen und Stream-IDs (16 Bit) mitzusenden. Desweiteren kann die Routing-Strecke und Verzögerung abgefragt werden (TraceRoute).
Beim Weiterleiten müssen alle bekannten Optionen verarbeitet werden.

1.2) Adressbelegung

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

1.3) Network Adress Translation

Für eine Verbindung von einem Client mit privater IP zu einem Host im Internet (ausserhalb des privaten Netzes) genügt es nicht, einfach eine Verbindung zu diesem aufzubauen. Selbst wenn die Pakete das Ziel erreichen würden, könnte dieser die angeforderten Daten nicht übermitteln, da die Client-Adresse nicht in das Internet geroutet werden darf (sie ist ja privat).
Damit die Kommunikation nicht nur einseitig verläuft, gibt es zue Zeit drei Möglichkeiten:
 
Proxy-Server:
 
Die Clients kommunizieren mit einem Proxy-Server, der die Anfragen zu dem jeweiligen Host weiterleitet.
Zur Zeit werden hauptsächlich HTTP und FTP unterstützt. NAT/Masquerading
 
Ein Gateway-Rechner setzt die Adressen der Clients in ihm zugewiesene offizielle IP-Adressen um.
Für die meisten Protokolle funktioniert dieses Verfahren, jedoch benötigen einige eine besondere Behandlung, z.B. FTP, Quqake, ... . Dies ist immer dann der Fall, wenn die Gegenstelle einen Rückkanal aufbaut. Ist eine entsprechende Behandlung nicht implementiert, scheitert die Verbindung.
 
Source Routing
 
Vorausgesetzt es wäre ein Router oder eine Kette von Routern bekannt, die mit beiden kommunizierenden Hosts Kontakt hätte, könnte der jeweils sendende Host die Pakete durch diese schleusen. Da auf Protokollebene ein Sicherheitsmechanismus besteht, werden Pakete, die dies ausnutzen, grundsätzlich nicht vermittelt.
 
Eine Verbindung aus dem Internet benötigt einen Proxy-Server oder spezielle Weiterleitungsregeln. Proxy-Server sind in der Regel nicht vorhanden und Weiterleitungsregeln beziehen sich zumeist auf genau ein Host oder reihum auf verschiedene Hosts mit gleicher Aufgabe (Web-Server). Verbindungen aus einem privaten Netz zu einem anderen scheitern ohne Proxy daran, daß die Zieladresse ebenfalls im privaten Bereich liegt und somit Pakete an diese Adresse das lokale Netz nicht verlassen dürfen.

1.4) Fazit:

Der heutige Internet-Standard ist weder der immer größer werdenden Anzahl von Endgeräten noch den Anforderungen an Echtzeit-Kommunikation gewachsen. Es fehlen die Möglichkeiten, jedes Endgerät direkt zu erreichen oder zwischen diesen Endgeräten eine definierte Übertragungsgeschwindigkeit zu wählen, da es nicht möglich ist, jedem Endgerät eine eindeutige Adresse zuzuweisen. Somit könnten z.B. nur Dial-In-Server eine Videokonferenz (oder Telefonverbindung) ohne Proxy aufbauen, da nur sie eine offizielle IP von der Gegenstelle erhalten. Der Trend geht jedoch zum Fünftrechner, Siebt-Telefon und Dritt-Fernseher. Die Wahl der Service-Stufen reicht nicht aus, um eine Übertragungsgeschwindigkeit zu wählen, da für Echtzeitkommunikation nur ein Zustand mit acht Prioritätsstufen vorgesehen ist. Moderne Netzarchitekturen wie ATM erlauben es jedoch, für jede Verbindung Bandbreiten und verschiedene Verbindungstypen zu wählen.

2) Zukünftiger Standard: IPv6

2.1) Header-Format

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

2.2) Adressbelegung

Adress-Struktur: (RFC 2373)

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.

Schreibweise:

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*

Format von:

Link-Lokale Unicast-Addressen:
     |   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
 
Globalen Unicast-Adressen: (kein endgültiger Entwurf)
     | 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.
 
Multicast-Adressen
     |   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.
SCOP(e) gibt die Gültigkeit der Adresse an:
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	Reserved
GROUP ID gibt die ID der Multicast-Gruppe an.
(Somit sind 5.192.296.858.534.827.628.530.496.329.220.096 Multicast-Gruppen pro Gültigkeitsbereich verfügbar. Kurz gesagt: Knapp ausreichend.)
 
Vordefiniert sind:
 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.
IPv4-Only-Adresse
   |                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.
 
NSAP Addressen
 
Siehe RFC 1888
 
IPX Addressen
 
nicht Definiert
 
Anycast-Adresse
 
Unicast-Adresse, die mehr als einem Interface eines Gültigkeitsbereiches zugewiesen wurde.
Dies erfordert eine besondere Konfiguration der Netzwerkknoten.
Jedem Router eines Netzwerkstrangs ist die Adresse dieses Strangs zugewiesen (Wichtig für Selbstkonfiguration der Geräte).
Da zur Zeit keine Erfahrungen mit Anycast-Adressen vorliegen wurde ihre Verwendung zunächst auf Router beschrä nkt.

2.3) Auto-Konfiguration

Wenn ein IPv6 fähiges Interface gestartet wird, hält es zuerst Ausschau nach einem Router, der dem Interface eine gültige Adresse zuteilt. Damit es überhaupt angesprochen werden kann, hat das Interface am Anfang eine automatisch generierte Adresse aus dem Link Local Bereich (FE8...). Für diese automatische Generierung wurden eigens Verfahren festgelegt, wie zum Beispiel eines für Ethernetkarten nach der Norm EUI64, dass die Mac Adresse benutzt, um die Eindeutigkeit in der lokalen Verbindung zu gewähren. EUI64 sieht vor, dass in der Mitte der 48 bit Mac Adresse die 4 Halbbytes FFFE eingeschoben werden. Eine so generierte Adresse sieht etwa wie folgt aus: FE80::XZXX:XXFF:FEYY:YYYY/64. (Die X und Y sind von der Ethernet Mac Adresse übernommen worden.) Um zu markieren, dass dies schon sicher eine eindeutige Adresse ist, wird das zweitletzte Bit des ersten Byte's der MAC Adresse auf 1 gesetzt. Wenn also ein IPv6 Interface erwacht, sendet es sogenannte Router Solicitations (RS) an die spezielle Multicast Adresse FF02::2 (siehe oben: Alle Router auf der Verbindung), worauf ein Router, sofern vorhanden, ein Router Advertisement (RA) mit den benötigten Informationen zurückschickt. Dieser Vorgang wird Stateless Autoconfiguration genannt, da nicht vorher vom Netzwerkadministrator bestimmt werden muss, welche IP Adressen vergeben werden müssen. Dass einzige was er auf dem Router konfigurieren muss, ist der Prefix und dessen Länge. Mit einem Prefix aus dem Bereich der global eindeutigen Adressen kann sich das Interface nämlich seine Adresse selbst zusammensetzen. Es ersetzt einfach die ersten 64 bit (der Prefix FE80::/64) mit dem in der RA verschickten Prefix. Aus der RA kann ein Interface auch gleich den Default Gateway herauslesen, sodass es theoretisch keine Konfiguration am Endgerät mehr braucht. Ein weiterer Mechanismus ist die Neighbour Discovery. Um sicher zu gehen, dass seine Adresse eindeutig ist, kann ein Interface ein sog. Neighbour Solicitations an die Multicast Adresse FF02::1 schicken, mit der gerade generierten Adresse als Absender. Falls es die Adresse schon gibt, wird der Doppelgänger darauf antworten, und das Interface kann deine Adresse ändern. Unter Stateful Autoconfiguration versteht man die zentrale Konfiguration der möglichen Adressen und weiterer Informationen über das DHCPv6 Protokoll (Dynamic Host Configuration Protocol). DHCP gibt es schon für IPv4, wurde aber nicht so stark verwendet, in der Erweiterung für IPv6 lassen sich auch komplexe Konfigurationen zentral verwalten, dass sich dessen Einsatz eher durchsetzen wird. Stateful und Stateless Autoconfiguration schliessen sich gegenseitig nicht aus, im Gegenteil, sie ergänzen sich sinnvoll. Zum Beispiel kann über Stateless Autoconfiguration eine Firmenweite Adresse zugeteilt werden, mit der sich der Rechner dann beim zentralen DHCP Server eine globale Adresse mit DNS Konfiguration holt, der dann auch gleich den Rechner im DNS Server einträgt.

3) Protokolle der Transportschicht

       +------+ +-----+ +-----+       +-----+                     
       |Telnet| | FTP | |Voice|  ...  | NFS |  Application Level  
       +------+ +-----+ +-----+       +-----+                     
             |   |         |             |                        
            +-----+     +-----+       +-----+                     
            | TCP |     | RTP |  ...  | UDP |  Host Level         
            +-----+     +-----+       +-----+                     
               |           |             |                        
            +-------------------------------+                     
            |    Internet Protocol & ICMP   |  Gateway Level      
            +-------------------------------+                     
                           |                                      
              +---------------------------+                       
              |   Local Network Protocol  |    Network Level      
              +---------------------------+                       

3.1) UDP

Header
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.
Beliebt und gerne benutzt für NFS, DNS, TCP/IP-Spiele, ...

3.2) TCP

Header:
    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.
TCP ist für die Verbindung zweier Hosts ausgelegt und unterstützt somit kein Multicast.

3.3) RTP (Realtime Transport Protocol)

Header:
    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.
Ähnlich wie bei FTP wird RTP durch ein Kontrollprotokoll, RTCP, unterstützt, das auf einem anderen Port aufsetzt. RTP wurde speziell für Multimedia-Kommunikation entwickelt, scheint jedoch auch für andere Echtzeit-Anwendungen geeignet zu sein. Verschiedene Datenströme (QAudio/Video) sollen über getrennte Verbindungen laufen, so daß Hosts in langsamen Netzabschnitten zum Beispiel auf Video verzichten können. Zudem können Datenströme über Vermittlungsrechner zusammengeführt, verrechnet und weitergeleitet werden. Diese treten für den errechneten Datenstrom als eigenständiger Sender auf, da sie eventuell verschiedene Eingangsquellen synchronisieren müssen.

Quellen:

/usr/src/linux/ (Kernel 2.2.13)
/usr/doc/packages/ipchains/HOWTO.txt (SuSE-Linux)
www.eurescom.de
www.ietf.org
www.ipv6.org