From f8b9531d4d902babb7eccaa4c371f3ace720551d Mon Sep 17 00:00:00 2001
From: Patrick Hornecker
Date: Thu, 25 Feb 2010 11:09:06 +0100
Subject: tex source and code modifications

---
 ausarbeitung/Friend_Finder.tex | 206 ++++++++++++++++++++---------------------
 1 file changed, 98 insertions(+), 108 deletions(-)

(limited to 'ausarbeitung/Friend_Finder.tex')

diff --git a/ausarbeitung/Friend_Finder.tex b/ausarbeitung/Friend_Finder.tex
index ea0d0b1..727ae69 100644
--- a/ausarbeitung/Friend_Finder.tex
+++ b/ausarbeitung/Friend_Finder.tex
@@ -1,16 +1,15 @@
 \section{Friend Finder}
 
-Die beschriebene Software trägt den Namen \textit{Friend Finder} und wurde im Rahmen dieser Arbeit mit allen
-aufgezählten Funktionen realisiert. Im folgenden wird auf die verwendeten Verfahren sowie Bibliotheken, die zur Realisierung
-notwendig waren, eingegangen und die Programmstruktur aufgezeigt.
+Die beschriebene Software trägt den Namen \textit{Friend Finder} und wurde im Rahmen dieser Arbeit realisiert. Im folgenden wird
+auf die verwendeten Verfahren sowie Bibliotheken, die zur Realisierung notwendig waren, eingegangen und die Programmstruktur
+aufgezeigt.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \subsection{Verwendete Verfahren und Bibliotheken}
 
-\textit{Friend Finder} wurde so konzipiert, dass die Graphische Darstellung ohne großen Aufwand von den restlichen
-Teilen der Software abgekoppelt und durch eine andere Art der Darstellung ersetzt werden kann. Würde \textit{Enlightenment}
-austauschen, würde die Funktionsweise der zugrundeliegenden Komponenten zu verändern. \newline
+\textit{Friend Finder} wurde so konzipiert, dass die graphische Darstellung ohne großen Aufwand von den restlichen
+Teilen der Software abgekoppelt und durch eine andere Art der Darstellung ersetzt werden kann.\newline
 Neben dem \textit{Graphical User Interface (GUI)} besteht die Software aus drei unterschiedlichen Modulen. Der \textit{Message
 Sender} ist für das Versenden und Empfangen der Textnachrichten zuständig, \textit{Sender} sendet die eigene Position,
 \textit{Receiver} empfängt die Positionen der anderen Nutzer und sendet Acknowledgements an die teilnehmenden \textit{Sender}.
@@ -25,38 +24,28 @@ Alle drei Teile geben ihre empfangenen Daten an die \textit{GUI} weiter, welche
 
 \subsubsection{Grafisches Benutzeroberfläche}
 
-Zum Erstellen der Oberfläche wurde \textit{Enlightenment} verwendet. Diese Bibliothek stellt alle benötigten Funktionen bereit und
-bietet eine Fülle an vordefinierten Bedienelement. Der gesammte Programmcode der Benutzeroberfläche wurde in einer Datei
-zusammengefast (\textit{gui.c}). \newline
-In dieser Datei sind alle Funktionen enthalten um die Oberflächenelement zu platzieren. Um die gewünschte Funktionalität der
-einzelnen Elemente zu realisieren wurden auch die Aufrufe der benötigten Funktionen aus anderen
-Modulen in dieser Datei implementiert. \newline
-Zur Darstellung der Karte wurden Daten des offenen Kartenprojekts \textit{OpenStreetMap} \citep{OSM} genutzt.
+Um die Modularität zu wahren wird der gesammte Programmcode der Benutzeroberfläche in einer Datei zusammengefast. In dieser Datei
+sind alle Funktionen enthalten um die Oberflächenelement zu platzieren. Um die gewünschte Funktionalität der einzelnen Elemente zu
+realisieren wurden auch die Aufrufe der benötigten Funktionen aus anderen Modulen in dieser Datei implementiert. \newline
+Zur Darstellung der Karte wurden Daten des offenen Kartenprojekts \textit{OpenStreetMap} \footnote{OpenStreetMap
+\url{http://www.openstreetmap.de/}} genutzt.
 
 \subsubsection{Versenden der Nachrichten}
 
-Um Daten im Allgemeinen zu versenden wurde das \textit{IRC}-Protokoll verwendet. Die
-Vorteile dieses Protokolles liegen in seiner weiten Verbreitung, einer ausgedehnten Serverstruktur, sowie in dessen
-Stabilität. Ein weiterer Vorteil ist, dass man Daten die an mehrere Benutzer gesendet werden sollen, nur einmal an einen
-\textit{Channel} senden muss und jeder Benutzer in diesem \textit{Channel} diese Daten empfangen kann.\newline
-
-In der Datei \textit{msg\_sender.c} sind alle Funktionen und Aufrufe implementiert, welche nötig sind um die Verbindung zum 
-\textit{IRC-Server} zu erstellen und die Nachrichten zu verschicken. Um eine Verbindung zu einem gegebenen \textit{IRC-Server} zu
-etablieren, muss eine \textit{IRC-Session} initialisiert werden. Diese \textit{Session} beinhaltet Informationen wie zum Beispiel
+Der \textit{Message Sender} kümmert sich um das Versenden von Nachrichten. Um das Versenden und Empfangen der Daten zu
+implementieren wurde \textit{libircclient} \footnote{libircclien \url{http://libircclient.sourceforge.net/}} genutzt. Im ersten
+Schritt baut dieser eine Verbindung zum \textit{IRC-Server} auf. Um eine Verbindung mit einem \textit{IRC-Server} zu etablieren,
+muss eine \textit{IRC-Session} initialisiert werden. Diese \textit{Session} beinhaltet Informationen wie zum Beispiel
 den \textit{Nickname} des Benutzers oder die \textit{IP-Adresse} des Servers. Nachdem diese \textit{Session} gestartet wurde,
-können nun Nachrichten versandt werden. Wird eine Nachricht empfangen so wird diese an die Benutzeroberfläche weitergereicht.
-Bei der Implementerierung des Nachrichtenversandes ist eine Besonderheit zu erwähnen. Das genutzte Verschlüsselungsverfahren
-\textit{Blowfish} \citep{blowfish} wurde seitens der \textit{OpenSSL}\citep{OpenSSL} Bibliothek als \textit{Blockcipher}
-implementiert. \textit{Blowfish} wurde Aufgrund der schnellen Verschlüsselungsrate sowie einfachen Implementierung gewählt und
-ist ein symmetrisches Verschlüsselungsverfahren. Das bedeutet, das immer nur maximal 64 Bit Nachrichten verschlüsselt werden
-können. Aufgrund dieser Restriktion werden Textnachrichten in Blöcke der Zeichenlänge 6 aufgeteilt und anschliessend
-versandt. Um den die Codierung der Verschlüsselten Nachrichten zu erhalten werden alle versendeten Daten des Programmes in die
-\textit{Base64} \citep{base64} Darstellung umgewandelt. Dies ist notwendig, da die verschiedenen \textit{IRC}-Server
-unterschiedliche Zeichenkodierungen nutzen können.\newline
-Ein weiterer wichtiger Unterschied zu den Modulen Senden und Empfangen von \textit{GPS}-Positionen ist die Tatsache, dass bei
-diesem Programmteil Sender und Empfänger in der gleichen Datei implementiert wurden. Der Grund hierfür ist, dass man hier nicht
-zwischen mehreren Sendern oder Empfängern unterscheiden muss, und diese zwei Teile hier somit nicht komplett getrennt voneinander
-arbeiten müssen. In der folgenden Abbildung ist eine Textkonversation mit \textit{Friend Finder} zu sehen.\newline
+können nun Nachrichten versandt werden. Textnachrichten müssen vor dem Versenden in Blöcke aufgeteilt werden, da das genutze
+Verschlüsselungsverfahren \textit{Blowfish} \citep{blowfish} maximal 64 Bit lange Zeichenkette verschlüsselt. Das verwendete
+Verfahren stammt aus der \textit{OpenSSL}\footnote{OpenSSL \url{http://www.openssl.org/}} Bibliothek. Diese Implementierung wurde
+wurde Aufgrund der schnellen Verschlüsselungsrate sowie einfachen Implementierung gewählt. Da das \textit{IRC}-Protokoll nicht
+alle Zeichen darstellen kann oder als Präfix vor einem Kommando nutzen werden alle versendeten Daten des Programmes in
+die \textit{Base64} \footnote{Base64 RFC 4648} Darstellung umgewandelt.\newline
+Wird nun von einer anderen Instanz des \textit{Message Senders} eine Nachricht empfangen, so setzt er die Teilstücke zusammen.
+Dies geschieht solange, bis ein vom Nachrichtentext getrennt gesendetes Terminierungszeichen empfangen wird. Wurde dieses Zeichen
+empfangen, so gilt die Textnachricht als wiederhergestellt und wird an die Benutzeroberfläche weitergereicht.
 
 \begin{figure}[!ht]
 \centering
@@ -64,45 +53,44 @@ arbeiten müssen. In der folgenden Abbildung ist eine Textkonversation mit \text
  \caption{Versenden von Chatnachrichten}
 \end{figure}
 
-Um Nachrichten zu versenden wurde für dieses Projekt die \textit{IRC-Client Bibliothek}\citep{libircclient} verwendet. Diese
-Bibliothek bietet verschiedene Funktionen um eine Verbindung mit einem \textit{IRC-Server} zu erstellen und Nachrichten an
-diesen zu senden, sowie eingehende Nachrichten zu empfangen.\newline
-Zur Ver- und Entschlüsselung der gesendeten Nachrichten, sowie der Positionsdaten, wird die Bibliothek
-des \textit{OpenSSL-Projekts}\citep{OpenSSL}, namens \textit{libcrypto}, verwendet.
-
 \subsubsection{Versenden der eigenen Position}
 
-Der benötigte Programmcode zum Versenden der eigenen Position ist in der Datei \textit{sender.c} zu finden. Auch hier muss zuerst
-eine \textit{IRC-Session} initialisiert werden um danach die Position zu versenden. Der Ablauf beim Senden der Positionen erfolgt
-in einer vorgegebenen Reihenfolge. Zuerst wird der verschlüsselte Längengrad, danach der verschlüsselte Breitengrade gesendet.
+Der \textit{Sender} ist zuständig für das Versenden der Positionsdaten. Auch hier muss vor dem Versenden von Daten eine
+\textit{IRC-Session} initialisiert werden. Der Ablauf beim Senden der Positionen erfolgt in einer vorgegebenen Reihenfolge. Zuerst
+wird der verschlüsselte Längengrad, danach der verschlüsselte Breitengrade gesendet.
 Allerdings muss auch hier, wie beim Versenden der Textnachrichten, darauf geachtet werden dass maximal eine Zeichenkette der
-Länge 8 Byte verschlüsselt wird. Somit ist es auch hier nötig Längen- und Breitengrad in zwei Teile aufzuteilen und getrennt zu
-versenden. Es werden für das Versenden einer Position insgesamt vier Nachrichten an den \textit{IRC}-Server übermittelt.
-Wurden diese vier Nachrichten übermittelt, so werden solange keine Daten mehr gesendet, bis der Empfänger eine
-Bestätigung für jedes Fragment an den \textit{IRC-Kanal} sendet. Diese Bestätigungen werden ebenfalls verschlüsselt versandt.
-Kommt dieses \textit{Acknowledgement} beim Sender an, so versendet dieser wieder ein \textit{Latitude/Longtitude} Paar.\newline
-
-Auch hier wird, wie beim Versenden der Nachrichten zum Verschlüsseln der \textit{Blowfish-Algorithmus} aus
-\textit{libcrypto}, sowie \textit{libircclient} zum versenden der Daten genutzt.
-
-\subsubsection{Empfangen der eigenen Position}
+Länge von 64 Bit verschlüsselt wird. Somit ist es auch hier nötig Längen- und Breitengrad in zwei Teile aufzuteilen und getrennt
+zu versenden. An jedes Ende, dieser insgesamt vier Fragmente, wird ein zusätzlicher, jeweils unterschiedlicher Buchstaben
+angehängt. Da sich diese vier Buchstaben unterscheiden können die Positionsfragmente später identifiziert und eindeutig
+festgestellt werden ob es sich zum Beispiel um den ersten Teil einer \textit{Longtitude}-Koordinate handelt. Somit werden für das
+Versenden von einer Position insgesamt vier Nachrichten an den \textit{IRC}-Server übermittelt.
+Wurden diese vier Nachrichten übermittelt, so werden solange keine Daten mehr gesendet, bis der \textit{Empfänger} eine
+Bestätigung für jedes Fragment an den \textit{IRC-Channel} sendet. Kommt diese Bestätigung beim \textit{Sender} an, so
+versendet dieser wieder ein \textit{Latitude/Longtitude} Paar.
+
+\subsubsection{Empfangen von  Positionen}
+
+Auch beim \textit{Empfänger} muss im ersten Schritt eine \textit{IRC-Session} initialisiert werden. Da mehrere
+Benutzer Positionsdaten senden können legt der \textit{Empfänger} für jeden \textit{Sender} einen Datensatz an. Wird nun ein
+Fragment der Positionsdaten empfangen, so kann der dies anhanden des Buchstabensuffix zuordnen. Sind alle Fragmente einer
+Position empfangen worden, so werden die benötigten Daten zur Visuallisierung weitergereicht und ein \textit{Acknowledgement}
+gesendet. Dieses \textit{Acknowledgement} beinhaltet, verschlüsselter Form, den Namen des \textit{Senders} der Nachricht. Somit
+kann der \textit{Sender} die für ihn bestimmten \textit{Acknowledgements} zuordnen. Die folgende Abbildung zeigt die Darstellung
+einer Position eines anderen Benutzers.
 
-Im ersten Schritt muss auch hier eine \textit{IRC-Session} initialisiert werden. Da mehrere Benutzer Positionsdaten senden können
-legt der Empfänger für jeden Sender einen Datensatz an. Dieser wird nach und nach mit gesendeten Fragmenten der Positionsdaten
-gefüllt. Sind alle Fragmente beim Empfänger angekommen so werden die benötigten Daten zur Visuallisierung weitergegeben. Um die
-einzelnen Positionsfragmente zuzordnen zu können, werden an diese vor dem versenden Terminierungszeichen angefügt. Diese
-Identifizieren zum Beispiel eindeutig einen ersten Teil einer \textit{Longtitude}-Koordinate.
-
-Zur Realisierung des Empfängers werden die gleichen Bibliotheken wie beim Sender genutzt. Auch hier wird zur Entschlüsselung der 
-\textit{Blowfish-Algorithmus} von \textit{libcrypto} angewandt.
+\begin{figure}[!ht]
+\centering
+ \includegraphics[width=8cm]{Bilder/position}
+ \caption{Ausgabe einer Benutzerposition}
+\end{figure}
 
 \subsubsection{Erzeugen eines 2D-Barcodes}
 
-Die Datei \textit{barcode.c} beinhaltet die Funktionen zum Erstellen eines 2D-Barcodes. Aus einer Zeichenkette wird
-ein Barcode erstellt, welcher im darauf folgenden Schritt als \textit{.png} Datei auf das Speichermedium geschrieben
-wird. Zum erstellen des Barcodes wurde die offene Bibliothek \textit{qrencode} \citep{qrencode} genutzt. Diese erstellt aus einer
-Zeichenkette einen 2D-Barcode. Aus den Bilddaten dieses Barcodes wurde mit \textit{libpng} \citep{PNG} eine \textit{.png} Datei
-generiert. Die untere Abbildung zeigt einen solchen erstellten Barcode, wie er von \textit{Friend Finder} ausgegeben wird.
+Um einen 2D-Barcode zu erstellen wird eine Zeichenkette benötigt. Aus dieser werden durch die Nutzung von \textit{qrencode}
+\footnote{libqrencode \url{http://megaui.net/fukuchi/works/qrencode/index.en.html}} Bilddaten generiert. Diese werden im
+nächsten Schritt durch \textit{libpng} \footnote{libpng \url{http://www.libpng.org/}} gerendert und auf das Speichermedium
+geschrieben. Dieses Bild wird dann durch die \textit{GUI} geladen und ausgegeben. Die folgende Abbildung zeigt einen solchen
+erstellten Barcode, wie er von \textit{Friend Finder} ausgegeben wird.
 
 \begin{figure}[!ht]
 \centering
@@ -115,27 +103,27 @@ generiert. Die untere Abbildung zeigt einen solchen erstellten Barcode, wie er v
 
 \subsection{Analyse}
 
-Das Ziel war es mit \textit{Friend Finder} Daten verschlüsselt zu übertragen. Es soll dabei ein möglichst geringer
-Berechnungsaufwand entstehen um die Daten zu verschlüsseln, sowie möglichst wenig Datenoverhead produziert und versendet werden.
-Unter Datenoverhead werden Hintergrunddaten gesehen, welche versendet werden um zum Beispiel die Verbindung zwischen Client und
-Server aufrecht zu erhalten oder um zu kontrollieren ob Server oder Client noch verfügbar sind. Diese Daten
-sind von Interesse da mit vielen versendeten Daten ein höherer Anspruch des Rechenkerns einhergeht, was wiederrum in einem
-höheren Stromverbrauch resultiert.\newline
-
+Beim versenden der Daten durch \textit{Friend Finder} soll möglichst wenig Datenoverhead produziert und
+versendet werden. Unter Datenoverhead werden Hintergrunddaten gesehen, welche versendet werden um die Verbindung aufrecht zu
+erhalten oder um die Anzahl der verfügbaren Teilnehmer zu überprüfen. \newline
 Im folgenden Teil wird der erzeugte Datenverkehr von \textit{Friend Finder} analysiert. Ein Hauptaugenmerkt wird hierbei vor allem
-auf die Packetgröße, sowie die Menge der versendeten Datenpakete geworfen. Der \textit{Traffic} wurde mit Hilfe des Programmes
-\textit{Wireshark} \citep{Wireshark} untersucht.Wie bereits erwähnt wird zum Versenden der Nachrichten das \textit{IRC-Protokoll}
-verwendet. In dieser Testumgebung wurde die Software \textit{IRCD-Hybrid} \citep{IRCD} genutzt. Der Server lief auf dem gleichen
-Computer wie der Client. Der Client hat sich über das \textit{localhost} Interface mit dem Server verbunden. \newline 
-
+auf die Packetgröße, sowie die Menge der versendeten Datenpakete geworfen. Ein Interessanter Punkt stellt die Frage dar, wie sich
+das versendete Datenaufkommen im Vergleich zu einer Lösung verhält, welche die Daten an jeden Teilnehmer einzeln verschickt.
+Hier ist besonders von Interesse, ob der Datenoverhead den Vorteil eines \textit{Broadcast}-Mediums wie ein \textit{IRC}-Channel
+revidiert oder nicht. \newline
+Der \textit{Traffic} wurde mit Hilfe des Programmes \textit{Wireshark} \footnote {Wireshark \url{http://www.wireshark.org/}}
+untersucht. Wie bereits erwähnt wird zum Versenden der Nachrichten das \textit{IRC}-Protokoll verwendet. In dieser Testumgebung
+wurde die Software \textit{IRCD-Hybrid} \footnote{IRCD \url{http://www.ircd-hybrid.org/}} genutzt. Der Server lief auf dem
+gleichen Computer wie der Client. Der Client hat sich in diesem Szenario über das \textit{localhost} Interface mit dem Server
+verbunden. \newline
 Die Analyse ist in drei Teile aufgeteilt. Als erstes wird auf den allgemein entstehenden Datenverkehr eingegangen, welcher
 bei Verbindungsaufbau, sowie bei Beenden der Verbindung entsteht. Der zweite Teil beschäftigt sich mit dem Versenden sowie
-Empfangen von Nachrichten. Im letzten Teil dieser Analyse wird das Versenden und Empfangen von Positionen, unter die Lupe
-genommen. Alle Größen innerhalb der Analyse beziehen sich nur auf die Größe des Datenfeldes, exklusiv der Header.
+Empfangen von Nachrichten. Im letzten Teil dieser Analyse wird der Datenverkehr beim Versenden und Empfangen von Positionen
+genauer betrachtet. Alle folgenden Größen sich nur auf die Größe des Datenfeldes, exklusiv der Header.
 
 \subsubsection{Allgemeiner Datenverkehr}
 
-Der Allgemeine Hintergrundverkehr bei \textit{Friend Finder} besteht zum einen aus \textit{Keep-Alive} Nachrichten, sowie der
+Der Allgemeine Hintergrundverkehr bei \textit{Friend Finder} besteht zum Einen aus \textit{Keep-Alive} Nachrichten, sowie der
 Anfrage des Clients nach aktiven Nutzern in den \textit{Channels} in denen er selbst aktiv ist. Die \textit{Keep-Alive}
 Nachrichten werden alle 30 Sekunden zwischen Server und Client ausgetauscht. Die Größe des Datenfeldes einer
 solchen Nachricht beträgt also 24 Byte. Das Datenfeld der Pakete welche von Server an Client gesendet werden hat die Größe von 44
@@ -143,20 +131,17 @@ Byte. \newline
 Die Anfragen nach den anderen Benutzern in einem \textit{Channel} werden alle 60 Sekunden versandt. Die Größe der Pakete welche
 von Client zu Server gesandt werden, betragen hierbei 10 Bytes. Die Größe der Antwort des Servers hängt von der Anzahl der
 aktiven Benutzer innerhalb eines Channels ab. Für zwei Benutzer ergibt sich ein Datenvolumen von 193 Byte, wobei diese
-Größe auch Abhängig von der Länge der Benutzernamen sowie des Namens des\textit{Channels} ist. \newline
+Größe auch Abhängig von der Länge der Benutzernamen sowie des Namens des\textit{Channels} ist.
 
 \subsubsection{Versenden und Empfangen von Nachrichten}
 
 Um das Versenden von Nachrichten zu evaluieren wurde ``Hello World`` als Testnachricht benutzt. Der \textit{Blockcipher} von
-\textit{Friend Finder} teilt den Satz ''Hello World`` in zwei Teile auf: ''Hello `` und ''World``. Diese werden dann von
-\textit{TCP} aufgrund der Fenstergröße in ein Paket gepackt. Dieses Paket hat ein Datenfeld der Größe von 99 Byte.\newline
-Beachtet man dass ein \textit{char} in \textit{C} die Größe von einem Byte hat und der Beispielsatz aus elf Zeichen besteht, so
-ist dieser unverschlüsselt elf Byte groß. Nach der Verschlüsselung werden beim Senden noch Informationen wie der
-\textit{Channel} und der Empfänger der Nachricht in das zu versendende \textit{IRC}-Paket geschrieben und im Anschluss die
-Konvertierung zur \textit{Base64}-Darstellung vorgenommen. Die \textit{Base64}-Darstellung vergrößert im Allgemeinen, aufgrund
-der Datenkonvertierung, das Datenvolumen um 36\%. Somit vergrößert sich eine Textnachricht circa um den Faktor $9$ sobald sie
-verschlüsselt, \textit{Base64}-kodiert und mit allen Zusatzinformationen erweitert wurde. \newline
-Wenn $h$ die Größe des \textit{TCP-Headers} und $t$ die Anzahl der Zeichen der unverschlüsselten Nachricht ist, so ergibt sie die
+\textit{Friend Finder} teilt den Satz ''Hello World`` in zwei Teile auf: ''Hello `` und ''World``. Dieses Paket hat ein Datenfeld
+der Größe von 99 Byte.\newline
+Die versendete Textnachricht hat im unverschlüsselten Format die Größe von elf Byte. Nach der Verschlüsselung werden beim Senden
+noch Informationen bezüglich \textit{Channel} und der Empfänger der Nachricht in das zu versendende \textit{IRC}-Paket
+geschrieben. Nach der \textit{Base64}-Kodierung hat sich die Größe der Nachricht circa um den Faktor $9$ vergrößert.\newline
+Wenn $h$ die Größe des \textit{TCP-Headers} und $t$ die Anzahl der Zeichen der unverschlüsselten Nachricht ist, so ergibt sich die
 ungefähre Größe der zu versendenden Nachricht aus: $h + (t \cdot 9)$.
 
 \subsubsection{Versenden und Empfangen von Positionen}
@@ -164,29 +149,34 @@ ungefähre Größe der zu versendenden Nachricht aus: $h + (t \cdot 9)$.
 Wie schon erwähnt, werden die Positionsdaten beim Sender aufgeteilt und mit vier unterschiedlichen Nachrichten versandt. Wie
 beim Versenden der Textnachrichten werden diese vier Nachrichten auch hier in ein Paket gepackt. Bei der Messung wurden vier
 Verschiedene Pakete, mit jeweils unterschiedlichen versandten Positionen untersucht. Dabei betrug sich die Größe des Datenfeldes
-zwischen 431 Byte. Die Anzahl der unverschlüsselten Zeichen, die für ein \textit{Latitude}/\textit{Longtitude}-Paar zu
+um die 430 Byte. Die Anzahl der unverschlüsselten Zeichen, die für ein \textit{Latitude}/\textit{Longtitude}-Paar zu
 senden sind, beträgt 21 Zeichen. Jedes Zeichen ist Byte groß, womit sich in der Summe eine Größe von 21 Byte ergibt.
 Durch die Verschlüsselung, \textit{Base64}-Kodierung sowie Zusatzinformationen vergrößert sich das Datenvolumen also um circa den
 Faktor zwanzig. Wenn $h$ die Größe des \textit{TCP-Headers} und $t$ die Anzahl der Zeichen der unverschlüsselten Nachricht. Somit
 ergibt sich die Größe der versendeten Nachricht circa durch $h + (t \cdot 20)$. Hinzu kommt noch, das für jedes empfangene
-Positions-Fragmeint ein Acknowledgement gesendet wird. Die Größe der eines Acknowledgment Paketes beträgt zwischen 147 und 153
+Positions-Fragmeint ein \textit{Acknowledgement} gesendet wird. Die Größe der eines \textit{Acknowledgment} Paketes beträgt
+zwischen 147 und 153
 Byte. In einem solchen Paket werden vier Acknowledgments zusammengefasst.\newline
-Folglich kann aus Folgende Formel für den Datenverkehr über die Zeit hergeleitet werden: $((h + (t \cdot 20)) + (4 \cdot a)) \cdot
-n$, wobei $a$ die Größe eines Acknowledgement-Paketes ist und $n$ die Anzahl der versandten Pakete repräsentiert. 
+Folglich kann Folgende Formel für den Datenverkehr pro versendeter Position, bei $n$ Teilnehmern hergeleitet werden:
+$((h + (t \cdot 20)) + (4 \cdot a))\cdot n$, wobei $a$ die Größe eines Acknowledgement-Paketes ist und $n$ die Anzahl der
+versandten Pakete repräsentiert.
 
 \subsubsection{Fazit der Auswertung}
 
 Die Hintergrunddaten welche vom \textit{IRC}-Protokoll versandt werden ergeben einen geringen, in Kauf zu nehmenden Datenoverhead.
-Zu beobachten ist, dass das Datenvolumen der Versendeten Daten, sowohl bei Positionsdaten als auch bei Textnachrichten, durch die
-Verschlüsselung und die anschliessende Konvertierung in die \textit{Base64}-Darstellung zunimmt. Als großen Vorteil kann hier aber
-gesehen werden, dass es mit einmaligem Versenden einer Position möglich ist $n$ Teilnehmer eines \textit{Channels} diese zu
-übermitteln, da alle die Nachrichten innerhalb dieses \textit{Channels} lesen können. Somit ergibt sich hier ein großer Vorteil
-gegenüber dem Aufbauen von $n$ einzelnen Verbindungen. Würde man einen solchen Ansatz wählen, müssten $n$ Verbindungen geöffnet
-werden und die Daten folglich auch $n$ Mal versandt werden. Der dabei entstehnde Datenverkehr steht in keiner Relation zu dem der
-gewählten Lösung. Somit stellt das \textit{IRC}-Protokoll eine hervorragende Lösung für Programme dieser Art dar.
-
-%\begin{figure}[!ht]
-%\centering
-% \includegraphics[width=10cm]{Bilder/verbindungen}
-% \caption{Vergleich von n-Verbindungen und \textit{Friend Finder}}
-%\end{figure}
+Allerdings ist der große Vorteil von \textit{IRC}, dass die \textit{Channels} als \textit{Broadcast}-Medium genutzt werden können.
+Diese Tatsache macht es möglich, Daten $n$ Teilnehmer zugänglich zu machen und dabei diese nur einmal, über eine aktive
+Verbindung, zu senden. Berücksichtigt man dies, so fällt, der ohnehin geringe Datenoverhead, nicht mehr ins Gewicht. Würde man
+diese Daten über $n$ getrennte Verbindungen an die Teilnehmer versenden, so müssten ebensoviele Verbindungen geöffnet werden und
+die Daten anstelle von einmal, $n$ Mal versandt werden.\newline
+In der folgenden Graphik wird das Versenden der Daten über $n$ getrennte Verbindungen, sowie die in\textit{Friend Finder}
+implementierte Methode verglichen. Es wird angenommen das die versandten Positionsdaten eine Größe von 430 Byte, und ein
+\textit{Acknowledgement} 150 Byte haben. Des weiteren wird angenommen dass alle Nutzer die Daten
+empfangen auch Positionsdaten senden und somit auch $4 \cdot n$ \textit{Acknowledgements} versandt werden müssen. Daraus ergibt
+sich die Formel $(n \cdot 430) + (n \cdot 4 \cdot 150)$. 
+
+\begin{figure}[!ht]
+\centering
+ \includegraphics[width=10cm]{Bilder/graph}
+ \caption{Vergleich von $n$-Verbindungen und \textit{Friend Finder}}
+\end{figure}
-- 
cgit v1.2.3-55-g7522

