31.10.2013 Aufrufe

Aufgabe 2 - FH Wedel - Studenten Homepages der FH-Wedel

Aufgabe 2 - FH Wedel - Studenten Homepages der FH-Wedel

Aufgabe 2 - FH Wedel - Studenten Homepages der FH-Wedel

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.

Arbeitsbogen P1<br />

Praktikum Rechnernetze<br />

im Sommersemester 2011<br />

Themenschwerpunkte:<br />

„Netzwerkprogrammierung (Delphi 2010)“<br />

Version 1.00<br />

Gruppenteilnehmer:<br />

1. Name & Matr.Nr.: ___________________________________<br />

Festplattenname:<br />

___________________________________<br />

Zum Abschluss <strong>der</strong> Veranstaltung soll thematisch passend noch ein eigenes Programm<br />

erstellt werden, das sich mit <strong>der</strong> IP-Kommunikation in Netzen beschäftigt.<br />

Die Realisierung einer verteilten Anwendung mittels <strong>der</strong> Socket-Kommunikation, hier unter<br />

Nutzung des IPv4, wird häufig bereits im Rahmen des Programmierpraktikums (speziell den<br />

OOP/Java-Übungen) quasi vorgezogen. Ein Vorteil von Java ist hier die deutliche<br />

Abstrahierung <strong>der</strong> Socket-Funktionalität. Daher wollen wir in dieser <strong>Aufgabe</strong>nstellung einen<br />

etwas an<strong>der</strong>en Schwerpunkt bei <strong>der</strong> Betrachtung setzen.<br />

Insgesamt stehen Ihnen drei verschiedene <strong>Aufgabe</strong>nstellungen, mit jeweils unterschiedlichen<br />

Themenschwerpunkten, zur Auswahl, aus denen sich je<strong>der</strong> Teilnehmer seinen persönlichen<br />

<strong>Aufgabe</strong>ntyp heraus suchen kann.


Inhaltsübersicht<br />

1. Allgemeine Hinweise zur <strong>Aufgabe</strong><br />

2. <strong>Aufgabe</strong> zur Netzwerkprogrammierung unter Delphi<br />

2.1 Installation von Delphi 2010<br />

2.2 Nutzung weiterer Monitoring-Komponenten<br />

2.2.1 Installation <strong>der</strong> Komponenten-Software<br />

2.2.2 Übersetzung <strong>der</strong> Demo-Anwendungen<br />

2.3 Erläuterung <strong>der</strong> Delphi-<strong>Aufgabe</strong>nstellung<br />

3. Alternative <strong>Aufgabe</strong>nstellungen<br />

3.1 Realisierung einer Packet-Dump Anwendung (Linux)<br />

3.2 Realisierung einer Client-Server Anwendung (Windows, Linux)<br />

4.0 Hinweise zur Durchführung, Abgabe und Dokumentation


1. Allgemeine Hinweise<br />

Die Zielsetzung dieser abschließenden <strong>Aufgabe</strong>nstellung soll es sein, sich auch einmal mit<br />

den internen Abläufen <strong>der</strong> IP- Kommunikation innerhalb einer Anwendung zu beschäftigen.<br />

Die Softwareerstellung unter Nutzung einer grafischen Desktop-Oberfläche, wie z.B.<br />

Windows (Workstation, Server), lässt sich wohl am einfachsten mit einer <strong>der</strong> bekannten<br />

komponentenorientieren Entwicklungsoberflächen, den RAD-Tools Delphi 2010 o<strong>der</strong> auch<br />

Visual Studio 2010 (Rapid Application Development) realisieren.<br />

Allerdings liegt gerade die Delphi-Programmierung (unter Windows) bei dem einen o<strong>der</strong><br />

an<strong>der</strong>en Teilnehmer doch schon etwas zurück, so dass es auch zwei alternative<br />

Themenstellungen gibt.<br />

Es stehen diese drei <strong>Aufgabe</strong>nstellungen zur Auswahl:<br />

<br />

Modifikation einer bestehenden Prototypen-Anwendung zur Aufzeichnung und<br />

Darstellung des Netzwerk-Traffics (einfacher LAN-Analyzer) unter Windows.<br />

Die Aufzeichnung des Datenverkehrs unter Windows erfolgt hierbei unter Nutzung eines<br />

speziellen Windows Packet Capture Driver „WinPcap“ (www.winpcap.org/) für die<br />

Netzwerkinterfaces, <strong>der</strong> dann den Anwendungen alle sichtbaren Datenpaket komplett<br />

(inkl. Layer-2/IP-Hea<strong>der</strong>) zur eigenen Auswertung bereitstellt.<br />

Als weiteres Hilfsmittel sollen unter Delphi die kostenfreien Monitoring-Komponenten von<br />

Magenta Systems genutzt werden, die den Zugriff auf den WinPcap-Daten erleichtern.<br />

Darüber können prinzipiell auch eigene (erstellte) Datenpakete versendet werden.<br />

Delphi 2010 steht allen <strong>Studenten</strong> im Rahmen <strong>der</strong> Ausbildung zur Verfügung.<br />

<br />

Mit Hilfe des (nur) unter Linux zur Verfügung stehenden Socket-Familie<br />

„AF_PACKET“ und dem Socket-Typ „OCK_RAW“ sollen Datenpakete (Frames)<br />

vollständig, inkl. <strong>der</strong> MAC-Layer („Link-Level“) Hea<strong>der</strong>informationen,<br />

eingelesen und angezeigt werden.<br />

Unter Nutzung dieses Sockettyps soll eine Konsolenanwendung realisiert werden, die<br />

ähnlich wie das klassische TCPDUMP (de.wikipedia.org/wiki/Tcpdump), den laufenden<br />

LAN-Traffic verständlich (dekodiert) darstellt. Ausgegeben werden die wichtigsten MACund<br />

IP-Layer Informationen, sowie <strong>der</strong> Typ des Transport- bzw. Anwendungsprotokolls.<br />

Die teils sehr komplexen Anwendungsprotokolle brauchen hier nicht dekodiert zu werden.<br />

<br />

Erstellung einer einfachen Client-/Server Anwendung im klassischen „C“, die<br />

einen Netzwerktaschenrechner realisiert.<br />

Die Beson<strong>der</strong>heit im Rahmen dieser eher einfachen Socket-Kommunikation zwischen zwei<br />

Konsolenanwendungen ist, dass über IPv4 und auch IPv6 Daten ausgetauscht werden<br />

können, abhängig u.a. vom gewählten Kommandozeilenparameter bzw. einer DNS-<br />

Namensauflösung.<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 3 / 14


2. Netzwerkprogrammierung mit Delphi 2010<br />

2.1 Installation Delphi 2010<br />

Für die Installation von Delphi 2010 benötigen Sie zum einen das Installationsmedium und<br />

natürlich den gültigen Produktschlüssel. Das Installationsmedium können Sie sich bei<br />

Herrn Koch im Büro ausleihen, da ein Download nur unnötig viel Zeit in Anspruch nehmen<br />

würde und Sie zudem das ISO-Image noch brennen o<strong>der</strong> an<strong>der</strong>weitig einbinden müssten.<br />

Den zugehörigen Produktschlüssel können Sie sich über unseren hausinternen MSDNAA-<br />

Server herunterladen, den Sie unter folgen<strong>der</strong> URL erreichen:<br />

https://msdnaa.fh-wedel.de/<br />

Melden Sie sich bitte mit Ihrem <strong>FH</strong>-Benutzernamen und Passwort an und wechseln Sie zur<br />

Produktkategorie „Entwicklung“. Hier finden Sie die aktuelle Delphi 2010 Version<br />

(Gesamtpaket März 2010) inkl. Lizenzfile.<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 4 / 14


Für die Installation müssen Sie die gesamte DVD in ein temporäres Verzeichnis auf Ihrer<br />

Festplatte kopieren (z.B. D:\delphi2010), da Sie im Folgenden Schreibrechte benötigen.<br />

Kopieren Sie nun bitte in einem zweiten Schritte das zuvor erworbene Lizenzfile in das<br />

Verzeichnis …\Install Ihres temporären Pfades (D:\delphi2010\Install). Führen Sie<br />

jetzt das Setup aus und installieren Sie Delphi. Den temporären Ordner mit den<br />

Installationsdateien können Sie ruhig nach dem Setup wie<strong>der</strong> von Ihrer Festplatte löschen.<br />

Installieren Sie bitte auch zusätzlich zur Delphi 2010 Version die entsprechende<br />

Dokumentation. Lassen Sie das Delhi nach <strong>der</strong> Installation bzw. beim ersten Startvorgang<br />

zusätzlich nach Aktualisierungen suchen.<br />

Hinweis:<br />

Nützliche Informationen zur Installation von Delphi 2010 o<strong>der</strong> zu den<br />

Delphi-Einstellungen (z.B. Compiler-Einstellungen) finden Sie auf <strong>der</strong><br />

Homepage von Frau Kaleck, unter dem Themenpunkt „Delphi“.<br />

http://www.fh-wedel.de/mitarbeiter/klk/delphi/<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 5 / 14


2.2 Nutzung zusätzlicher Monitoring-Komponenten<br />

Unter <strong>der</strong> nachfolgenden Adresse finden Sie eine sehr praktische Komponentenbibliothek für<br />

das Netzwerk-Monitoring (u.a. Paketaufzeichnung) und zugehörige Beispielprogramme.<br />

Magenta Systems Internet Packet Monitoring Components v1.3<br />

Quelle: http://www.magsys.co.uk/delphi/magmonsock.asp<br />

Magenta Systems Internet Packet Monitoring Components are a set of Delphi components<br />

designed to capture and monitor internet packets using either raw sockets or the WinPcap<br />

device driver. Hardware permitting, ethernet packets may be captured and interpreted, and<br />

statistics maintained about the traffic. Uses of packet monitoring include totalling internet<br />

traffic by IP address and service, monitoring external or internal IP addresses and services<br />

accessed, network diagnostics, and many other applications. The component includes two<br />

demonstration applications, one that displays raw packets, the other that totals internet traffic.<br />

The components include various filters to reduce the number of packets that need to be<br />

processed, by allowing specific IP addresses to be ignored, LAN mask to ignore local traffic,<br />

and ignore non-IP traffic such as ARP.<br />

The components capture packets using two different techniques, with differing benefits<br />

and features:<br />

1. Raw sockets which are available with Windows 2000 and later. This uses WSocket V6<br />

from the François Piette internet component suite, from http://www.overbyte.be/.<br />

Major benefit is that no other software needs to be installed, but raw sockets don't<br />

seem to work fully with some network adaptors, and ignore non-IP protocols. Some<br />

adaptors may capture received packets, but ignore anything sent.<br />

2. WinPcap (Windows Packet Library) device driver, needs to be installed (it installs two<br />

small DLLs and a driver), but captures all packets including non-IP. WinPcap may be<br />

downloaded from http://www.winpcap.org/, and version 4.0.2 is included in this<br />

package. Note the Delphi WinPcap pcap.pas and packet32.pas modules were<br />

originally written by Lars Peter Christiansen, but have several bug fixes and many<br />

new features. In theory WinPcap will run on Windows 9x, but it's not been tested. Use<br />

of the latest WinPcap version 4.0.2 9th November 2007 is strongly recommended, but<br />

the component also supports ol<strong>der</strong> versions 3.1 5th August 2005 and 3.0 10 February<br />

2003.<br />

Komponenten-Übersicht:<br />

There are two main low level components, TMonitorSocket in monsock.pas which supports<br />

raw window sockets, and TMonitorPcap in monpcap.pas that supports WinPcap.<br />

Both have very similar properties and return ethernet packets using identical events, formatted<br />

identically, allowing the same application to use either or both low level components.<br />

There are subtle differences, raw sockets monitors a specific IP address, whereas WinPcap<br />

monitors all traffic on an adaptor. Both may potentially monitor traffic other than the local<br />

