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