2018-03-22 09:39:12 +00:00
|
|
|
---
|
|
|
|
title: Transport Control Protocol (TCP)
|
|
|
|
author: Carl Kittelberger
|
|
|
|
|
|
|
|
papersize: a4
|
|
|
|
classoption: oneside
|
|
|
|
mainfont: Arial
|
|
|
|
sansfont: Arial
|
|
|
|
|
|
|
|
header-includes:
|
|
|
|
- \usepackage{longtable}
|
|
|
|
---
|
|
|
|
|
|
|
|
TCP ist ein *Layer-4-Protokoll*. Es addressiert Anwendungen über **Ports**.
|
|
|
|
|
|
|
|
- *reliable* -- zuverlässig
|
|
|
|
- *connection oriented* -- verbindungsorientiert
|
|
|
|
|
|
|
|
Die folgenden Phasen werden in dieser Reihenfolge ausgeführt:
|
|
|
|
|
|
|
|
# Verbindungsaufbau
|
|
|
|
|
|
|
|
```commute
|
|
|
|
% this needs to be integrated with https://github.com/sdiehl/cats
|
|
|
|
|
|
|
|
\node[] (server) {server};
|
|
|
|
\node[left = of server] (client) {client};
|
|
|
|
|
|
|
|
\node[below of=server, node distance=5cm] (server_ground) {};
|
|
|
|
\node[below of=client, node distance=5cm] (client_ground) {};
|
|
|
|
|
|
|
|
\draw (client) -- (client_ground);
|
|
|
|
\draw (server) -- (server_ground);
|
|
|
|
\draw[->] ([yshift=-1cm]client.south) -- ([yshift=-1cm]server.south) node[above] {syn};
|
|
|
|
\draw[->] ([yshift=-2cm]server.south) -- ([yshift=-2cm]client.south) node[above] {ack+syn};
|
|
|
|
\draw[->] ([yshift=-3cm]client.south) -- ([yshift=-3cm]server.south) node[above] {ack};
|
|
|
|
```
|
|
|
|
|
|
|
|
# Datenaustausch
|
|
|
|
|
|
|
|
```commute
|
|
|
|
% this needs to be integrated with https://github.com/sdiehl/cats
|
|
|
|
|
|
|
|
\node[] (server) {server};
|
|
|
|
\node[left = of server] (client) {client};
|
|
|
|
|
|
|
|
\node[below of=server, node distance=5cm] (server_ground) {};
|
|
|
|
\node[below of=client, node distance=5cm] (client_ground) {};
|
|
|
|
|
|
|
|
\draw (client) -- (client_ground);
|
|
|
|
\draw (server) -- (server_ground);
|
|
|
|
\draw[->] ([yshift=-1cm]client.south) -- ([yshift=-1cm]server.south) node[above] {ack: Sequence Number, Datenlänge};
|
|
|
|
\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...};
|
|
|
|
```
|
2018-04-19 09:44:10 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
|