REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



TCP-IP - Das Internet-Protokoll

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

TCP/IP

RFC 793/791

  it714s5395ettf 35714siq95etf7g



  it714s5395ettf 35714siq95etf7g

PRRU-Referat

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

  it714s5395ettf 35714siq95etf7g

Inhalt

1. DAS INTERNET-PROTOKOLL (À IP, RFC 791) 3

1.1 Merkmale von IP 3

1.2 Das Paketformat von IP 3

1.3 Der Aufbau von IP-Paketen 3

2. DAS TRANSMISSION CONTROL PROTOCOL (À TCP, RFC 793) 4

2.1 Merkmale von TCP 4

2.2 Das Paketformat von TCP 4

2.3 Identifikation von Sender und Empfänger 6

2.4 Aufbau einer TCP-Verbindung 6

2.5 Abbau einer TCP-Verbindung 8

2.6 Der Paketversand 9

3. QUELLEN 9


1. Das Internet-Protokoll (
à IP, RFC 791)

1.1 Merkmale von IP

Das IP-Protokoll stellt auf der Schicht 2 des ISO/OIS-Schichtenmodells den Transport von Datenpaketen zur Verfügung.

Dieser Transport ist

  • verbindunslos und

  • nicht abgesichert

Verbindungslos ist der Transport deshalb, weil keine feste Verbindung zwischen Sender und Empfänger besteht. Das IP-Protokoll vergewissert sich vor dem Schicken der Daten nicht ob der Empfänger bereit ist die Daten zu empfangen, sondern via IP schickt eine Internet-Anwendung die Pakete einfach über das Netz. Das erste Paket an den einen, das zweite an den anderen Empfänger und das dritte wieder an den ersten Empfänger. Eine feste Verbindung wird dazu weder benötigt noch hergestellt.

Nicht abgesichert ist der Transport via IP, weil keine Gewähr übernommen wird, dass das Paket auch beim richtigen Empfänger ankommt. Zwar gibt sich das System die größte Mühe mittels dem Internet Control Message Protocol (à ICMP, RFC 792) Fehler in der Übertragung zu vermeiden bzw. zu melden, allerdings ist augrund des verbindungslosen Zustandes auch nicht gesichert, dass die Fehlermeldung beim richtigen Empfänger ankommt.

1.2 Das Paketformat von IP

4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
Version
HLen
Service Type
Total Length
Identification
Flags
Fragment Offset
Time to live
Protocol
Header Checksum
Source IP Adress
Destination IP Adress
Optionen (variabel)
Padding

1.3 Der Aufbau von IP-Paketen

  • Version (4 Bit): Version des IP-Protokolls (derzeit 4)

  • HLen (4 Bit): Länge des IP-Kopfes in DWords

  • Service Type (8 Bit): Priorität eines Paketes; Merkmale der Übertragungsweges

  • Total Length (16 Bit): Gesamtlänge des IP-Paketes (Nutzdaten+Overhead) in Bytes

  • Identification (16 Bit): Nummerierung der einzelnen Fragmente eines IP-Pakets

  • Flags (3 Bit)

  • Fragment Offset (13 Bit): Start der Daten innerhalb eines Fragments

  • Time to live (8 Bit): Lebensdauer eines Pakets

  • Protocol (8 Bit): Art des Pakets, das in IP-Paket enthalten ist

  • Header Checksum (16 Bit): Checksumme über den Kopf des IP-Pakets

  • Sourced IP Adress (32 Bit):

  • Destination IP Adress (32 Bit)

  • Optionen (variable): IP-Optionen

  • Padding (n*8Bit): Füllbyte, um auf DWord-Länge zu kommen

2. Das Transmission Control Protocol (à TCP, RFC 793)

2.1 Merkmale von TCP

2.1.1 Verbindung von Anwendung zu Anwendung

Die Endpunkte einer TCP-Kommunikation werden durch eine IP-Adresse und eine Portnummer gekennzeichnet. Die IP-Adresse sorgt dafür, dass die Datenpakete zum richtigen Host kommen, die Portnummer wiederum ist dafür Zuständig, dass die Daten am Host zur richtigen Anwendung kommt. Mit dieser Funktionsweise ist es möglich das mehrere Internet-Anwendungen auf einem Host gleichzeitg meherer TCP-Verbindungen mit anderen Anwendungen auf anderen Hosts zu unterhalten.

