diff --git a/08-Kittelberger_Carl_TCP.md b/08-Kittelberger_Carl_TCP.md new file mode 100644 index 0000000..65bd002 --- /dev/null +++ b/08-Kittelberger_Carl_TCP.md @@ -0,0 +1,143 @@ +--- +author: Carl Kittelberger +date: 2018-04-19 +title: "ITS: Transmission Control Protocol" +institute: "Ferdinand-von-Steinbeis Berufsschule" +lang: de-DE +babel-lang: ngerman +babel-otherlangs: +- english +polyglossia-lang: + name: german + options: + - spelling=new +classoption: oneside +colorlinks: true +documentclass: report +fontsize: 12pt +logo: img/steinbeis.png +mainfont: Arial +papersize: a4 +sansfont: Arial +tables: true +template: template.tex + +toc: true + +header-includes: + # For \pageref{LastPage} + - \usepackage{lastpage} + + # For \textcolor + - \usepackage{xcolor} + + # Long tables (used by pandoc latex template itself) + #- \usepackage{longtable} + + # Localization to German for all package injections + #- \usepackage[ngerman]{babel} + + # Fancy header! + - \usepackage{fancyhdr} + - \usepackage{graphicx} + - \pagestyle{fancy} + - \fancyhf{} + - \fancyhead[L]{\large{\textit{\textbf{ITS} \\ TCP}}} + - \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}} + - \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}} + - \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage{}/\pageref*{LastPage}}}} + - \renewcommand{\headrulewidth}{0.4pt} + - \renewcommand{\footrulewidth}{0.4pt} + - \setlength\headheight{36pt} + - \fancypagestyle{plain}{} + + # monospace + - \lstset{basicstyle=\footnotesize\ttfamily,breaklines=true} + - \lstset{framextopmargin=50pt} +--- + +\newpage + +# Download einer Datei via FTP + +![](img/08-tcp/ftp_advent_handshake.png) + +## IP und Port des Rechners + +Die IP des Rechners im Protokoll ist `192.168.217.128` und der verwendete +lokale Port ist `60176` in der ersten Verbindung. + +## IP des Port des Servers + +Die Daten, die vom Server gesendet werden, kommen von der IP `192.168.217.10` +und vom Port `21`. + +## Sequence und Acknowledgement Numbers der ersten Pakete + +![](img/08-tcp/ftp_advent_tcppakete.png) + +### Sequence Numbers + +1. Sequence Number: `3459893177` (relativ `0`) +2. Sequence Number: `2015123918` (relativ `0`) +3. Sequence Number: `3459893178` (relativ `1`) + +### Acknowledgement Numbers + +1. Acknowledgement Number: `0` +2. Acknowledgement Number: `3459893178` (relativ `1`) +3. Acknowledgement Number: `2015123919` (relativ `1`) + +## Kennzeichen eines Acknowledgements + +![](img/08-tcp/ftp_advent_ack.png) + +Ein Acknowledgement lässt sich an den `Flags` in einem TCP-Paket erkennen. Jedes Bit des `Flags`-Feldes stellt eine Eigenschaft des TCP-Pakets da, von denen eines vorgibt, dass ein TCP-Paket ein Acknowledgement ist. + +## Sequence und Acknowledgement Numbers im Datenstrom enthalten? + +Im eigentlichen Datenstrom finden die Sequence und die Acknowledgement Numbers keine Erwähnung. Beide Zahlen sind TCP-Metadaten die alleine der Wiederzusammensetzung der einzelnen TCP-Pakete dienen, um den eigentlichen Inhalt daraus wieder zu lesen. + +# Download einer größeren Datei via FTP + +## Verbindungsaufbau und -abbau + +### Verbindungsaufbau + +![](img/08-tcp/ftp_linuxbuch_verbindungsaufbau.png) + +### Verbindungsabbau + +![](img/08-tcp/ftp_linuxbuch_verbindungsabbau.png) + +## Größe des Dateninhalts der Pakete vom Server + +![](img/08-tcp/ftp_linuxbuch_retrbytes.png) + +Laut der Antwort zu der FTP-Anfrage (dem `RETR`), die Linux-Buch-PDF zu übertragen, werden `15144102 bytes` übertragen. + +![](img/08-tcp/ftp_linuxbuch_1448.png) + +Die Daten werden in jeweils 1448 Bytes großen TCP Paketen geliefert. + +## Entwicklung der Sequence und Acknowledgement Numbers + +Die Pakete, die wir vom Server erhalten, starten mit einer Sequence Number von `1`. +Von da an, steigt die Sequence Number von den Daten die wir erhalten immer um +die Anzahl der Bytes. + +Die Pakete, die von uns kommen, mit denen wir jeweils die Übertragung der Pakete bestätigen, haben immer die Sequence Number `1`. + +Die letzte Sequence Number die vom Server gemeldet wird ist `15144104` per Verbindungsabbau und wir bestätigen von unserer Seite mit der Sequence Number `2`. + +## Zeitabstand zwischen Paketen vom Server + +Die Zeitabstände zwischen den Paketen, die wir vom Server erhalten, variieren im Bereich von üblicherweise bis zu 100 Mikrosekunden. + +## `Window Size Value`-Feld und Veränderungen + +`Window Size Value` hat den Wert `91` bei allen Paketen die wir vom Server erhalten, die den Inhalt der Datei übertragen. Pakete von uns haben den Wert `52886`. Über die Übertragung hinweg ändert sich der Wert nicht. + +## Datendurchsatz des Downloads und Berechnung + +## Doppelte ACKs? Retransmitted Segments? diff --git a/08_Lehrer_TCP.md b/08_Lehrer_TCP.md index 358562c..019b3b4 100644 --- a/08_Lehrer_TCP.md +++ b/08_Lehrer_TCP.md @@ -53,3 +53,8 @@ Die folgenden Phasen werden in dieser Reihenfolge ausgeführt: \draw[->] ([yshift=-2cm]server.south) -- ([yshift=-2cm]client.south) node[above] {ack: Acknowledgement Number}; \draw[->] ([yshift=-3cm]client.south) -- ([yshift=-3cm]server.south) node[above] {ack: Sequence Number...}; ``` + +Bytes werden durchnummeriert mittels einer *Sequence Number*. +Jedes TCP-Paket wird quittiert mit einer *Acknowledgement Number*, welche +sich aus der Addition der Sequence Number und der Byteanzahl ergibt. + diff --git a/img/08-tcp/ftp_advent_ack.png b/img/08-tcp/ftp_advent_ack.png new file mode 100644 index 0000000..49e814a Binary files /dev/null and b/img/08-tcp/ftp_advent_ack.png differ diff --git a/img/08-tcp/ftp_advent_handshake.png b/img/08-tcp/ftp_advent_handshake.png new file mode 100644 index 0000000..734c0bd Binary files /dev/null and b/img/08-tcp/ftp_advent_handshake.png differ diff --git a/img/08-tcp/ftp_advent_tcppakete.png b/img/08-tcp/ftp_advent_tcppakete.png new file mode 100644 index 0000000..691316e Binary files /dev/null and b/img/08-tcp/ftp_advent_tcppakete.png differ diff --git a/img/08-tcp/ftp_linuxbuch_1448.png b/img/08-tcp/ftp_linuxbuch_1448.png new file mode 100644 index 0000000..9ba7e6b Binary files /dev/null and b/img/08-tcp/ftp_linuxbuch_1448.png differ diff --git a/img/08-tcp/ftp_linuxbuch_retrbytes.png b/img/08-tcp/ftp_linuxbuch_retrbytes.png new file mode 100644 index 0000000..81f190b Binary files /dev/null and b/img/08-tcp/ftp_linuxbuch_retrbytes.png differ diff --git a/img/08-tcp/ftp_linuxbuch_verbindungsabbau.png b/img/08-tcp/ftp_linuxbuch_verbindungsabbau.png new file mode 100644 index 0000000..a2e64f8 Binary files /dev/null and b/img/08-tcp/ftp_linuxbuch_verbindungsabbau.png differ diff --git a/img/08-tcp/ftp_linuxbuch_verbindungsaufbau.png b/img/08-tcp/ftp_linuxbuch_verbindungsaufbau.png new file mode 100644 index 0000000..cd6b614 Binary files /dev/null and b/img/08-tcp/ftp_linuxbuch_verbindungsaufbau.png differ