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

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

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

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

|
||||
|
||||
### Verbindungsabbau
|
||||
|
||||

|
||||
|
||||
## Größe des Dateninhalts der Pakete vom Server
|
||||
|
||||

|
||||
|
||||
Laut der Antwort zu der FTP-Anfrage (dem `RETR`), die Linux-Buch-PDF zu übertragen, werden `15144102 bytes` übertragen.
|
||||
|
||||

|
||||
|
||||
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?
|
|
@ -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.
|
||||
|
||||
|
|
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 247 KiB |
After Width: | Height: | Size: 428 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 31 KiB |