2.1.2 Sichere, virtuelle Verbindung

TCP knüpft eine virtuelle Verbindung zwischen den beiden Endpunkten der Verbindung, die mehr einer Telefonverbindung gleicht, als dem „blinden“ Versand von IP-Paketen. Im Rahmen des TCP-Protokolls die beiden Kommunikationspartner Informationen aus um fehlerhaft übertragene oder verloren gegangene Pakete zuerkennen und den Fehler zu beheben.

2.1.3 Voll Duplex

Die Kommunikation ist in beide Richtungen möglich, d.h. dass beide Partner können gleichzeite Senden und Empfangen.

2.1.4 Flexible Paketgrößen

Die Übertragung von Daten mittels TCP ist nicht an bestimmte Größen gebunden. Die theoretische Paketgröße liegt im Bereich von einem Byte bis zu mehreren Megabyte.

2.2 Das Paketformat von TCP

4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
4 Bit
Source Port
Destination Port
Seqeuenze Number
Acknowledgment Number
Data Offset
Reserved
Control Bits
Window
Checksumme
Urgent Pointer
Optionen
Padding

Source Port (16 Bit)

Der Port auf Seiten des Absenders, über den der TCP-Strom läuft.

 

Destination Port (16 Bit)

Der Port auf Seiten des empfängers, an dem der TCP-Strom landet.

Sequence Number (32 Bit)

Sorgt für die richtigte Einordnung des Segments im TCP-Strom. Mit ihrer Hilfe kann man erkennen, ob ein Segment fehlt.

 

Acknowledgment Number (32 Bit)

Diese Information teilt der Gegenseite welche Sequence Number als nächstes im TCP-Strom folgt.

 

Data Offset (4 Bit)

Dieses Feld zeigt die Größe des TCP-Headers in DWORDs (32-Bit-Einheiten) an. Damit kann man ermitteln, wo die eigentlichen Nutzdaten beginnen.

 

Reserviert (6 Bit)

Dieses Feld ist für zukünftige Nutzung vorbehalten à muß Null sein

 

Control Bits (6 Bit)

Bezeichnet Inhalt und Aufgabe des TCP-Kopfes

Folgende Einstellungen der Bits sind möglich (von links nach rechts)

 

  • URG=1 à Das Segment enthält dringende Daten (urgent data), der Inhalt des Feldes Urgent Pointer ist zu beachten.

  • ACK=1 à Das Feld enthält ein Acknowledge

  • PSH=1 à empfangene Daten sofort weitergeben (push)

  • RST=1 à Verbindung zurücksetzten (reset)

  • SYN=1 à Verbindungsaufbau und Synchronisation der Sequence-Numbers

  • FIN=1 à Verbindung schließen

  it714s5395ettf 35714siq95etf7g

Window (16 Bit)

Anzahl der Bytes, die der Absender bereit ist zu empfangen.

 

Checksumme (16 Bit)

Checksumme über Header

 

Urgent Pointer (16 Bit)

Bei TCP-Segmenten, bei denen das URG-Flag gesetzt ist, gibt diese Feld den Offset der ersten „normalen“ Daten an, die sich hinter den dringenden Daten befinden.

 


Optionen (variable Länge)

TCP definiert hat zur Zeit drei Arten von Optionen:

 

  • „End of Option List“ à Wert: 0 (1 Byte)

Dieses Feld zeigt an, das keine weiteren Optionen folgen

  • „No-Option List“ à Wert: 2 (1 Byte)

Dieses Feld dient zur Trennung zwischen zwei Optionen, z.B damit die nächste Option an der Word-Grenze beginnt.

  • „Maximum Segment Size“ à Wert: 2 (1 Byte) + Länge: 4 (1 Byte) + Segment (2 Byte)

Hier wird die maximal Segmentgröße angegeben. Dieses Feld wird vorallem beim Verbindungsaufbau benutzt.

 

Padding (variable Länge)

Füll-Bytes à wird benötigt, damit der TCP-Header immer auf 32-Bit endet.

 

2.3 Identifikation von Sender und Empfänger

