master
Icedream 2018-04-19 11:44:10 +02:00
parent 7726b953b9
commit ff141172d0
Signed by: icedream
GPG Key ID: 1573F6D8EFE4D0CF
9 changed files with 148 additions and 0 deletions

143
08-Kittelberger_Carl_TCP.md Normal file
View File

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

View File

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB