\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[swedish]{babel}
\usepackage[hyphens]{url}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{cleveref}
\usepackage[backend=biber]{biblatex}
\usepackage{parskip}

\addbibresource{dt024g_rapportmall.bib}

\lstset{
    basicstyle=\ttfamily\small,
    breaklines=true,
    frame=single,
    numbers=left,
    numberstyle=\tiny\color{gray},
    keywordstyle=\color{blue},
    commentstyle=\color{gray},
    stringstyle=\color{red!60!black},
    showstringspaces=false,
}

\title{DT024G --- Projektrapport \\ \large Titel på din applikation}
\author{Förnamn Efternamn \\ \texttt{abcd1234@student.miun.se}}
\date{\today}

\begin{document}
\maketitle

\begin{abstract}
    Skriv ett kort sammandrag (cirka 100--150 ord) som beskriver vad projektet
    handlar om, hur du har löst uppgiften och vilket resultat du kom fram till.
    Sammandraget skrivs sist av allt.
\end{abstract}

\tableofcontents
\newpage

%==============================================================================
\section{Introduktion}\label{sec:introduktion}

\subsection{Bakgrund}
Beskriv kort vad projektet handlar om och i vilket sammanhang det är genomfört.
En till två stycken räcker.

\subsection{Syfte}
Formulera tydligt vad du vill uppnå med just detta projekt. Detta är
\emph{ditt} syfte med uppgiften, inte kursens.

\subsection{Mål}\label{sec:mal}
Formulera tre konkreta och mätbara mål för ditt projekt. Målen ska vara så
specifika att en klasskamrat med ett annat projekt inte kan återanvända dem.
Du kommer att verifiera dessa i \cref{sec:resultat}.

\begin{enumerate}
    \item Mål 1: \ldots
    \item Mål 2: \ldots
    \item Mål 3: \ldots
\end{enumerate}

\subsection{Författarnas bidrag}
Detta avsnitt används endast om projektet har genomförts i grupp om två.
Beskriv tydligt vem som har gjort vad i projektet. Redovisa fördelningen av
arbetet mellan författarna, exempelvis vem som ansvarat för design av
protokollet, implementation av klient respektive server, testning,
Wireshark-analys samt skrivande av rapportens olika delar. Båda författarna
ska ha bidragit aktivt till projektets samtliga delar.

%==============================================================================
\section{Teori}\label{sec:teori}

\subsection{Applikationslagrets syfte}
Förklara vad applikationslagret har för roll i nätverksstacken.

\subsection{Tre protokoll på applikationslagret}
Beskriv kort tre protokoll på applikationslagret. Exempelvis HTTP, SMTP, DNS,
FTP, POP3, IMAP eller liknande.

\subsubsection{Protokoll 1}
Kort beskrivning.

\subsubsection{Protokoll 2}
Kort beskrivning.

\subsubsection{Protokoll 3}
Kort beskrivning.

\subsection{Fördjupning: \emph{[valt protokoll]}}
Välj ett av ovanstående protokoll och förklara mer ingående hur det fungerar.
Beskriv meddelandeformat, typisk sekvens av meddelanden och vilket
transportlagerprotokoll det vanligen använder.

\subsection{Förhållande mellan applikationslagret och transportlagret}
Beskriv hur applikationslagret förhåller sig till transportlagret. Vilken typ
av data skickas, och vilka tjänster använder applikationslagret från
transportlagret?

\subsection{Var kommer applikationslagrets data ifrån?}
Beskriv vad som händer ``ovanför'' applikationslagret. Hur produceras och
konsumeras den data som applikationslagret sedan lägger i sitt datafält?

\subsection{Eget applikationsprotokoll}\label{sec:egetprotokoll}
Beskriv hur ditt protokoll är tänkt att fungera. Använd ett sekvensdiagram
(se \cref{fig:sekvens}) som stöd.

\begin{figure}[h]
    \centering
    % \includegraphics[width=0.8\textwidth]{sekvensdiagram.pdf}
    \fbox{\parbox{0.6\textwidth}{\centering \vspace{2cm} [Sekvensdiagram här] \vspace{2cm}}}
    \caption{Sekvensdiagram över handskakning, datautbyte och avslutning.}
    \label{fig:sekvens}
