Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen...

38
Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm 1 Senden von TCP/IP-Telegrammen aus einem Visual Basic-Programm Von: Fabian Baur, Matrikelnummer 156002 und Daniel Letzgus, Matrikelnummer 156040 Seminararbeit an der Fachhochschule Heilbronn Studiengang: Wirtschaftsingenieurwesen Lehrveranstaltung: Ausgewählte Kapitel der Automatisierungstechnik Abgabedatum: 15. Dezember 2003 Betreuer: Prof. Dr.-Ing. H. Frank

Transcript of Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen...

Page 1: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

1

Senden von TCP/IP-Telegrammen aus

einem Visual Basic-Programm

Von: Fabian Baur, Matrikelnummer 156002

und

Daniel Letzgus, Matrikelnummer 156040

Seminararbeit an der Fachhochschule Heilbronn

Studiengang: Wirtschaftsingenieurwesen

Lehrveranstaltung: Ausgewählte Kapitel

der Automatisierungstechnik

Abgabedatum: 15. Dezember 2003

Betreuer: Prof. Dr.-Ing. H. Frank

Page 2: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

2

Inhaltsverzeichnis

1. Einleitung......................................................................................................... 4

2. Konkrete Aufgabenstellung .......................................................................... 5

3. Grundlagen...................................................................................................... 6

3.1 Das TCP/IP – Protokoll ............................................................................ 6

3.1.1 Einordnung in das ISO/OSI - Referenzmodell............................. 6

3.1.2 Das TCP - Protokoll........................................................................... 7

3.1.2.1 Die Phasen einer TCP-Verbindung [7] ................................... 8

Die Einrichtungsphase ......................................................................... 8

Die Datenaustauschphase ................................................................ 10

Die Abschlussphase............................................................................ 10

3.1.3 Das IP – Protokoll ........................................................................... 12

3.2 Das Winsock – Objekt in Visual Basic ................................................ 13

3.2.1 Kurzbeschreibung:.......................................................................... 13

3.2.2 Eigenschaften [104]..................................................................... 14

3.2.3 Ereignisse [6] ................................................................................. 16

3.2.4 Methoden [6].................................................................................. 19

4. Lösung der Aufgabenstellung .................................................................... 25

4.1 Senden von TCP/IP – Telegrammen aus Visual Basic .................... 26

4.1.1 Die Benutzeroberflächen ............................................................... 26

4.1.2 Programmablaufpläne .................................................................... 27

4.1.2.1 Verbindungsaufbau.................................................................. 28

4.1.2.2 Textversand von Server an Client ........................................ 29

4.1.2.3 Textversand von Client an Server ........................................ 30

4.2 Die Protokollanalyse mit „Ethereal“.................................................... 33

Literaturhinweise .............................................................................................. 37

Anhang

Page 3: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

3

Abbildungsverzeichnis Abbildung 3-1: ISO OSI Referenzmodell [2] ................................................................... 7 Abbildung 3-2: Der TCP Header [8] .................................................................................... 8 Abbildung 3-3: Die Einrichtungsphase [7] ....................................................................... 9 Abbildung 3-4: Die Datenaustauschphase [7].............................................................. 10 Abbildung 3-5: Die Abschlussphase [7] .......................................................................... 11 Abbildung 3-6: Der IP Header [8]...................................................................................... 12 Abbildung 3-7: Eigenschaften,Ereignisse und Methoden des Winsock-Objekts

[6] .......................................................................................................................................... 13 Abbildung 4-1: Benutzeroberfläche des Server-Programms .................................. 26 Abbildung 4-2: Benutzeroberfläche des Clientprogramms...................................... 27 Abbildung 4-3: Verbindungsaufbau-Programmablaufplan ...................................... 28 Abbildung 4-4: Datenaustausch-Programmablaufplan (Server Client) .......... 29 Abbildung 4-5: Datenaustausch-Programmablaufplan (Client Server)......... 30 Abbildung 4-6: Kommentierter Quellcode des Server-Programms ...................... 31 Abbildung 4-7: Kommentierter Quellcode des Client-Programms ....................... 32 Abbildung 4-8: TCP-Einrichtungsphase, Synchronisationsaufforderung........... 33 Abbildung 4-9: TCP-Einrichtungsphase, Synchronisationsantwort ..................... 34 Abbildung 4-10: TCP-Einrichtungsphase, Synchronisationsbestätigung........... 35 Abbildung 4-11: TCP-Datenaustauschphase, Datenversand mit

Bestätigungsaufforderung............................................................................................ 35 Abbildung 4-12: TCP-Datenaustauschphase, Empfangsbestätigung................... 36

Tabellenverzeichnis Tabelle 3-1: Einstellungen der Winsock-Protocol-Eigenschaft [6] ...................... 14 Tabelle 3-2: Einstellungen der Winsock-State-Eigenschaft [6]............................. 16 Tabelle 3-3: Einstellungen für die Winsock-Typ-Methode [6]................................ 21 Tabelle 3-4: Die Winsock-Fehlercodes [6] ..................................................................... 24

Page 4: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

4

1. Einleitung

Der Trend hin zu vernetzten Fertigungen ist deutlich zu erkennen und nicht mehr

aufzuhalten.

In der Steuerungs- und Automatisierungstechnik setzt sich in diesem Zuge das

Ethernet immer mehr durch. Oft werden dabei SPS1-Steuerungen über das

Ethernet mit PC´s vernetzt.

Der Transport von Daten über das Ethernet kann mit mehreren verschiedenen

Protokollen vorgenommen werden, welche im ISO2/OSI3–Referenzmodell auf der

vierten Schicht, der Transportschicht, zu finden sind. Die zwei bedeutendsten

dieser Protokolle sind das TCP 4und das UDP 5Protokoll. Der wesentliche

Unterschied besteht in der Verlässlichkeit der Protokolle. Beim TCP–Protokoll

wird nach Erhalt eines Datenpaketes eine Bestätigung versendet. Diese

Bestätigung gibt es beim UDP–Protokoll nicht, was dieses Protokoll unverlässlich

macht. Aus diesem Grund ist bei Anwendungen mit geforderter Verlässlichkeit das

TCP–Protokoll zu verwenden.

1 Speicherprogrammierbare Steuerungen 2 International Standards Organisation 3 Open System Interconnection 4 Transmission Control Protocol 5 User Datagram Protocol

Page 5: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

5

2. Konkrete Aufgabenstellung

Thema dieser Seminararbeit ist das Senden von TCP/IP6-Telegrammen aus

einem Visual Basic (VB)-Programm. Die Ergebnisse dieses Projektes sollen

Grundlage sein für das Vernetzen bzw. die Kommunikation von SPS-Steuerungen.

Im ersten Schritt soll eine Möglichkeit gefunden werden um Telegramme aus

einem VB-Programm über das Ethernet an ein VB-Programm auf einem anderen

PC zu senden.

Im zweiten Schritt soll kontrolliert werden, ob tatsächlich das TCP/IP – Protokoll

verwendet wird und wie die übertragenen Daten im Protokoll dargestellt werden.

6 Internet Protocol

Page 6: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

6

3. Grundlagen In diesem Kapitel werden die, für die Lösung der Aufgabenstellung benötigten,

Grundlagen erklärt.

3.1 Das TCP/IP – Protokoll

Das TCP/IP–Protokoll wird gerne als ein Protokoll verstanden. Tatsächlich sind es

aber zwei Protokolle, das TCP–Protokoll und das IP–Protokoll.

3.1.1 Einordnung in das ISO/OSI - Referenzmodell

„Das ab 1978 von der ISO entwickelte OSI Referenzmodell stellt einen (durchaus

gelungenen) Versuch dar die Kommunikation zwischen

Informationsverarbeitenden Endsystemen auf internationaler Ebene zu

standardisieren.

Die ISO beschreibt in ihrem OSI Standard ein 7 Schichten Modell, in dem jede

Schicht (engl. Layer) seine eigenen speziellen Aufgaben wahrnimmt. Jede Schicht

bietet ihren nächsten beiden Schichten, also der höher und der niedriger

liegenden Schicht ein transparentes Interface an.“ [1]

Das TCP–Protokoll ist im ISO/OSI–Referenzmodell auf der Schicht vier, der

Transportschicht, das IP-Protokoll auf der Schicht drei, der Netzwerkschicht,

angesiedelt (vgl. Abbildung 3-1).

„Die Transportschicht ist für die zuverlässige Datenübermittlung zwischen zwei

Kommunikationspartnern verantwortlich.

Die Netzwerkschicht ist in erster Linie für das Routing zuständig.“ [3]

Page 7: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

7

Abbildung 3-1: ISO OSI Referenzmodell [2]

3.1.2 Das TCP - Protokoll

„TCP ist ein verbindungsorientiertes Transportprotokoll für den Einsatz in

paketvermittelten Netzen. Das Protokoll baut auf dem IP-Protokoll auf, unterstützt

die Funktionen der Transportschicht und stellt vor der Datenübertragung eine

gesicherte Verbindung zwischen den Instanzen her. Die Daten der höheren

Schichten werden durch TCP nicht verändert, sondern lediglich segmentiert und in

einzelnen Datenpaketen versendet. Jedes Oktett (Anm. d. Verf.: Byte) eines

Segments wird von TCP mit einer Sequenznummer versehen, um empfangsseitig

die richtige Reihenfolge zu garantieren.

Die wesentlichen Dienstleistungen, die das TCP-Protokoll in Verbindung mit dem

IP-Protokoll für die Anwendungsprozesse bereitstellt, sind die Ende-zu-Ende-

Kontrolle, das Verbindungs-Management, die Flusskontrolle, die Zeitkontrolle und

das Multiplexen von Verbindungen sowie die Fehlerbehandlung.“ [4]

Page 8: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

8

Die Abbildung 3-2 zeigt den Aufbau des TCP – Protokollkopfs.

Abbildung 3-2: Der TCP Header [8]

Auf ein ausführliche Beschreibung der Felder des TCP – Headers wird an dieser

Stelle verzichtet, jedoch auf den Anhang verwiesen.

3.1.2.1 Die Phasen einer TCP-Verbindung [7]

An einem Beispiel soll exemplarisch der Ablauf einer kompletten

Datenübertragung auf TCP-Ebene gezeigt werden. Dazu wird dieser Ablauf in drei

Phasen, die Einrichtungsphase (vgl. Abbildung 3-3), die Datenaustauschphase

(vgl. Abbildung 3-4) und die Abschlussphase (vgl. Abbildung 3-5) eingeteilt.

Die Einrichtungsphase Auf dem Sendesystem fordert eine Anwendung der höheren Schichten eine

Verbindung zu einem entfernten System an und initiiert damit eine Verbindung auf

TCP-Ebene. Die TCP-Implementierung erzeugt ein Segment und gibt es an die IP-

Schicht weiter, die daraus ein IP-Datagramm erzeugt. Im TCP-Segment ist das

SYN-Flag gesetzt, um dem Empfänger-System zu signalisieren, dass sich die

beiden Systeme auf die gültigen Sequenz- und Bestätigungsnummern einigen

Page 9: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

9

müssen. Das Sende-System trägt seine aktuelle Sequenznummer in das Segment

ein. Die Bestätigung darf nicht eingetragen werden. Das ACK-Flag wird nicht

gesetzt. Das Empfänger-System antwortet mit einem TCP-Segment in dem das

SYN- und das ACK-Flag gesetzt sind. Als Sequenznummer wird der eigene

aktuelle Wert eingetragen. Die Bestätigungsnummer erhält den um Eins erhöhten

Wert der Sequenznummer des gerade empfangenen Segments. Das Sende-

System bestätigt dieses Segment, indem das ACK-Flag gesetzt wird. Die

Bestätigungsnummer enthält die erhöhte Sequenznummer des Empfänger-

Systems.

Damit ist die TCP-Verbindung eingerichtet und die Sequenznummern

ausgetauscht. Beide Stationen sind jetzt bereit, die eigentlichen Daten

auszutauschen.

Abbildung 3-3: Die Einrichtungsphase [7]

Sender EmpfängerNetz

Zeit

SYN=153

ACK=?

SYN=321

ACK=154

SYN=154

ACK=322

SYN 153 kein ACK

SYN 321 ACK 154

ACK 322

Page 10: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

10

Die Datenaustauschphase Um die Zuverlässigkeit einer Datenübertragung zu erhöhen, wird bei einer TCP-

Verbindung jedes gesendete Segment vom Empfänger bestätigt. Das folgende

Beispiel zeigt das einfachste Szenario, dass bei einer Dateübertragung stattfinden

kann.

Abbildung 3-4: Die Datenaustauschphase [7]

Der Sender sendet seine Daten an den Empfänger und erwartet ein Bestätigungs-

Segment. Dabei wird am Sender ein Timer gestartet. Sollte die vorher festgelegt

Zeitgrenze für dir Bestätigung überschritten werden, so werden die Daten vom

Sender erneut gesendet. Nach dem Empfang des Datensegmentes bestätigt dies

der Empfänger mit einem Segment welches ein leeres Datenfeld besitzt. Nachdem

der Sender dieses Bestätigungssegment empfangen hat, ist die Datenübertragung

abgeschlossen.

Die Abschlussphase Möchte eines der beteiligten Systeme die bestehende Verbindung beenden, so

initiiert es die Abschlussphase. Dabei sendet dieses System ein TCP-Segment in

dem das FIN-Flag gesetzt ist. Das andere System bestätigt zuerst den Empfang

mit einem Segment und antwortet dann mit einem zusätzlichen Segment, in dem

Sender EmpfängerNetz

Zeit

Die Daten „xx“ werden gesendet

Empfang wird bestätigt

SEQ=102 ACK=119 Data=xx

SEQ=119 ACK=103

Page 11: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

11

ebenfalls das FIN-Flag gesetzt ist. Auch dieses Segment muß vom Sender noch

einmal bestätigt werden.

Abbildung 3-5: Die Abschlussphase [7]

Die Verbindung wird nicht als geschlossen betrachte, solange nicht beide Systeme

Segment, in denen das FIN-Flag gesetzt ist, gesendet und den Empfang der FIN-

Segmente bestätigt haben. Falls in dieser Phase Segmente verloren gehen, wird

die Verbindung nach Ablauf eines Timeout als getrennt betrachtet

Sender EmpfängerNetz

Zeit

SEQ=306 ACK=517 FIN

ACK 307

ACK=518

SEQ=517 ACK=307 FIN

Page 12: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

12

3.1.3 Das IP – Protokoll

„Die Aufgabe des Internet-Protokolls (IP) besteht darin, Datenpakete von einem

Sender über mehrere Netze hinweg zu einem Empfänger zu transportieren. Die

Übertragung ist paketorientiert, verbindungslos und nicht garantiert. IP garantiert

weder die Einhaltung einer bestimmten Reihenfolge noch eine Ablieferung beim

Empfänger. Empfangsquittungen gibt es auf IP-Schicht nicht. Die maximale Länge

von IP-Datenpaketen ist auf 65.535 Bytes beschränkt.

Da das Internet-Protokoll auf der Vermittlungsschicht aufsetzt und diese für das

IP-Routing durch ein Netzwerk zuständig ist, erlaubt das Protokoll auch die

Identifikation von Stationen anhand der IP-Adresse. Damit die Datenpakete nicht

unendlich durch das Netz irren und dieses verkehrsmäßig belasten, hat der IP-

Header ein Time-to-Live-Feld (TTL), in dem die Lebensdauer eines Datagramms

festgelegt wird. Dieses Feld setzt die Zeitdauer fest, nach der ein Datenpaket

verworfen wird.“ [4]

Die Abbildung 3-6 zeigt den Header des IP – Protokolls.

Abbildung 3-6: Der IP Header [8]

Auf ein ausführliche Beschreibung der Felder des IP – Headers wird an dieser

Stelle verzichtet, jedoch auf den Anhang verwiesen.

Page 13: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

13

3.2 Das Winsock – Objekt in Visual Basic

Zur Lösung der Aufgabenstellung wird das Visual Basic–Steuerelement „Winsock“

verwendet.

3.2.1 Kurzbeschreibung:

„Das Winsock-Steuerelement vereinfacht die Kommunikation zwischen PCs unter

VB erheblich. Es fasst alle TCP/IP-Befehle der API 7von Windows in einem Control

zusammen. Winsock beherrscht auch das Protokoll UDP.“ [5]

In folgender Abbildung ist eine Übersicht über die Eigenschaften, Ereignisse und

Methoden des Winsock – Objekts dargestellt.

Eigenschaften BytesReceived

LocalHostName

LocalIP

LocalPort

Protocol

RemoteHost

RemoteHostIP

RemotePort

SocketHandle

State

Ereignisse Close [Ereignis]

Connect [Ereignis]

ConnectionRequest

DataArrival

Error

SendComplete

SendProgress

Methoden

Accept

Bind

Close

Connect

GetData

Listen

PeekData

SendData

Abbildung 3-7: Eigenschaften,Ereignisse und Methoden des Winsock-Objekts [6]

7 Application Programming Interface

Page 14: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

14

3.2.2 Eigenschaften [104]

In diesem Kapitel werden die verwendeten Eigenschaften des Winsock-Objekts

beschrieben. Für Beschreibungen aller Eigenschaften des Winsock-Objekts wird

auf den Anhang verwiesen.

a) LocalPort (Long): Gibt den zu verwendenden lokalen Anschluß zurück oder legt diesen fest. Zur

Entwurfszeit nicht verfügbar.

b) Protocol: Gibt das Protokoll zurück oder legt dieses fest, entweder TCP oder UDP, daß vom

Winsock-Steuerelement verwendet wird.

Die möglichen Protokoll-Einstellungen sind in Tabelle 3-1 dargestellt.

Konstante Wert Beschreibung

sckTCPProtocol 0 Voreinstellung. TCP-Protokoll.

sckUDPProtocol 1 UDP-Protokoll.

Tabelle 3-1: Einstellungen der Winsock-Protocol-Eigenschaft [6]

Anmerkung

Da standardmäßig das TCP – Protokoll eingestellt ist, konnte auf die Verwendung

dieser Eigenschaft verzichtet werden.

c) RemoteHost (String): Gibt den Remote-Computer zurück, an den ein Steuerelement Daten sendet oder

von dem es Daten erhält, oder legt ihn fest. Man kann entweder einen Host-

Namen bereitstellen, z.B. "FTP://ftp.microsoft.com", oder eine IP-

Adressenzeichenfolge im Format mit Punkten, wie z.B. "100.0.1.1".

Anmerkungen:

Wird diese Eigenschaft angegeben, so wird die URL-Eigenschaft aktualisiert, um

den neuen Wert anzuzeigen. Diese Eigenschaft wird auch dann aktualisiert, um

den neuen Wert wiederzugeben, wenn der Host-Bereich des URLs aktualisiert

wird.

Page 15: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

15

Die RemoteHost-Eigenschaft kann auch durch den Aufruf der OpenURL- oder

Execute-Methoden geändert werden.

Zur Laufzeit hat die Änderung dieses Wertes keine Auswirkung bis zur nächsten

Verbindung.

d) RemoteHostIP (String): Gibt die IP-Adresse des Remote-Computers zurück.

• Für Client-Anwendungen enthält diese Eigenschaft die IP-Zeichenfolge des

Remote-Computers, nachdem eine Verbindung über die Connect-Methode

eingerichtet wurde

• Für Server-Anwendungen enthält diese Eigenschaft nach einer

eingehenden Verbindungsanforderung (ConnectionRequest-Ereignis) die

IP-Zeichenfolge des Remote-Computers, der die Verbindung hergestellt

hat.

• Bei Verwendung des UDP-Protokolls enthält diese Eigenschaft die IP-

Adresse des Rechners, der die UDP-Daten gesendet hat, nachdem das

DataArrival-Ereignis aufgetreten ist.

e) RemotePort (Long): Gibt die Netzanschlussnummer zurück oder stellt diese ein, mit der die

Verbindung aufgebaut werden soll.

Anmerkungen

Wenn man die Protocol-Eigenschaft festlegt, wird die RemotePort-Eigenschaft

automatisch auf den passenden Standardanschluss für jedes Protokoll festgelegt.

f) State (Integer): Gibt den Status des Steuerelements als numerische Konstante zurück. Die

Eigenschaft ist schreibgeschützt und zur Entwurfszeit nicht verfügbar.

Die möglichen Einstellungen für die State-Eigenschaft sind in Tabelle 3-2

aufgeführt.

Page 16: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

16

Konstante Wert Beschreibung

sckClosed 0 Voreinstellung.

Geschlossen

sckOpen 1 Geöffnet

sckListening 2 Überwachen

sckConnectionPending 3 Verbindung

anstehend

sckResolvingHost 4 Host-Name wird

aufgelöst

sckHostResolved 5 Host-Name wurde

aufgelöst

sckConnecting 6 Verbinden

sckConnected 7 Verbunden

sckClosing 8 Partner schließt die

Verbindung

sckError 9 Fehler

Tabelle 3-2: Einstellungen der Winsock-State-Eigenschaft [6]

3.2.3 Ereignisse [6]

In diesem Kapitel werden die verwendeten Ereignisse des Winsock-Objekts

beschrieben. Für Beschreibungen aller Ereignisse des Winsock-Objekts wird auf

den Anhang verwiesen.

a) Close [Ereignis]: Tritt ein, wenn der Remote-Computer die Verbindung beendet. Anwendungen

sollten die Close-Methode zur korrekten Beendigung einer TCP-Verbindung

verwenden.

Syntax: Winsock_Close ()

Page 17: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

17

b) Connect [Ereignis] Tritt auf, nachdem eine Verbindung zum Server aufgebaut wurde.

Syntax: Winsock_Connect ()

Anmerkungen

Man kann das Connect-Ereignis abfangen und jede Art von anfänglichen Abfragen

durchführen, die für eine neue Verbindung erforderlich sind, zum Beispiel den

Vergleich der Datenbankversion mit der Version des Clients oder die Einstellung

einer Standard-Datenbank, die in der Verbindungszeichenfolge nicht angegeben

ist. Man kann auch prüfen, ob während des Verbindungsaufbaus Fehler oder

Meldungen zurückgegeben wurden, oder auch nur die Informationsmeldungen aus

der rdoErrors-Auflistung (vgl. Tabelle 3-4) löschen.

c) ConnectionRequest: Tritt ein, wenn ein Remote-Computer eine Verbindung anfordert.

Nur für TCP-Server-Anwendungen. Das Ereignis tritt ein, wenn eine

Verbindungsanforderung eingeht. Die Eigenschaften RemoteHostIP und

RemotePort speichern die Informationen über den Client, nachdem das Ereignis

aktiviert wurde.

Syntax: Winsock_ConnectionRequest (AnforderungsID As Long)

AnforderungsID:

Der eingehende Bezeichner der Verbindungsanforderung. Dieses Argument

sollte der Accept-Methode in der zweiten Steuerelementinstanz übergeben

werden.

Anmerkungen:

Der Server kann entscheiden, ob die Verbindung akzeptiert wird oder nicht. Wird

die eingehende Verbindung nicht akzeptiert, so erhält der Partner (Client) das

Close-Ereignis. Um eine eingehende Verbindung zu akzeptieren, verwendet man

die Accept-Methode (in einer neuen Steuerelementinstanz).

d) DataArrival Tritt ein, wenn neue Daten ankommen.

Syntax: Winsock_DataArrival (AnzahlBytes As Long)

Page 18: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

18

