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
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