Da die eigentlichen IP-Adressen schon im Kopf des IP-Pakets gespeichert wird, verzichtet man auf eine weiter Speicherung im TCP-Header. Im TCP-Header werden nur die Port-Informationen gespeichert. Aus den IP-Adressen und den Portnummern ist es möglich eine eindeutige Verbindung zwischen Sendern und Empfänger aufzubauen.

2.4 Aufbau einer TCP-Verbindung

Bei der TCP-Verbindung kommt der sogenannte „three-way-handshake“ zum Einsatz. Das bedeutet, das drei TCP-Segmente nötig sind um eine Verbindung aufzubauen.

Wenn Host A eine Verbindung zu Host B aufbauen will, dann schickt er ein TCP-Paket, indem das SYN-Flag gesetzt ist. Dadurch erkennt Host B, dass jemand eine TCP-Verbindung mit ihm aufbauen will. Weiters ist es nötig, dass am Host B ständig ein Programm wacht, dass einen bestimmten Port überwacht und feststellt, ob jemand auf diesem Port eine Verbindung aufbauen will.

Wie schon erwähnt schickt Host A ein TCP-Paket, in dem das SYN-Flag und das Sequence Number-Feld mit der Sequence Number gesetzt ist. Daten sind in der Regel nicht enthalten. Ist die Gegenseite zur Verbindungsaufnahme bereit, antwortet sie mit einem TCP-Segment, in dessen Header sowohl das SYN- als auch das ACK-Flag gesetzt ist. Das ACK steht für Acknowledgment, also für Bestätigung des SYN der Gegenseite. Gleichzeitig wird im Acknowledgment Number-Feld die initiale Sequence Nummer plus 1 des Empfängers angegeben. Im Sequence Number-Feld wird die Sequence Number des Empfänger mitgeschickt.

Die abschließende Nachricht vom Sender der Kommunikation dient dazu, um die gewünschte Sequence Number zu bestätigen. Hierzu schickt der Sender beide Sequence-Number (seine und die des Empfängers) plus 1 zurück.


Beispiel: Host A will Verbindung mit Host B aufnehmen

 

TCP A TCP B

1. CLOSED LISTEN

2. SYN-SENT à <SEQ#=100> à SYN-RECEIVED

<CTL=SYN>

3. ESTABLISHED ß <SEQ#=300><ACK#=101> ß SYN-RECEIVED

<CTL=SYN,ACK>

4. ESTABLISHED à <SEQ#=101><ACK#=301> à ESTABLISHED

<CTL=ACK>

5. ESTABLISHED à <SEQ#=101><ACK#=301> à ESTABLISHED

<CTL=ACK><DATA>

  1. Anfangszustand

Ein Host A ist inaktiv (geschlossen); Host B wartet auf einen Verbindungsaufbau

 

  1. Verbindungsaufbau von Host A

Host A sendet ein Paket indem das SYN-Flag gesetzt ist und gleichzeitig sendet er seine Sequence Number mit (in dem Beispiel 100).

Host B empfängt das gesendete Paket

 

  1. Bestätigung von Host B

Host B sendet seinerseits ein Paket, indem sowohl das ACK- als auch das SYN-Flag gesetzt ist.

Zur Bestätigung, dass er die Sequence Number von Host A erhalten hat, schickt er sie im ACK-Feld mit, allerdings um eins erhöht. In „seinem“ Sequence-Feld schickt er die eigene Sequence Number mit (à 300).

Wenn Host A dieses Paket besteht von seiner Seite steht die Verbindung zu Host B.

 

  1. Nochmalige Bestätigung von A

Damit auch eine Verbindung von B nach A aufgebaut wird, müssem noch ein letzes Mal die beiden Nummern bestätigt werden.

Host A sendet dazu ein Paket mit gesetztem ACK-Flag. Die Sequence Number ist nun 101, die ACK-Number 301.

Kommt das Paket am Host B an, steht die Verbindung auch zu Host A.

 

  1. Daten verschicken

Host A schickt zu Host B Daten.

 

Mögliche Sonderfälle

  • Beide Host wollen gleichzeitig eine Verbindung aufbauen

  • Neuaufbau einer „abgestürzten“ Verbindung

  • Behandlung von halbgeöffnete Verbindungen


2.5 Abbau einer TCP-Verbindung

Um den Verbindungsabbauch zu verstehen, muß man eine wichtige Eigenschaft des TCP-Protokolls vestehen.