AnzahlBytes

Die Gesamtmenge der Daten, die abgerufen werden können.

Anmerkungen:

Dieses Ereignis tritt nicht ein, wenn man nicht alle Daten in einem einzigen

GetData-Aufruf anfordert. Es wird nur ausgelöst, wenn neue Daten vorhanden

sind. Um zu überprüfen wie viele Daten jeweils verfügbar sind verwendet man die

BytesReceived-Eigenschaft

e) Error: Tritt immer dann ein, wenn ein Fehler bei der Hintergrundverarbeitung auftritt (z.B.

ein Verbindungsfehler oder ein Fehler beim Senden oder Abrufen von Daten im

Hintergrund).

Syntax: Winsock_Error(Zahl As Integer, Beschreibung As String, Scode As

Long, Quelle As String, Hilfedatei as String, Hilfekontext As Long,

AnzeigeAbbrechen As Boolean)

Zahl

Eine Ganzzahl, die den Fehler-Code angibt. (vgl. Tabelle 3-4)

Beschreibung

Eine Zeichenfolge, die den Fehler beschreibt.

Scode

Der SCODE.

Quelle

Eine Zeichenfolge, die die Fehlerquelle beschreibt.

Hilfedatei

Eine Zeichenfolge, die den Dateinamen einer Hilfedatei angibt.

Hilfekontext

Hilfekontext.

AnzeigeAbbrechen

Gibt an, ob die Anzeige abgebrochen werden soll. Die Voreinstellung ist

False, d.h., das Standard-Fehlermeldungsfeld wird angezeigt. Wenn man

das Standard-Meldungsfeld nicht verwenden nöchte, muss man

AnzeigeAbbrechen auf True setzen.

Page 19: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

19

f) SendComplete: Tritt ein, wenn eine Senden-Operation beendet wurde

Syntax: Winsock_SendComplete

g) SendProgress: Tritt ein, während Daten gesendet werden.

Syntax: Winsock_SendProgress (gesendeteBytes As Long,

zuSendendeBytes As Long)

gesendeteBytes

Die Anzahl der Bytes, die seit der letzten Aktivierung dieses Ereignisses

gesendet wurden.

zuSendendeBytes

Die Anzahl der Bytes im Puffer, die noch gesendet werden sollen.

3.2.4 Methoden [6]

In diesem Kapitel werden die verwendeten Methoden des Winsock-Objekts

beschrieben. Für Beschreibungen aller Methoden des Winsock-Objekts wird auf

den Anhang verwiesen.

a) Accept: Nur für TCP-Server-Anwendungen. Diese Methode wird dazu verwendet, eine

eingehende Verbindung zu akzeptieren, während ein ConnectionRequest-Ereignis

behandelt wird.

Syntax: Winsock.Accept AnfrageID

Anmerkungen

Die Accept-Methode wird im ConnectionRequest-Ereignis verwendet. Das

ConnectionRequest-Ereignis verfügt über ein entsprechendes Argument, den

Parameter AnforderungsID, der an die Accept-Methode übergeben werden sollte.

b) Close [Methode] Schließt eine TCP-Verbindung oder einen überwachenden Socket für Client- und

Page 20: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

20

Server-Anwendungen.

Syntax: Winsock.Close

c) Connect [Methode] Stellt eine Verbindung zu einem Server her.

Syntax: Winsock.Connect [RemoteHost], [RemotePort]

d) RemoteHost IP-Adresse oder Hostname (wird automatisch aufgelöst) des Remote-Computers.

e) RemotePort Legt die Netzanschlußnummer fest.

Anmerkungen

Wenn die Eigenschaften RemoteHost und RemotePort gesetzt wurden, können

die Argumente weggelassen werden.

f) GetData: Ruft den aktuellen Datenblock ab und speichert diesen in einer Variablen vom Typ

Variant.

Syntax: Winsock.GetData Daten, [Typ,] [maxLänge]

Daten

Enthält die abgerufenen Daten, nachdem die Methode erfolgreich

zurückgegeben wurde. Sind nicht genügend Daten für den angeforderten

Typ verfügbar, so wird Daten auf Empty gesetzt.

Typ

Optional. Typ der abzurufenden Daten, wie unter Einstellungen (vgl.Tabelle

3-3) beschrieben.

maxLänge

Optional. Gibt die gewünschte Größe an, wenn ein Byte-Datenfeld oder

eine Zeichenfolge abgerufen wird. Fehlt dieses Argument für ein Byte-

Datenfeld oder eine Zeichenfolge, so werden alle verfügbaren Daten

Page 21: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

21

abgerufen. Wird dieses Argument für andere Datentypen als Byte-

Datenfelder und Zeichenfolgen bereitgestellt, so wird es ignoriert.

Datentyp Konstante

Byte vbByte

Integer vbInteger

Long vbLong

Single vbSingle

Double vbDouble

Currency vbCurrency

Date vbDate

Boolean vbBoolean

Long (Fehler-Code) vbError

String vbString

Byte-Datenfeld vbArray + vbByte

Tabelle 3-3: Einstellungen für die Winsock-Typ-Methode [6]

Anmerkungen

Gewöhnlich wird die GetData-Methode mit dem DataArrival-Ereignis verwendet,

welches das Argument AnzahlBytes beinhaltet. Wenn man eine maxLänge kleiner

als AnzahlBytes angeben, erhält man die Warnung 10040, die angibt, daß die

verbleibenden Bytes verlorengehen.

g) Listen Erstellt einen Socket und setzt diesen in den Überwachen-Modus. Diese Methode

funktioniert nur bei TCP-Verbindungen. Die Eigenschaft LocalPort sollte zuerst

gesetzt werden.

Syntax: Winsock.Listen

Anmerkungen

Das ConnectionRequest-Ereignis tritt ein, wenn eine Verbindung angefordert wird.

Bei der Behandlung des ConnectionRequest-Ereignisses sollte die Anwendung

Page 22: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

22

die Accept-Methode verwenden (in einer neuen Instanz des Steuerelements), um

