05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4.3 <strong>Sockets</strong> 205<br />

Während die Verbindung im Zustand TIME WAIT verharrt, hält das System<br />

noch Informationen zu dieser Netzwerkverbindung parat. Erst dadurch<br />

wird z. B. der sichere Verbindungsabbau, wie er in Abb. 4.13 dargestellt ist,<br />

möglich. Falls nämlich das letzte ACK-Paket von der aktiven zur passiven<br />

Seite verloren geht <strong>und</strong> die passive Seite deshalb ihr FIN-Paket wiederholt,<br />

so weiß die aktive Seite dank TIME WAIT noch von der Verbindung bzw.<br />

dem gerade stattfindenden Verbindungsabbau <strong>und</strong> kann erneut <strong>mit</strong> einem<br />

ACK-Paket darauf reagieren. Ohne diese Kenntnis würde die TCP-Schicht<br />

<strong>mit</strong> einem RST-Paket antworten, was die Gegenseite als Fehler interpretieren<br />

würde. Darüber hinaus kann es durch den Zustand TIME WAIT verhindert<br />

werden, daß vermeintlich verlorengegangene IP-Pakete einer alten, inzwischen<br />

geschlossenen Netzwerkverbindung einer identischen neuen Verbindung zugerechnet<br />

werden. Die Wartezeit von 2MSL garantiert in diesem Fall schlicht,<br />

daß keine IP-Pakete der vorherigen Verbindung mehr existieren können.<br />

4.3.8 Kommunikation über UDP<br />

Im Gegensatz zum Transmission Control Protocol (TCP), auf dem im bisherigen<br />

Verlauf von Abschnitt 4.3 der Fokus lag, arbeitet das User Datagram<br />

Protocol (UDP) verbindungslos. Verbindungslos bedeutet bei UDP, daß<br />

zwischen je zwei Kommunikationspartnern keine Netzwerkverbindung <strong>mit</strong><br />

kontrolliertem Datenfluß besteht, sondern daß stattdessen einzelne Nachrichten,<br />

sogenannte Datagramme, ausgetauscht werden. Insbesondere findet demnach<br />

vor Beginn der Kommunikation zweier Anwendungen der zuvor in Abschnitt<br />

4.3.7 für TCP beschriebene, gesicherte Verbindungsaufbau nicht statt<br />

<strong>und</strong> der gesicherte Verbindungsabbau entfällt natürlich ebenfalls. Nachdem<br />

die <strong>Sockets</strong> vereinbart <strong>und</strong> initialisiert wurden, beginnen die Kommunikationspartner<br />

stattdessen einfach <strong>mit</strong> dem Austausch von Datagrammen über<br />

das Verbindungsnetzwerk.<br />

Da UDP keine Flußkontrolle wie TCP bietet, kann UDP für sich genommen<br />

auch nicht feststellen, ob <strong>und</strong> wenn ja welche der verschickten Datagramme<br />

tatsächlich die Gegenseite erreicht haben. Eine per UDP verschickte Nachricht<br />

kann beim Adressaten ankommen oder kann genausogut verloren gehen. Einerseits<br />

bringt UDP durch diese Eigenschaft nur einen niedrigen protokolleigenen<br />

Overhead <strong>mit</strong>, auf der anderen Seite bleibt demnach aber die Behandlung<br />

von Übertragungsfehlern 26 der Anwendungslogik überlassen. Die meisten Anwendungen<br />

setzen heute auf TCP auf, aber trotzdem gibt es durchaus auch<br />

Fälle, in denen UDP genau die richtige Wahl ist.<br />

26 Unzuverlässig bedeutet im Zusammenhang <strong>mit</strong> UDP wirklich nur, daß das Protokoll<br />

keine Mechanismen aufweist, die garantieren, daß die Daten beim Empfänger<br />

ankommen. Hat der Empfänger allerdings Daten erhalten, so sind diese auch unverfälscht<br />

übertragen worden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!