Da eine TCP-Verbindung eine „voll duplex“-Verbindung darstellt, besteht eine Verbindung eigentlich aus zwei seperaten Verbindungen. Einmal von A nach B und zum anderen eine von B nach A. Wenn also „A“ die Verbindung schließen will, ist damit nur die Verbindung von A nach B betroffen.

Die Seite A schickt ein TCP-Paket, indem das FIN-Flag gesetzt ist. Mit Erhalt des Pakets informiert die TCP-Software von B die jeweilige Anwendung, dass die Verbindung geschlossen werden soll und daher keine weiteren Daten verschickt werden können. B bestätigt den Erhalt des FIN-Pakets und wiederholt den gesamten Vorgang von seiner Seite aus. Damit werden beide Teile einer Verbindung geschlossen. Natürlich werden auch hier laufende Sequence- und Acknowledgements Numbers verschickt.

Beispiel: User schließt Verbindung

TCP A TCP B

1. ESTABLISHED ESTABLISHED

2. (Close)

FIN-WAIT-1 à <SEQ=100><ACK=300> à CLOSE-WAIT

<CTL=FIN,ACK>

3. FIN-WAIT-2 ß <SEQ=300><ACK=101> ß CLOSE-WAIT

<CTL=ACK>

4. (Close)

TIME-WAIT ß <SEQ=300><ACK=101> ß LAST-ACK

<CTL=FIN,ACK>

5. TIME-WAIT à <SEQ=101><ACK=301> à CLOSED

<CTL=ACK>

  1. LINK CLOSED

Beschreibung:

 

  • FIN-WAIT-1

Bedeutet, dass Host A auf ein FIN-Paket von Host-B wartet, oder auf die Bestätigung des von ihm gesendeten FIN-Pakets.

  • FIN-WAIT-2

Host A wartet auf die Bestätigung des FIN-Pakets

  • CLOSE-WAIT

Der Host B wartet auf den Verbindungsabbruch durch den User


  • LAST-ACK

Der Host wartet auf Bestätigung seines FIN-Pakets

 

  • TIME-WAIT

Host A wartet eine Zeit damit er sicher sein kann, dass Host B auch seinen Wunsch zum Beenden des Verbindung bekommen hat.

 

In diesem Fall kann das FIN-Paket an einer beliebigen Stelle des ausgehenden TCP-Stroms stehen. Sobald das FIN-Paket versendet wurde, werden keine weiteren Pakete verschickt. Der Host, der das FIN-Flag verschickt hat (à Host A), wird in den FIN-WAIT 1 Zustand versetzt, dass bedeutet, dass weiterhin ankommende Pakete entgegengenommen werden und alle bisherigen Pakete, inklusive des FIN-Pakets, werden bei Verlust neu verschickt.

Wenn vom anderen Host (à Host B) das FIN-Paket bestätigt hat, sendet er seinerseits ein FIN-Paket, um auch die Verbindung von seiner Seite abzubauen, diese FIN-Paket muß natürlich auch von Host A bestätigt werden. Zu beachten ist hierbei, dass Host B seinerseite erst ein FIN-Paket senden wird, wenn der User die Verbindung auf seiner Seite schließen will.

Mögliche Sonderfälle

  • Verbindungsabbruch durch den Remote-Host

  • Gleichzeitiger Verbindungsabbruch

 

2.6 Der Paketversand

Nachdem die Verbindung aufgebaut ist besteht der Datenstrom aus dem Austausch von Segmenten. Da natürlich auch einzelne Segmente verloren gehen können, arbeitet TCP mit wiederholten Sendung von verlorenen Segmenten. Außerdem kann es zu doppelten Paketen kommen, auch dieses Problem korrigiert TCP.

Wie schon öfters erwähnt ist die Sequence Number eines der wichtigsten Elemente im TCP-Protokoll. Sie wird nicht nur beim Verbindungsauf- und abbau verwendet sondern auch bei dem eigentlichen Paketversand. Durch diese Nummer kann bestimmt werden, welche Pakete noch fehlen und damit ist es möglich die Daten korrekt zu übermitteln.

3. Quellen

  • Internet Intern

  • TCP/IP Tutorial and Technical Overview (à Internet)

  • RFC 791 (Request for comments über IP)

  • RFC 793 (Request for comments über TCP)







Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen