Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NET: Mitschrifen 30.11.2020 #88

Merged
merged 5 commits into from
Dec 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 32 additions & 16 deletions NET/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,18 +63,19 @@ Rechnernetzkonzepte und -architekturen
- [Exkurs: Raw Sockets](#exkurs-raw-sockets)
- [Praxisbeispiel](#praxisbeispiel)
- [Trans`port`schicht](#transportschicht)
- [User Datagram Protocol (UDP)](#user-datagram-protocol-udp)
- [User Datagram Protocol (UDP)](#user-datagram-protocol-udp)
- [Transmission Control Protocol (TCP)](#transmission-control-protocol-tcp)
- [Congestion / Receiving Window](#congestion--receiving-window)
- [TCP-Optionen](#tcp-optionen)
- [Verbindungsaufbau](#verbindungsaufbau)
- [SYN-Cookies](#syn-cookies)
- [TCP Fast-Open (TFO)](#tcp-fast-open-tfo)
- [Multipath TCP](#multipath-tcp)
- [Multipath TCP (MTCP)](#multipath-tcp-mtcp)
- [Transport Layer Security (TLS)](#transport-layer-security-tls)
- [Quick UDP Internet Connections (QUIC)](#quick-udp-internet-connections-quic)
- [Sockets](#sockets)
- [SOCK_STREAM](#sock_stream)
- [SOCK_DGRAM](#sock_dgram)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

Expand Down Expand Up @@ -884,6 +885,8 @@ Flags: Bitflags zur Steuerung der Kommunikation (z.B. Aufbau, Trennung, der Verb

#### TCP Fast-Open (TFO)

<!--gern gewählte Prüfungsfrage-->

- Ziel: Netzwerklatenz von Anwendungen um eine volle RTT reduzieren (3-Wege-Handshake vor Übermittlung von Anwendungsdaten)
- Grundprinzip: Client fragt beim ersten Verbindungsaufbau eine spezifisches `TFO`-Cookie an
- Bei erneutem Verbindungsaufbau werden direkt mit dem ersten Segment Anwendungsdaten und der gespeicherte `TFO`-Cookie übermittelt (kein regulärer Drei-Wege-Handshake erforderlich)
Expand All @@ -892,12 +895,17 @@ Flags: Bitflags zur Steuerung der Kommunikation (z.B. Aufbau, Trennung, der Verb

![TCP Fast-Open](resources/tcp-fastopen.png)<!-- width=200px -->

### Multipath TCP
### Multipath TCP (MTCP)

- klassische TCP-Verbindung an eine Netzwerkschnittstelle gebunden -> parallele Nutzung mehrerer Netzwerkschnittstellen durch `MTCP`
- klassische TCP-Verbindung an eine Netzwerkschnittstelle gebunden -> bei mehreren Netzwerkschnittstellen ineffiziente Nutzung der Resourcen
- Ziel von `MTCP`: parallele Nutzung mehrerer Netzwerkschnittstellen
- keine Änderung auf Anwendungsschicht -> Implementation von TCP-Subflows innerhalb der Transportschicht
- TCP-Subflows verhalten sich wie normale TCP-Verbindungen auf separaten Pfaden
- Realisierung der Protokolloperationen durch TCP-Optionen
- jede TCP-Verbindung besitzt eigene Sequenznummer + zusätzlich globale Sequenznummer -> Paketverluste werden auf Subflow-Ebene erkannt und behandelt
- bei Ausfall eines Subflows -> erneute Übertragung über verfügbare Subflows

<!--ToDo: Mehr Infos von den Folien übernehmen-->
<!--Motivation und Grundprinzip wichtig-->
<!--Motivation und Grundprinzip sind hier wichtig-->

### Transport Layer Security (TLS)

Expand All @@ -910,7 +918,9 @@ Flags: Bitflags zur Steuerung der Kommunikation (z.B. Aufbau, Trennung, der Verb
![QUIC](resources/quic.png)<!-- width=500px -->

- Implementation wichtiger Protokollmechanismen (u.a. Übertragungswiederholung bei Verlusten, Congestion Control, Flow Control) oberhalb von UDP
<!--ToDo: Mehr Infos von den Folien übernehmen-->
- bietet Möglichkeit, ab dem ersten Paket Anwendungsdaten zu übermitteln
- Verbindungsaufbau und Tausch kryptografischer Parameter in einem Schritt -> geringerer Overhead als TCP+TLS
- Verbindungen besitzen eindeutigen Identifier -> unabhängig von IP+Port

## Sockets

Expand All @@ -919,23 +929,29 @@ Flags: Bitflags zur Steuerung der Kommunikation (z.B. Aufbau, Trennung, der Verb

![Unterteilung von Sockets](resources/sockets.png)

<!--Abbildungen auf Folien 19 und 20 sind höchstgradig prüfungsrelevant-->

### SOCK_STREAM

- Serverseite muss einen Socket in einen Zustand überführen, in dem Verbindungen nach einer Verbindungsanfrage (mittels Aufruf `connect()`) durch einen Client etabliert werden können
- Überführung und Etablierung einer Verbidnung erfolgt in drei Schritten
- Überführung und Etablierung einer Verbindung erfolgt in drei Schritten
- 1. `bind()` Binden des Sockets an einen Port
- 2. `listen()` Markierung des Sockets als passiv
- 3. `accept()` Akzeptieren von eingehenden Verbindungen (Reguläres Verhalten: blockierender Aufruf)
- -> erst ab `accept()` kann der 3W-Handshake erfolgen
- -> erst ab `accept()` kann der 3W-Handshake erfolgen (bis dahin ist der Prozess blockiert)

<!--Abbildung höchstgradig prüfungsrelevant-->

![Sockets-Übersicht](resources/sockets-stream.png)<!-- width=500px -->
![Schematischer Ablauf der Server/Client-Kommunikation über SOCK_STREAM](resources/sockets-stream.png)<!-- width=500px -->

<!-- Fortsetzung folgt nach der nächsten Vorlesung
### SOCK_DGRAM

- im Falle von Sockets des Typ DGRAM ist keine Überführung des Sockets in einen verbindungbereiten Zustand erforderlich
- versandt von Datagrammen über UDP unter Angabe von IP und Port
- keine Überführung des Sockets in einen verbindungbereiten Zustand erforderlich
- `bind()` bindet den Socket an einen Port
- kein Verbidungsaufbau (UDP) -> `sendto()` erfordert stets alle Informationen des Kommunikationsendpunktes
- `recvfrom()` blockiert den Prozess

<!--Abbildung höchstgradig prüfungsrelevant-->

![Schematischer Ablauf der Server/Client-Kommunikation über SOCK_DGRAM](resources/sockets-dgram.png)<!-- width=500px -->

- **TBC**
-->
<!--Vergleich von TCP und UDP gerne Prüfungsfrage-->
Binary file added NET/resources/sockets-dgram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified NET/resources/sockets-stream.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.