PC, depending on LAN structure. Common functions and declarations are in packhdrs.pas<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 6 / 14


2.2.1 Die Installation <strong>der</strong> Software-Komponenten<br />

Installieren Sie nach Delphi auch die besagte Magenta-Funktionsbibliothek (Internet<br />

Packet Monitoring Components) in ein beliebiges Arbeitsverzeichnis auf ihrem PC-System.<br />

Installieren Sie ergänzend in ein dazu lokales Unterverzeichnis (z.B. .\Vc32) auch die<br />

ebenfalls benötigte OverbyteICS-Bibliothek. Entpacken Sie dazu einfach die Datei<br />

„OverbyteIcsV7.zip“.<br />

Bezugsquellen:<br />

<br />

<br />

http://www.magsys.co.uk/delphi/magmonsock.asp<br />

http://www.overbyte.be/frame_index.html (hier ICS-V7 auswählen!)<br />

Ergänzen Sie anschließend in Delphi nur noch den Pfad zu ICS-Bibliothek im Such- bzw.<br />

Bibliothekspfad, passend für das gewählte Unterverzeichnis (z.B. „\Vc32“).<br />

Damit sollte Delphi nun auch diese Units bzw. Bibliotheksfunktionen finden können.<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 7 / 14


2.2.2 Installation des Packet-Treibers WinPCap 4.1.x<br />

Für die Aufzeichnung des gesamten Datenverkehrs benötigen wir noch einen spezielle LAN-<br />

Treiber. Laden Sie sich aktuellen WinPcap-Treiber herunter und installieren Sie ihn.<br />

Quelle: http://www.winpcap.org/install/default.htm<br />

WinPcap is the industry-standard tool for link-layer network access in Windows<br />

environments: it allows applications to capture and transmit network packets bypassing the<br />

protocol stack, and has additional useful features, including kernel-level packet filtering, a<br />

network statistics engine and support for remote packet capture.<br />

WinPcap consists of a driver, that extends the operating system to provide low-level network<br />

access, and a library that is used to easily access the low-level network layers. This library<br />

also contains the Windows version of the well known libpcap Unix API.<br />

Die Dokumentation finden Sie bei Bedarf unter http://www.winpcap.org/docs/default.htm<br />

o<strong>der</strong> Online unter http://www.winpcap.org/docs/docs_412/html/main.html<br />

2.2.3 Erstes Übersetzen <strong>der</strong> Magenta-Demoanwendungen<br />

Das mitgelieferte Beispielprogramm „sockmon“ (ein Socket-Monitor) stellt bereits einen<br />

einfachen Packet-Sniffer dar, welcher mit Hilfe einer Raw-Packet Lesefunktionen von einem<br />

LAN-Adapter im Promiscuous-Modus alle sichtbaren Datenpakete ausgibt (vergl. Kapitel LAN-<br />

Analyzer / Observer).<br />

Demo Application – Display Packets using Raw Sockets and WinPcap<br />

Updated by Angus Robertson, Magenta Systems Ltd, England, v1.3 9th August 2010<br />

delphi@magsys.co.uk, http://www.magsys.co.uk/delphi/<br />

Copyright Magenta Systems Ltd<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 8 / 14


TMonitorSocket needs WSocket from François PIETTE internet component suite V6 or V7<br />

from http://www.overbyte.be, TMonitorPcap needs WinPcap, but this application will run<br />

without it being installed.<br />

This application displays ethernet packets captured using two different<br />

techniques:<br />

1. Raw sockets (W2K and later) using ICS, does not any other software installed, but may<br />

not capture send packets on W2K and XP, only W2K3, and ignores non-IP<br />

2. WinPcap device driver, needs to be installed (two DLLs and a driver), but captures all<br />

packets including non-IP. Get it from http://www.winpcap.org/ Note the Delphi WinPcap<br />

pcap.pas and packet32.pas were originally written by Lars Peter Christiansen, but have<br />

several bug fixes and many new features. In theory WinPcap will run on Windows 9x, but it's<br />

not been tested.<br />

Use of the latest WinPcap version 4.1.2 2nd July 2010 is strongly recommended, but the<br />