die Verbindung zu akzeptieren.

h) SendData: Sendet Daten an einen Remote-Computer.

Syntax: Winsock.SendData Daten

i) Daten Zu sendende Daten. Für binäre Daten sollten Byte-Datenfelder verwendet

werden.

Page 23: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

23

j) Die Winsock - Fehlercodes In der Tabelle 3-4 sind die möglichen Fehlercodes des Winsock-Objekts

dargestellt.

Konstante Wert Beschreibung

sckOutOfMemory 7 Nicht genügend Speicher

sckInvalidPropertyValue 380 Der Eigenschaftswert ist ungültig

sckGetNotSupported 394 Die Eigenschaft kann nicht gelesen werden

sckSetNotSupported 383 Die Eigenschaft ist schreibgeschützt

sckBadState 40006 Falsches Protokoll oder falscher Verbindungszustand für die

angeforderte Transaktion oder Anforderung

sckInvalidArg 40014

Das an eine Funktion übergebene Argument war nicht im

richtigen Format oder hatte keinen Wert im angegebenen

Bereich

sckSuccess 40017 Erfolgreich

sckUnsupported 40018 Nicht unterstützter Variant-Typ

sckInvalidOp 40020 Ungültige Operation für den aktuellen Zustand

sckOutOfRange 40021 Argument liegt außerhalb des zulässigen Bereichs

sckWrongProtocol 40026 Falsches Protokoll für die angeforderte Transaktion oder

Anforderung

sckOpCanceled 1004 Die Operation wurde abgebrochen

sckInvalidArgument 10014 Die angeforderte Adresse ist eine Broadcast-Adresse, aber das

Attribut wurde nicht gesetzt

sckWouldBlock 10035 Socket erlaubt keine Blockierungen, und die angegebene

Operation hat eine Blockierung zur Folge

sckInProgress 10036 Momentan wird eine blockierende Winsock-Operation

ausgeführt

sckAlreadyComplete 10037 Die Operation ist abgeschlossen. Momentan wird keine

blockierende Operation durchgeführt

sckNotSocket 10038 Der Deskriptor ist kein Socket

sckMsgTooBig 10040 Das Datagramm ist zu groß für den Puffer und wird

abgeschnitten

sckPortNotSupported 10043 Der angegebene Anschluß wird nicht unterstützt

sckAddressInUse 10048 Adresse wird bereits verwendet

sckAddressNotAvailable 10049 Adresse steht vom lokalen Computer aus nicht zur Verfügung

sckNetworkSubsystemFailed 10050 Netzwerk-Subsystem fehlgeschlagen

sckNetworkUnreachable 10051 Das Netzwerk ist von diesem Host aus zur Zeit nicht erreichbar

Page 24: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

24

sckNetReset 10052 Zeitüberschreitung für Verbindung, wenn SO_KEEPALIVE

gesetzt ist

sckConnectAborted 11053 Verbindung wurde aufgrund einer Zeitüberschreitung oder

eines anderen Fehlers getrennt

sckConnectionReset 10054 Die Verbindung wurde vom Remote-Computer zurückgesetzt

sckNoBufferSpace 10055 Kein Pufferspeicher verfügbar

sckAlreadyConnected 10056 Socket ist bereits verbunden

sckNotConnected 10057 Socket ist nicht verbunden

sckSocketShutdown 10058 Socket wurde heruntergefahren

sckTimedout 10060 Socket hat eine Zeitüberschreitung verursacht

sckConnectionRefused 10061 Herstellen der Verbindung wird absichtlich verweigert

sckNotInitialized 10093 WinsockInit muß zuerst aufgerufen werden

sckHostNotFound 11001 Autorisierte Antwort: Host nicht gefunden

sckHostNotFoundTryAgain 11002 Nicht autorisierte Antwort: Host nicht gefunden

sckNonRecoverableError 11003 Nicht behebbare Fehler; Fortsetzung nicht möglich

sckNoData 11004 Gültiger Name; kein Datensatz des angeforderten Typs

Tabelle 3-4: Die Winsock-Fehlercodes [6]

Page 25: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

25

4. Lösung der Aufgabenstellung Wie in der Aufgabenstellung (vgl. Kapitel 2) erwähnt, ist die Aufgabe in zwei Teile

untergliedert:

• Senden von TCP/IP – Telegrammen aus einem Visual Basic –

Programm

• Analyse der Protokolle des Datenverkehrs

Zur Realisierung wurden folgende Geräte und Programme benutzt

• 1 Laptop, Betriessystem WinXP, 2,2 GHz – Prozessor, 512 MB RAM,

incl. einer PCMCIA-Wlan Karte, IP-Adresse 192.168.1.10; im folgenden

als PC1 bezeichnet.

• 1 Laptop, Betriebssystem Win2000, 400MHz – Prozessor, 192 MB

RAM, incl. einer PCMCIA-Wlan Karte, IP-Adresse 192.168.1.11; im

folgenden als PC2 bezeichnet.

• 1 Wlan-Switch, 11mBits/s, Marke DrayTek

• Das Programm Visual Basic Studio zur Erstellung der benötigten Visual

Basic Programme. Installiert auf dem PC1.

• Das Programm EtheReal zur Analyse des Datenflusses

Netzwerkverkehres. Installiert auf dem PC2.

Anmerkung:

Die Datei mswinsck.ocx musste auf dem PC2 noch in das Verzeichnis

C:\Winnt\system32 kopiert werden. Dazu wurde die Datei aus dem Internet

heruntergeladen.

Page 26: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

26

4.1 Senden von TCP/IP – Telegrammen aus Visual Basic

Zum Senden der Telegramme wurden zwei Programme in Visual Basic erstellt.

Das eine wird im folgenden als Server – Programm, das andere als Client –

Programm bezeichnet. Das Server – Programm wird auf PC1 ausgeführt, das

Client – Programm auf PC2.

Die Funktion der Programme besteht darin, einen, in ein Eingabefeld

eingegebenen, Text über das Ethernet in das Textausgabefeld des anderen

Programms, auf dem anderen PC, zu schreiben.

4.1.1 Die Benutzeroberflächen

Zur Ein- und Ausgabe des Textes haben beide Programme eine

Benutzeroberfläche, welche in den beiden folgenden Abbildungen dargestellt sind.

(vgl. Abbildungen 4-1 und 4-2)

Abbildung 4-1: Benutzeroberfläche des Server-Programms

Textausgabefeld

Texteingabefeld

Page 27: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

27

Abbildung 4-2: Benutzeroberfläche des Clientprogramms

Gibt der Anwender des Serverprogramms einen Text in sein Eingabefeld ein und

betätigt dann den „Senden“-Button wird der Text an das Client-Programm, auf der

Client-Seite, übertragen. In diesem Client-Programm wird der Text in das

Textausgabefeld geschrieben. Um die Kommunikation nachvollziehen zu können,

wird der Text auch im Textausgabefeld des Server-Programms angezeigt.

Nach dem gleichen Prinzip funktioniert auch der Text-Versand vom Client-

Programm zum Server-Programm.

4.1.2 Programmablaufpläne

Die Aufgaben der Programme lassen sich in drei Bereiche aufteilen:

• Verbindungsaufbau (vgl. Abbildung 4-3)

• Text von Server/Client an Client/Server senden (vgl. Abbildungen 4-4

und 4-5)

• Text von Client bzw. Server empfangen (vgl. Abbildungen 4-4 und 4-5)

Zur Umsetzung dieser Aufgaben wird insbesondere das Winsock – Objekt (siehe

Kapitel 3.2) benutzt.

Textausgabefeld

Texteingabefeld

Page 28: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

28

In den folgenden drei Programmablaufplänen wird der Einsatz des Winsock –

Objektes, seiner Eigenschaften, seiner Ereignisse und seiner Methoden

dargestellt.

4.1.2.1 Verbindungsaufbau

In diesem Programmablaufplan (vgl. Abbildung 4-3) ist der Verbindungsaufbau

zwischen den beiden Programmen dargestellt, sowie die Ausgaben in den

jeweiligen Textausgabefeldern SrvEtxt und CltEtxt.

Abbildung 4-3: Verbindungsaufbau-Programmablaufplan

Client – Seite (PC2) Server – Seite (PC1)

Server-Programm starten

Form_Load()

Winsock.LocalPort = „85“

WinSock.Listen

SrvEtxt.Text = „Winsock initialiert“

SrvEtxt.SelStart = Len(SrvEtxt.Text)

Client-Programm starten

Programmablaufplan

Form_Load()

Winsock.RemoteHost = „192.168.1.10“

WinSock.RemotePort = „85“

Wincok.Connect

CltEtxt.Text = „Winsock initialisiertWinsock_ConnectionRequest(ByVal request ID as Long)

Winsock.Close

WinSock.Accept requestIDWinsock_Connect()

CltEtxt.Text = CltEtxt.Text & vbCrlf & „Client verbunden mit Server“

Ver

bind

ungs

aufb

au

Legende- Eigenschaften - Ereignisse - Methoden

Page 29: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

29

4.1.2.2 Textversand von Server an Client

In diesem Programmablaufplan (siehe Abbildung 4-4) ist das Senden von Text

vom Serverprogramm zum Clientprogramm dargestellt, sowie die Ausgaben in

den jeweiligen Textausgabefeldern SrvEtxt und CltEtxt.

Client – Seite (PC2) Server – Seite (PC1)

Text im Eingabefenster eingeben und auf „senden“ drücken

SrvSenden_Click()

if Winsock.State <> 0 And Winsock.Stat <> 2 then

SrvEtxt.text = SrvEtxt & vbCrlf & „Server:“ & SrvStxt.Text

SrvEtxt.SelStart = Len (SrvEtxt.Text)

WinSock.SendData SrvStxt.Text

SrvStxt.Text = „“

Programmablaufplan

Winsock_DataArrival (ByVal bytesTotal as Long)

Dim Daten as String

Winsock.GetData Daten

CltEtxt.Text = CltEtxt.Text & vbCrlf & „Server (“ & Winsock.RemoteHost & „) : & Daten

CltEtxt.SelStart = Len(CltEtxt.Text)

Text

von

Ser

ver a

n C

lient

sen

den

Legende- Eigenschaften - Ereignisse - Methoden

Abbildung 4-4: Datenaustausch-Programmablaufplan (Server Client)

Page 30: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

30

4.1.2.3 Textversand von Client an Server

In diesem Programmablaufplan (siehe Abbildung 4-5) ist das Senden von Text

vom Clientprogramm zum Serverprogramm dargestellt, sowie die Ausgaben in

den jeweiligen Textausgabefeldern SrvEtxt und CltEtxt.

Client – Seite (PC2) Server – Seite (PC1)

Programmablaufplan

Text

von

Clie

nt a

n S

erve

r sen

den Text im Eingabefenster eingeben

und auf „senden“ drücken

CltSenden_Click()

if Winsock.State <> 0 And Winsock.State <> 2 then

CltEtxt.text = CltEtxt & vbCrlf & „Client:“ & CltStxt.Text

CltEtxt.SelStart = Len (CltEtxt.Text)

WinSock.SendDataCltStxt.Text

CltStxt.Text = „“

Winsock_DataArrival (ByVal bytesTotal as Long)

Dim Daten as String

Winsock.GetData Daten

SrvEtxt.Text = SrvEtxt.Text & vbCrlf & „Client (“ & Winsock.RemoteHostIP& „) : & Daten

SrvEtxt.SelStart = Len(SrvEtxt.Text)

Legende- Eigenschaften - Ereignisse - Methoden

Abbildung 4-5: Datenaustausch-Programmablaufplan (Client Server)

4.1.3 Der Quellcode

In diesem Kapitel sind die Quellcodes der beiden Programme kommentiert

dargestellt. (vgl. Abbildungen 4-6 und 4-7)

Bei der Programmierung der Bedienoberflächenformulare ist darauf zu achten,

dass man in diese das Winsock-Steuerelement einbettet. Zu finden ist das

Steuerelement im Menü Projekt Komponenten Register „Steuerelement“.

Page 31: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

31

In diesem Register „Microsoft Winsock Control 6.0“ auswählen und mit OK

bestätigen. Im nächsten Schritt muss das Winsock-Icon, welches nun in der

Steuerelement-Toolbox zu finden ist, auf das Formular per „Drag & Drop“ gezogen

werden.

Abbildung 4-6: Kommentierter Quellcode des Server-Programms

In der Abbildung 4-6 ist der Quellcode des Serverprogrammes dargestellt. Die

Kommentare der einzelnen Befehle sind in grüner Schrift.

Page 32: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

32

Abbildung 4-7: Kommentierter Quellcode des Client-Programms

In der Abbildung 4-7 ist der Quellcode des Clientprogrammes dargestellt. Die

Kommentare der einzelnen Befehle sind in grüner Schrift.

Page 33: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

33

4.2 Die Protokollanalyse mit „Ethereal“

Der zweite Teil der Aufgabenstellung ist die Analyse des Datenverkehres beim

Senden eines Textes.

Dazu wird auf dem PC2 das Programm Ethereal („The Ethereal Network

Analyzer“) installiert. Mit Hilfe dieses Programms kann der Verkehr auf dem

Netzwerk aufgezeichnet und anschließend betrachtet werden.

Für das Aufbauen der Verbindung zwischen den beiden Programmen bzw. PC´s

und das Senden des Textes „hallo fabian“ ist in den Abbildungen 4-8 bis 4-12 der

Datenverkehr auf dem Netzwerk dargestellt

Abbildung 4-8: TCP-Einrichtungsphase, Synchronisationsaufforderung

In Abbildung 4-8 ist der Beginn der Einrichtungsphase (vgl. Kapitel 3.1.2.1)

dargestellt. Diese wird durch den Programmstart des Clients begonnen. Der Client

Page 34: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

34

sendet dabei ein TCP-Segment in dem das SYN-Flag gesetzt und das ACK-Flag

nicht gesetzt ist.

Abbildung 4-9: TCP-Einrichtungsphase, Synchronisationsantwort

In Abbildung 4-9 ist Antwort des Serverprogramms auf die

Synchronisationsaufforderung des Clientprogramms dargestellt. Hierbei antwortet

der Server mit einem TCP-Segment in dem das SYN- und das ACK-Flag gesetzt

sind. (vgl. Kapitel 3.1.2.1)

In Abbildung 4-10 ist die Bestätigung des soeben erhaltenen TCP-Segments

dargestellt. Zur Bestätigung ist in diesem TCP-Segment das ACK-Flag gesetzt.

Damit ist die TCP-Verbindung eingerichtet und die Synchronisation

abgeschlossen. (vgl. Kapitel 3.1.2.1)

Page 35: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

35

Abbildung 4-10: TCP-Einrichtungsphase, Synchronisationsbestätigung

Abbildung 4-11: TCP-Datenaustauschphase, Datenversand mit Bestätigungsaufforderung

In Abbildung 4-11 ist der Beginn der Datenaustauschphase dargestellt. Der Client

sendet das TCP-Segment mit den Daten zum Server und erwartet dann eine

Empfangsbestätigung des Servers (vgl. Abbildung 4-12). Die Daten (hier: der Text

Page 36: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

36

„hallo fabian“) sind in der Abbildung 4-11 rot unterstrichen. Der Datenblock ist 12

Bytes groß (11 Buchstaben und eine Leerzeichen) und, wie in der linken Seite der

Abbildung zu sehen, hexadezimal dargestellt.

Abbildung 4-12: TCP-Datenaustauschphase, Empfangsbestätigung

In Abbildung 4-12 ist das TCP-Segment mit der Empfangsbestätigung des Servers

dargestellt. Hat der Client dieses TCP-Segment empfangen, ist die

Datenübertragung abgeschlossen. (vgl. Kapitel 3.1.2.1)

Page 37: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

37

Literaturhinweise [1] Daniel Baulig:

ISO OSI Referenzmodell

http://ip-web.hn.org/osi-referat/

(eingesehen am 08.12.2003)

[2] N.N.

Das ISO/OSI Refernmodell

www.fh-wedel.de

(eingesehen am 07.11.2003)

[3] N.N.

Schichtenmodelle

http://www.tecchannel.de/tecspecial1/artikel/so_funktioniert_tcp_ip/0.html

(eingesehen am 08.12.2003)

[4] N.N.

Siemens AG Lexikon

www.siemens.de

(eingesehen am 08.12.2003)

[5] N.N.

VB – Magazin: Der Anfänger-Guide zu Visual Basic

http://www.vb-magazin.de/new/contentid-66.html

(eingesehen am 08.12.2003)

[6] N.N.

VB – Magazin: Der Anfänger-Guide zu Visual Basic

http://www.vb-magazin.de/new/contentid-69.html

(eingesehen am 08.12.2003)

[7] Volker Schüppel

Entwicklung einer Client-/Server-Applikation zum Informationsaustausch

von Systemdaten zwischen entfernten Systemen, 1999

RVHR-Universität Bochum, Diplomarbeit

http://www.etdv.ruhr-uni-bochum.de/dv/diplomarbeiten/d341/d341.pdf

(eingesehen am 10.12.2003)

Page 38: Senden von TCP/IP-Telegrammen aus einem Visual Basic · PDF fileSenden von TCP/IP Telegrammen aus einem Visual Basic-Programm 6 3. Grundlagen In diesem Kapitel werden die, für die

Senden von TCP/IP Telegrammen aus einem Visual Basic-Programm

38

[8] Heiko Holtkamp

Einführung in TCP/IP

Technische Fakultät, Universität Bielefeld

http://www.rvs.uni-bielefeld.de/~heiko/tcpip/kap_2_3.html#ip

(eingesehen am 10.12.2003)