Appearance
Application Layer
2
Applications #
- HTTP / WWW
- Email (IMAP / POP /SMTP)
- Media Streaming
- Youtube
- VoIP
- Skype & Co.
- Dropbox & Co.
- VPN
19.04.2023
Application Layer
NAT
4
19.04.2023
Application Layer
5
NAT #
- Network Address Translation
- Wie kommt man von einem Host mit einer privaten IP zu einem Host mit einer öffentlichen IP?
- Lösung: NAT
- Router Mappt private Adresse auf öffentliche Adress
- !! Verletzung der OSI Schichten, L3 braucht wissen über L4
- Verwendet bei UDP und TCP das Source Port Feld um sich zu merken, wie die Antworten von aussen nach Innen gemappt werden.
19.04.2023
Application Layer
6
NAT: Firewall #
- Datagramme / Verbindungen müssen immer erst von der privaten Adresse ausgehen.
- ... d.h. das NAT einen Firewalleffekt hat.
- Portmapping mapt bestimmte Ports auf private IP Adressen
- Begrenztes Buffering: Was passiert bei zu vielen Mappings?
19.04.2023
Application Layer
7
NAT unter Linux #
iptables
- ... eigentlich eine Firewal
- aber mit Postrouting / NAT rules
- a.k.a. Masquerading
19.04.2023
Application Layer
8
VPN #
- Virtual Private Network
- Hosts in unterschiedlichen physikalischen Netzen
- ... aber im gleichen "virtuellen" Netz.
- vgl. FHNW
- Private Adressräume
- Kann auf unterschiedlichen Layern implementiert sein.
19.04.2023
Application Layer
9
VPN #
- Nesting
- TCP/UDP
- ... in IP
- ... in TCP/UDP
- ... in IP
- ... in Ethernet
- ... on Physical
19.04.2023
Application Layer
10
VPN Vorteile #
- Verschlüsselt (vollständig!)
- NAT Traversal möglich
- Authentifizierung
- Anstatt alle Services nach aussen zu öffnen nur VPN nach aussen öffen (z.B. FHNW).
- Anonymisierung / Zugriff von anderen IP Adressen her
19.04.2023
Application Layer
11
VPN auf Linux (Client) #
- Wireguard (
wg
,wg-quick
) - openconnect
- ... läuft auch auf dem Target!
- Cisco VPN Client
- ... vor allem auf Windows
- Hide My Ass (HMA)
- ... auch auf mobile
- SSH Socks Proxy als leight weight VPN
19.04.2023
Application Layer
12
VPN auf Linux (Server) #
- Wiregaurd (Kernel)
- Open VPN
- Einfach konfigurierbar
- weit verbreitet
- Open Source Software
- PiVPN ... easy setup
- Cisco VPN
- weit verbreitet
- proprietär
19.04.2023
Application Layer
13
Firewall #
Internetsicherheit
Verbindungen nicht / nur begrenzt zulassen
... Applikationsseitig auf dem OS (Windows Firewall)
... Routerseitig am Internet.
Firewall auf Linux
iptables
Regeln für Packete und Verbindungen
- ACCEPT
- REJECT
- DROP
bash
# Auf eth0 alles akzeptieren
sudo iptables -A INPUT -i eth0 -j ACCEPT
19.04.2023
Application Layer
14
HTTP #
- Basiert auf TCP
- Client = Web Browser
- Firefox
- Chrome / Chromium
- Safari
- Server
- ... verschiende Frameworks
- URL / Path
19.04.2023
Application Layer
16
HTTP: Protcol #
curl -vvv dnet.pages.fhnw.ch/versuche/
Trying 86.119.24.176...
TCP_NODELAY set
Connected to dnet.pages.fhnw.ch (86.119.24.176) port 80 (#0)
> GET /versuche/ HTTP/1.1
> Host: dnet.pages.fhnw.ch
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Fri, 23 Aug 2019 10:22:29 GMT
< Server: Apache/2.4.18 (Ubuntu)
< Location: https://dnet.pages.fhnw.ch/versuche/
< Content-Length: 220
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
...
19.04.2023
Application Layer
17
URL / URI #
- Uniform Resource Locator
- Uniform Resource Identifier
- max length: je nach Browser ca. 2000 characters
bash
https://dnet.pages.fhnw.ch:5000/versuche?id=11;host=true
19.04.2023
Application Layer
18
HTTPS #
- HTTP über SSL/TLS
- End-zu-End verschlüsselt
- Zertifiziert / Vertraut
- Notwendig für Progressive Web App
- Let's Encrypt
19.04.2023
Application Layer
19
HTTPS #
- Handshake
- zuerst asymetrische Verschlüsselung
- Austausch eines symetrischen Keys
- Daten I/O
- symetrisch verschlüsselt
- ... mit ausgehandeltem Key
19.04.2023
Application Layer
20
HTTPS: Trusted Certificates #
- Zertifizierungstellen
- Root Zertifikate
- Vorinstalliert ...
- ... im Browser
- ... im OS
- Nachrüstbar
- ... self signed
- ... self issued
19.04.2023
Application Layer
21
Responsive #
- Optimiert für Viewport Dimensions
- Mobile First
@media
Query in CSS
19.04.2023
Application Layer
22
HTML #
- Hyper Text Markup Language
- Basiert auf XML
- Im WWW defacto Standard für den DOM
- Document Object Model
- Wird vom Browser gerendert als UI
- Kann von JS manipuliert werden
- Webseiten in Kombination mit CSS und JS
- Cascading Stylesheets
- JS / ECMA script / ES6
19.04.2023
Application Layer
23
Beispielseite HTML5 #
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Datennetze</title>
</head>
<body>
<h1 class="big">Webseite zu Datennetze</h1>
</body>
</html>
19.04.2023
Application Layer
24
Beispiel zu CSS #
css
.footnote {
position: absolute;
bottom: 1em;
text-align: center;
left: 1em;
}
19.04.2023
Application Layer
25
Serverside HTTP Frameworks #
- File Server via HTTP
- Apache2
- Frameworks
- Python Flask / Django
- Java Spring IO
- Apache2 / PHP
- Ruby on Rails
- NodeJS / express
- Golang + Framework
- Serverless (Amazon AWS, Firebase, MSAzure)
19.04.2023
Application Layer
26
Client Side HTTP #
- Browser
- https://caniuse.com/usage-table
- Android Chrome: ~40%
- Other Chrome: ~23%
- iOS Safari: ~13%
- Command Line Clients
- curl (Für debugging)
- wget
- lynx
19.04.2023
Application Layer
27
HTTP Methods #
- GET-Request
- URL-Encoded Parameter
- limitiert durch anzahl zeichen in URL
- Vorteil: Link Teilen
- Strategie: Magic Link
- Hash in der URL als Param
- Serverside Mapping von Daten zu Hash
- POST-Request
- Grosse Daten vom Browser an den Server senden
19.04.2023
Application Layer
28
Asynchrone Requests #
- Nur Content Laden welcher gebraucht wird (via JS)
- Javascript manipuliert den DOM
- HTTP Endpoints
- Standardisieren
- BSP. /users.json gibt liste von usern zurück
- ... selber Endpoint kann auch für eine APP / API verwendet werden
19.04.2023
Application Layer
29
Async Requests #
- APIs
- Beschreibung wie eine Webapp auch ausserhalb eines Browsers verwendet werden kann
- Web Socket
- Lange, offene verbindung zwischen client und server
- ... long polling
- Kein "aktives" Polling nötig in definiertem Intervall
- z.B. Chat Client
19.04.2023
Application Layer
30
19.04.2023