component also supports ol<strong>der</strong> versions 4.1.1 20th October 2009, 4.0.2 9th November 2007,<br />

3.1 5th August 2005 and 3.0 10 February 2003. Version 4.0 and later support Windows<br />

NT4/2000/XP/2003/Vista/2008/Win7/2008R2 (x86 and x64).<br />

*** This application is only designed to demonstrate the two components, it's not intended<br />

as a full network analyser.<br />

Demo-Anwendung “Sockstat”:<br />

Die zweite Demoanwendung “sockstat” (Socket-Status) erweitert den Basis-Monitor um<br />

eine statistische Ausgabeansicht. Dieses erlaubt es, den Kommunikationsablauf auch über<br />

eine längere Zeit übersichtlicher zu gestalten (Protokollverteilung, Anzahl gefundener Hosts,<br />

etc.).<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 9 / 14


2.3 Die zugehörige <strong>Aufgabe</strong>nstellung (Delphi)<br />

Im Rahmen dieses Praktikums sollen Sie nun ein eigenes Programm zur gezielten LAN-<br />

Analyse für eine spezielle IP-Adresse entwerfen.<br />

Um den Arbeitsaufwand dabei praxisnah zu minimieren, können Sie das bestehende<br />

Demoprogramm „socketmon“ einfach als Vorlagendatei verwenden.<br />

Entwickeln Sie ein neues Programm o<strong>der</strong> än<strong>der</strong>n Sie „socketmon“ wie folgt ab:<br />

<br />

Reduzieren Sie das Programm zunächst dahingehend, dass nur <strong>der</strong> WinPcap-Packet<br />

Treiber (nicht aber <strong>der</strong> RAW-Packet) genutzt wird (sofern nichts dagegen spricht).<br />

Das (Demo-) Programm sollte sich nun auch ohne die OverbyteICS -Unit übersetzen<br />

lassen.<br />

<br />

<br />

Erweitern Sie das Programm danach so, dass für eine bestimmte IP-Adresse <strong>der</strong><br />

Nutzdateninhalt (siehe „Packet-Data“-Ausgabefeld) in eine Log-Datei (Textdatei)<br />

geschrieben werden kann. Für die Festlegung <strong>der</strong> IP-Adresse ist hierzu ein weiteres<br />

Eingabefeld auf dem Formular vorzusehen (vergl. „Ignore Traffic“-Feld).<br />

Fügen Sie nun auch die Möglichkeit hinzu, für die festgelegte IP-Adresse die<br />

zugehörigen Nutzdateninhalte <strong>der</strong> Pakete, statt in einer Log-Datei, direkt als UDP-<br />

Pakete per Broadcast (an z.B. die Portnummer 9999) wie<strong>der</strong> im Teilnetz auszugeben<br />

Die Länge <strong>der</strong> Daten können ggf. beschränkt werden, um hier eine Fragmentierung<br />

zu vermeiden.<br />

Die WinPcap- bzw MagentaPacket32 - Bibliothek bietet auch die Möglichkeit,<br />

Datenpakete zu versenden. Den Aufbau des UDP-Hea<strong>der</strong>s finden Sie bei Bedarf im<br />

[RFC-768] beschrieben. Prüfen und dokumentieren Sie die Ausgabe hier im Labor<br />

mit dem LAN-Analyzer Observer o<strong>der</strong> zu Hause z.B. mit dem kostenfreien Wireshark.<br />

Sie können zur Kontrolle auch einfach das in <strong>der</strong> Vorlesung zur Veranschaulichung<br />

<strong>der</strong> UDP-Kommunikation vorgestellte UDP-Receiver Delphi-Programm verwenden<br />

