17.06.2014 Aufrufe

Sicherheit in vernetzten Systemen - RRZ Universität Hamburg

Sicherheit in vernetzten Systemen - RRZ Universität Hamburg

Sicherheit in vernetzten Systemen - RRZ Universität Hamburg

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

KAPITEL 1. GRUNDLAGEN: INTERNET-PROTOKOLLE<br />

ßen (Abbauen) def<strong>in</strong>iert. Der Endpunkt e<strong>in</strong>es Netzwerk-Datenstroms wird <strong>in</strong> der OSI-Term<strong>in</strong>ologie<br />

als „Service Access Po<strong>in</strong>t“ (SAP) bezeichnet. In UNIX heißt die Implementierung e<strong>in</strong>es SAPs Socket.<br />

E<strong>in</strong> (TCP)Socket verhält sich aus Sicht der Programmierer<strong>in</strong> ähnlich wie e<strong>in</strong> Dateideskriptor (d.h. die<br />

Operationen Öffnen, Lesen, Schreiben und Schliessen für Dateideskriptoren können auch auf Sockets<br />

angewendet werden), wobei das Lesen von Daten e<strong>in</strong>er Empfangsoperation entspricht und das Schreiben<br />

von Daten e<strong>in</strong>er Sendeoperation entspricht.<br />

Netzwerk-Dateideskriptoren (Sockets) werden mit dem Aufruf socket() erzeugt. Danach gibt es<br />

zwei Wege. Soll der Socket zur Annahme von Verb<strong>in</strong>dungen dienen, (z.B. für Server) oder soll lediglich<br />

e<strong>in</strong>e Verb<strong>in</strong>dung zu e<strong>in</strong>em anderen Rechner aufgebaut werden (typischerweise bei Clients). Die<br />

Art des (TCP)Sockets wird nur durch die (für die Programmierer<strong>in</strong> nicht direkt sichtbaren) Zustände<br />

des TCP-Automaten bestimmt. Welchen Zustand der Automat e<strong>in</strong>nimmt, bestimmt die Programmierer<strong>in</strong><br />

durch die weiteren Systemaufrufe.<br />

Zunächst kann dem Socket e<strong>in</strong>e IP-Adresse und e<strong>in</strong>e Portnummer mittels b<strong>in</strong>d() zugeordnet werden.<br />

Für Server-Sockets ist dieser Schritt zw<strong>in</strong>gend, bei Client Sockets wird dies notfalls vom Betriebssystem<br />

während des connect() Aufrufs nachgeholt (das Betriebssystem ordnet dann e<strong>in</strong>e nach<br />

betriebssystem<strong>in</strong>ternen Regeln gewählte Portnummer zu).<br />

Für Server-Sockets wird der Socket mit listen() <strong>in</strong> den gleichnamigen Zustand versetzt (<strong>in</strong> Abbildung<br />

1.7 der Übergang mit passive open nach LISTEN). In diesem, auch als halboffen bezeichnetem<br />

Zustand, wartet der Socket auf Verb<strong>in</strong>dungsaufbauwünsche. Der Aufruf accept() nimmt e<strong>in</strong>en solchen<br />

Wunsch entgegen und bewirkt zweierlei: Vom Socket wird e<strong>in</strong>e Kopie erzeugt und der Programmierer<strong>in</strong><br />

zurückgegeben, während der alte Socket im Zustand LISTEN bleibt, damit weitere Verb<strong>in</strong>dungen<br />

angenommen werden können. Der alte Socket repräsentiert weiter den Endpunkt e<strong>in</strong>er halboffenen<br />

Verb<strong>in</strong>dung (nur an Empfänger-IP-Adresse und Empfänger-TCP-Portnummer gebunden), während<br />

der neue, von accept() zurückgelieferte Socket den Endpunkt e<strong>in</strong>er vollständigen Verb<strong>in</strong>dung<br />

repräsentiert und zur weiteren Kommunikation mit dem fremden Host genutzt wird.<br />

Clients nehmen mittels connect() Verb<strong>in</strong>dung zum Server auf (was dem Übergang active open von<br />

CLOSED nach SYN-SEND <strong>in</strong> Abbildung 1.7 entspricht) und können unmittelbar danach mit der Kommunikation<br />

beg<strong>in</strong>nen.<br />

Die weiteren Aufrufe und ihr Zusammenhang mit den Zustandsübergängen des TCP-Automaten und<br />

den e<strong>in</strong>zelnen Feldern im TCP-Kopf wird nun <strong>in</strong> den folgenden Abschnitten 1.4.3, 1.4.4 und 1.4.5<br />

genauer behandelt.<br />

1.4.3 Verb<strong>in</strong>dungsaufbau<br />

Der Verb<strong>in</strong>dungsaufbau bei TCP wird als Three-Way-Handshake bezeichnet, weil dabei drei Datenpakete<br />

zwischen den beteiligten Rechnern ausgetauscht werden, wie Abbildung 1.7 zeigt.<br />

Der Initiator der Verb<strong>in</strong>dung beg<strong>in</strong>nt, <strong>in</strong> dem er e<strong>in</strong> Paket mit dem SYN-Flag zum Kommunikationspartner<br />

sendet. Die Sequenznummer wird dabei vom Betriebssystem zufällig gewählt. Der Partner<br />

antwortet mit e<strong>in</strong>em Datenpaket, das zwei Aufgaben hat. Erstens wird der Empfang des ersten Paketes<br />

bestätigt. Dazu wird im Antwortpaket das ACK-Flag gesetzt und e<strong>in</strong>e Bestätigungsnummer gewählt,<br />

die der Sequenznummer des ersten Paketes entspricht. Zweitens wird durch e<strong>in</strong>e eigene Sequenznummer<br />

und das SYN-Flag die Annahme der Verb<strong>in</strong>dung dem Initiator gegenüber bestätigt. Der Initiator<br />

bestätigt den Empfang des zweiten Paketes durch Senden e<strong>in</strong>es Antwortpaketes, <strong>in</strong> dem das ACK-Flag<br />

gesetzt ist und die Bestätigungsnummer der Sequenznummer ·1 des Partners entspricht. Obwohl das<br />

12 SS 99, Sem<strong>in</strong>ar 18.416: <strong>Sicherheit</strong> <strong>in</strong> <strong>vernetzten</strong> <strong>Systemen</strong>

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!