\end{figure}

%==============================================================================
\section{Metod}\label{sec:metod}

\subsection{Tillvägagångssätt}
Beskriv kortfattat hur du har gått tillväga för att lösa uppgiften. Vilket
språk, vilket transportlagerprotokoll, hur har arbetet planerats?

\subsection{Utvärdering mot mål}
För varje mål i \cref{sec:mal}, beskriv hur du tänker verifiera att det är
uppfyllt.

\subsection{Testdesign}
Beskriv hur du har designat dina tester. Vilka scenarier testas? Hur används
Wireshark som verifieringsverktyg?

\subsection{Användning av AI}
Redogör ingående för hur AI-verktyg (exempelvis ChatGPT, Claude, GitHub
Copilot eller liknande) har använts i arbetet med uppgiften. Var konkret och
transparent. Beskriv bland annat:
\begin{itemize}
    \item Vilka verktyg och modeller som använts.
    \item I vilka delar av projektet AI har använts, t.ex.\ vid idégenerering,
          design av protokollet, implementation, felsökning, testning eller
          skrivande av rapporten.
    \item Exempel på prompts (frågor/instruktioner) som ställts till verktyget
          samt hur svaren har bearbetats, verifierats och eventuellt anpassats.
    \item I vilken utsträckning AI-genererad kod eller text har använts direkt
          respektive omarbetats, och hur du säkerställt att du själv förstår
          resultatet.
    \item Eventuella begränsningar eller felaktigheter du stött på i
          AI-verktygens svar.
\end{itemize}
Syftet med avsnittet är att tydliggöra vad som är ditt eget arbete och hur AI
har bidragit som stöd i processen.

%==============================================================================
\section{Implementation}\label{sec:implementation}

\subsection{Översikt}
Beskriv från en hög nivå hur ditt applikationslagerprotokoll fungerar i
praktiken.

\subsection{Pseudokod / sekvensdiagram}
Visa pseudokod eller ett sekvensdiagram för programmets logik.

\begin{lstlisting}[caption={Pseudokod för serverns huvudloop.},label=lst:server]
while running:
    accept connection
    perform handshake
    while connection open:
        receive request
        process request
        send response
    close connection
\end{lstlisting}

\subsection{Relevanta kodsnuttar}
Plocka ut \emph{relevanta} delar av koden och förklara vad de gör. Undvik att
klistra in hela filer --- visa bara det som är intressant för förståelsen.

\begin{lstlisting}[language=Python,caption={Exempel: hantering av handskakning.},label=lst:handshake]
def handshake(conn):
    conn.sendall(b"HELLO")
    response = conn.recv(1024)
    if response != b"HELLO_ACK":
        raise ConnectionError("Handskakning misslyckades")
\end{lstlisting}

%==============================================================================
\section{Resultat}\label{sec:resultat}

\subsection{Utvärdering mot mål}
Redovisa resultatet av den utvärdering du beskrev i \cref{sec:metod}. Visa
tydligt om respektive mål i \cref{sec:mal} är uppfyllt.

\subsection{Testresultat}
Redovisa resultatet av dina tester. En Wireshark-skärmdump som visar
protokollets faser kan vara värdefull här.

\begin{figure}[h]
    \centering
    % \includegraphics[width=0.8\textwidth]{wireshark.png}
    \fbox{\parbox{0.6\textwidth}{\centering \vspace{2cm} [Wireshark-skärmdump] \vspace{2cm}}}
    \caption{Wireshark-inspelning av en typisk session.}
    \label{fig:wireshark}
\end{figure}

%==============================================================================
\section{Diskussion}\label{sec:diskussion}

\subsection{Reflektion}
En kortare självreflektion över ditt projekt och dina resultat. Finns det
begränsningar i ditt protokoll? Vad skulle du gjort annorlunda?

\subsection{Slutsats}
Visa tydligt att de mål du satte i \cref{sec:mal} är uppfyllda och att alla
krav från projektuppgiften är besvarade.

%==============================================================================
\printbibliography

\end{document}