(http://mediaserver.fh-wedel.de/public/labp/indy/index.html).<br />

<br />

Prüfen Sie am Ende noch die Möglichkeit, was prinzipiell zu tun wäre, um auch den<br />

laufenden IPv6 Datenkehr auf diesem Wege zu analysieren und anzeigen zu lassen<br />

(Begründung).<br />

Falls bei <strong>der</strong> Umsetzung an irgendeiner Stelle ernste Probleme auftreten, sollten sich<br />

umgehend bei uns melden!<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 10 / 14


3. Alternative <strong>Aufgabe</strong>nstellungen (unter Linux)<br />

Als mögliche Alternativen zur bereits beschriebenen <strong>Aufgabe</strong>nstellung (Windows, Delphi),<br />

wollen wir auch noch zwei weitere <strong>Aufgabe</strong>nstellungen zur Auswahl anbieten, die nicht an<br />

das Betriebssystem Windows o<strong>der</strong> eine grafische Ausgabe gebunden sind.<br />

Allerdings ist hier die Lösungsfindung, die Organisation und Einrichtung einer<br />

Entwicklungsumgebung jedem Teilnehmer selber überlassen bzw. freigestellt.<br />

3.1 Aufzeichnung des Datenverkehrs (C o<strong>der</strong> Java, Linux)<br />

In <strong>der</strong> Vorlesung haben wir bei <strong>der</strong> Betrachtung <strong>der</strong> Socket-Schnittstelle auch die<br />

verschiedenen Socket-Familien und die zugehörige Socket-Typen ganz kurz vorgestellt.<br />

Domain Type Protocol Description<br />

-------------------------------------------------------------------------------<br />

Mit AF_INET Hilfe des SOCK_STREAM spezielles Socket-Typs 0 (or IPPROTO_TCP) AF_Socket, <strong>der</strong> TCP nur over unter IPv4 Linux verfügbar ist, kann eine<br />

einfache AF_INET Sende SOCK_DGRAM und Empfangsfunktions 0 (or IPPROTO_UDP) vollständig selber UDP over realisiert IPv4 werden.<br />

AF_INET SOCK_RAW an IP protocol IPv4 raw socket<br />

sock = socket (AF_PACKET, … )<br />

AF_INET6 SOCK_STREAM 0 (or IPPROTO_TCP) TCP over IPv6<br />

AF_INET6 SOCK_DGRAM 0 (or IPPROTO_UDP) UDP over IPv6<br />

AF_INET6 SOCK_RAW an IP protocol IPv6 raw socket<br />

Ihre <strong>Aufgabe</strong> wäre es hierbei,<br />

AF_UNIX SOCK_STREAM 0 Unix-domain stream socket<br />

AF_UNIX Ein text-basierte SOCK_DGRAM Programm 0 (Konsolenanwendung) Unix-domain zu realisieren datagram socket<br />

<br />

<br />

AF_PACKET SOCK_RAW Ethernet protocol raw Linux packet socket<br />

(including the link level hea<strong>der</strong>)<br />

AF_PACKET SOCK_DGRAM Ethernet protocol cooked Linux packet socket<br />

(link level hea<strong>der</strong> removed)<br />

Die ganz spezielle Socket-Familie „AF_PACKET“ ist so nur unter Linux zu finden. Mit dem<br />

Socket-Typ (SOCK_DGRAM) hat <strong>der</strong> Programmierer hier dann den vollen Zugriff auf die IP-<br />

Hea<strong>der</strong>informationen und ggf. sogar auch auf die MAC-Hea<strong>der</strong>daten (SOCK_RAW).<br />

Sind in einem System beispielsweise zwei Netzwerkkarten in jeweils unterschiedlichen<br />

Netzen installiert, so könnte auf diese Weise sogar ein eigenes „Routing-Modul“ generiert<br />

werden, wenn die eingelesenen Daten auf dem jeweils an<strong>der</strong>en Interface wie<strong>der</strong><br />

ausgegeben werden.<br />

** Für die Programmrealisierung dürfen Sie, wie im echten Leben auch, auf bereits existente<br />

Lösungsvorschläge im Internet zugreifen, sofern Sie später alle Quellen und genutzte<br />

Vorlagen korrekt angeben – ansonsten wird ein solches Plagiat komplett zurück gewiesen !<br />

<br />

Viele notwendige Informationen zu dieser speziellen Socket-Familie finden Sie<br />

z.B. in <strong>der</strong> aktuellen Ubuntu Online-Hilfe (man-pages), wie z.B. unter<br />

http://manpages.ubuntu.com/manpages/jaunty/man7/packet.7.html<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 11 / 14


Folgende Definition liegt dieser Socket-Familie zu Grunde:<br />

NAME<br />

packet, AF_PACKET - packet interface on device level.<br />

SYNOPSIS<br />

#include <br />

#include <br />

#include /* the L2 protocols */<br />

packet_socket = socket(AF_PACKET, int socket_type, int protocol);<br />

DESCRIPTION<br />

Packet sockets are used to receive or send raw packets at the<br />

device driver (OSI Layer 2) level. They allow the user to implement<br />

protocol modules in user space on top of the physical layer.<br />

….<br />

Ihre <strong>Aufgabe</strong>nstellung bei dieser Themenstellung lautet konkret:<br />

<br />

<br />

<br />

Realisieren Sie auf Basis dieser speziellen Socket-Familie eine einfache C-Konsolenanwendung,<br />

die den laufenden LAN-Traffic für ein auszuwählendes Interface<br />

verständlich (dekodiert) darstellt. Wenn lösbar, können Sie auch eine Java-<br />

Anwendung entwickeln.<br />

Ausgegeben werden dabei die wichtigsten MAC-Layer und IP-Hea<strong>der</strong> Informationen,<br />

sowie <strong>der</strong> korrekte Typ des Transport- bzw. auch Anwendungsprotokolls. Speziell die<br />

Anwendungsprotokolle brauchen hierbei aber nicht dekodiert zu werden.<br />

Die Ausgabe können Sie frei gestalten. Sie könnte z.B. ähnlich, wie beim klassischen<br />

TCPDUMP (de.wikipedia.org/wiki/Tcpdump) aussehen.<br />

Klären und Erläutern Sie auch die Darstellungsmöglichkeit für laufenden IPv6-Traffic !<br />

Beispielausgabe zu TcpDump unter Unix/Linux:<br />

(Quelle: http://en.wikipedia.org/wiki/Tcpdump)<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 12 / 14


3.2 Realisierung einer Client-/Server Anwendung (in „C“)<br />

Realisieren Sie eine einfache Client-/Server Anwendung unter Windows o<strong>der</strong> Linux, hier in<br />

<strong>der</strong> Programmiersprache C, <strong>der</strong> ein simples Anwendungsprotokoll für einen Netzwerktaschenrechner<br />

zu Grunde liegt. Als Transportprotokoll soll das TCP eingesetzt werden. Eine<br />

Beispielvorlage für einen TCP-Client und einen TCP-Server (in C) finden Sie u.a. im<br />

vollständigen Vorlesungshandout (Anhang).<br />

Ihre <strong>Aufgabe</strong> hierbei ist es, den Client und TCP-Server als eine konsolenbasierte Anwendung<br />

zu implementieren. Dem Client-Programm soll zum Start wahlweise die IP-Adresse o<strong>der</strong> <strong>der</strong><br />

DNS-Hostname des Servers (erfor<strong>der</strong>t also DNS-Auflösung), sowie auch und zugehörige<br />

Portadresse, per Kommandozeilenparameter übergeben werden.<br />

Die beiden Anwendungen sollen über IPv4 als auch IPv6 kommunizieren können!!<br />

Grafische Darstellung des Protokollablaufs:<br />

Erläuterungen zum Ablauf:<br />

Der Server-Prozess begrüßt anfangs den Client-Prozess mit einer beliebigen Nachricht.<br />

Danach kann <strong>der</strong> Client verschiedene Kommandos nutzen. Mit dem Kommando „ADD“<br />

werden zwei ganz Zahlen (Leerstelle als Trennsymbol) zum Addieren übermittelt und das<br />

Ergebnis wird zurück geliefert. Mit dem Kommando „MUL“ können zwei ganze Zahlen<br />

multipliziert werden und das Ergebnis wird zurück geliefert. Mit „QUIT“ wird die TCP-<br />

Verbindung beendet, dieses wird vom Server mit „OK“ quittiert. Auf fehlerhafte Eingaben<br />

(Kommandos) wird z.B. mit einer sinnvollen Meldung (z.B. „ERROR“) geantwortet.<br />

Auf dem Client werden alle Ein- und Ausgabe (Ergebnisse) auf dem Bildschirm dargestellt.<br />

Die Eingabe <strong>der</strong> Kommandos beim Client kann individuell gestaltet werden (z.B. durch<br />

direktes Einlesen <strong>der</strong> „Kommandozeile“ (Zeichenkette)).<br />

Der Server stellt wenigstens eine sinnvolle Status- und Zustandsanzeige des Prozesses dar<br />

(u.a. eigene Socket-Adresse, Client ist verbunden, etc.). Bei Bedarf kann er auch den<br />

vollständigen Dialog-Ablauf darstellen.<br />

Den wesentlichen Kernpunkt dieser <strong>Aufgabe</strong> stellt dabei die mögliche Übermittlung auch<br />

über IPv6 (-Sockets) dar, falls z.B. <strong>der</strong> DNS-Name des TCP-Server nur in eine IPv6 Adresse<br />

aufgelöst werden kann.<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 13 / 14


4. Durchführung, Dokumentation und Abgabe<br />

Die jeweiligen Lösungsergebnisse (Programme) benötigen keine klassische Dokumentation<br />

im üblichen Stil <strong>der</strong> bisherigen Programmierübungen, müssen aber ausreichend Inlinedokumentiert<br />

sein.<br />

Die Lösung <strong>der</strong> <strong>Aufgabe</strong> ist am Ende hier im Netzwerklabor persönlich vorzuführen.<br />

Notwendige Hard- und Software bzw. Arbeitsumgebungen sind jeweils vorab zu klären.<br />

Am Ende sind auf einem Datenträgen alle genutzten und notwendigen Dokumente, Quellen<br />

und auch eine ausführbare Programmversion (Delphi) abzugeben.<br />

Folgende Randbedingungen sind zu beachten:<br />

<br />

<br />

Da die Bearbeitung <strong>der</strong> <strong>Aufgabe</strong> für die vorlesungsfreie Zeit und in freier<br />

Zeiteinteilung vorgesehen ist, haben wir nur eine individuelle Bearbeitung<br />

vorgesehen. Die Abstimmung gemeinsamer Termine ist i.d.R. bei Gruppenarbeit<br />

meist schwieriger.<br />

Es wird zwar keine Gruppenlösung akzeptiert, dennoch ist ein reger<br />

Entwicklungsaustausch untereinan<strong>der</strong> zulässig bzw. sogar erwünscht. Über<br />

Lösungsmöglichkeiten und Ansätze gemeinsam zu diskutieren, ist immer ein<br />

wichtiges Hilfsmittel!<br />

Im Zweifelsfalle fragen Sie bitte bei „gemeinschaftlich genutzten Lösungsansätzen“<br />

vorher einfach nach.<br />

<br />

<br />

<br />

Je<strong>der</strong> Teilnehmer muss seine Lösung immer vollständig erläutern können. Für die<br />

Entwicklung steht bei Bedarf das Netzwerklabor zur Verfügung (ab 1.8.2011 wie<strong>der</strong><br />

besetzt).<br />

Als letzten Abgabetermin haben wir Freitag, den 7.Oktober 2011, 12:00Uhr,<br />

festgesetzt. Dieser finale Termin beinhaltet bereits alle möglichen Rücksprachen und<br />

Korrekturen!<br />

Sollten unlösbare Probleme auftauchen o<strong>der</strong> sich noch inhaltliche Fragen zur<br />

<strong>Aufgabe</strong>nstellung ergeben, sprechen Sie uns bitte direkt und rechtzeitig vor dem<br />

Abgabetermin an.<br />

Viele Spaß bei <strong>der</strong> Bearbeitung im SS2011 !<br />

T.Koch, I.Kaleck<br />

Praktikum Rechnernetze, Arbeitsbogen P1 Seite 14 / 14

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!