Commit e518b7a8 authored by MartinFIT's avatar MartinFIT

Text - Pcap4J schema example

parent c74863fa
......@@ -759,12 +759,12 @@
<workItem from="1522497530541" duration="842000" />
<workItem from="1522500741762" duration="879000" />
<workItem from="1522501667847" duration="219000" />
<workItem from="1522607629147" duration="1698000" />
<workItem from="1522607629147" duration="1852000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="376091000" />
<option name="totallyTimeSpent" value="376245000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -777,7 +777,6 @@
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1382" height="754" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Tool Output" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
......
......@@ -475,17 +475,15 @@ Repositář je komplexní distribuovaný systém, který je postaven na framewor
\end{figure}
\subsection{Pcap4J}
Jedná se o knihovnu pro jazyk Java pro zachytávání, sestrojení a odesílání paketů. Knihovna je stále ve vývoji \footnote{https://github.com/kaitoy/pcap4j}. Pcap4J pracuje nad nativní knihovnou (\texttt{libpcap}, \texttt{WinPcap}, nebo \texttt{Npcap} podle operačního systému) přes JNA (\texttt{Java Native Access}) \footnote{https://github.com/java-native-access/jna} a poskytuje aplikační rozhraní pro jazyk Java. Mimo výše uvedené činnosti dokáže pracovat s PCAP soubory, vytvářet a parsovat je na jednotlivé pakety.
Při parsování paketů jsou všechny typy paketů přístupné přes bázovou třídu \texttt{PcapPacket}, každý paket implementuje rozhraní \texttt{Packet}. Toto rozhraní nabízí mimo jiné dvě klíčové metody \texttt{contains} a \texttt{get}.
Metoda \texttt{contains} slouží ke kontrole, jestli je paket konkrétního typu, který chceme získat. Metoda má jako parametr třídu, které je paket typem, hlavička metody potom vypadá:
Jedná se o knihovnu pro jazyk Java pro zachytávání, sestrojení a odesílání paketů. Knihovna je stále ve vývoji. Pcap4J pracuje nad nativní knihovnou (\texttt{libpcap}, \texttt{WinPcap}, nebo \texttt{Npcap} podle operačního systému) přes JNA (\texttt{Java Native Access})
%\footnote{https://github.com/java-native-access/jna}
a poskytuje aplikační rozhraní pro jazyk Java. Mimo výše uvedené činnosti dokáže pracovat s PCAP soubory, vytvářet a parsovat je na jednotlivé pakety. Každý paket implementuje rozhraní \texttt{Packet}. Toto rozhraní nabízí mimo jiné dvě klíčové metody \texttt{contains} a \texttt{get}. Metoda \texttt{contains} slouží ke kontrole, jestli je paket konkrétního typu, který chceme získat. Metoda má jako parametr třídu, které je paket typem, hlavička metody potom vypadá:
\vspace{0.5cm}
\texttt{boolean contains(Class<T> clazz)}
\vspace{0.5cm}
\noindent Ke konkrétnímu typu paketu, např. IP paket, TCP paket, se přistupuje pomocí reflexe voláním metody:
\noindent Ke konkrétnímu typu paketu, např. IP paketu, se přistupuje pomocí reflexe voláním metody:
\vspace{0.5cm}
\texttt{T get(Class<T> clazz)}
......@@ -494,11 +492,20 @@ Metoda \texttt{contains} slouží ke kontrole, jestli je paket konkrétního typ
\noindent Tedy například:
\vspace{0.5cm}
\texttt{IpPacket ipPacket = packet.get(IpPacket.class);}
\texttt{IPv4Packet ipv4Packet = ethernetPacket.get(IPv4Packet.class);}
\vspace{0.5cm}
\noindent Návratová hodnota metody \texttt{get} je objekt třídy uvedené v parametru. Před voláním \texttt{get} je vhodné zkontrolovat typ pomocí metody \texttt{contains}. Z konkrétního paketu už lze získávat potřebné informace, v případě IP paketu údaje z hlavičky jako zdrojová a cílová IP adresa, verze protokolu apod. Analogicky lze postupovat i v případě ostatním typů paketů, Z TCP paketu lze získat údaje o portech, sekvenční čísla, checksum a další.
Knihovna reflektuje zapouzdření, které spočívá ve vložení protokolové datové jednotky (anglicky \texttt{Protocol Data Unit}) vyšší vrstvy do protokolové jednotky nižší vrstvy. Takže ethernetový paket může být současně i IP paketem a podobně.
\begin{figure}[!h]
\centering
\includegraphics[width=14.8cm]{template-fig/Pcap4JExample.pdf}
\caption{Schéma znázorňující výše uvedený příklad pro manipulaci s pakety \cite{gitPcap4J}.}
\label{FIG_Architecture}
\end{figure}
\section{Scénáře}
\subsection{Ukládání paketů}
......
......@@ -319,4 +319,11 @@
url = "http://whatis.techtarget.com/definition/slack-space-file-slack-space",
note = "[Online; navštíveno 01.04.2018]"
}
@MISC{gitPcap4J,
title = "{\it Pcap4J}",
author = "Kaito Yamada",
url = "https://github.com/kaitoy/pcap4j",
note = "[Online; navštíveno 01.04.2018]"
}
\ No newline at end of file
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment