Skip to content
On this page
Application Layer
1

Application Layer

19.04.2023
Application Layer
2

Applications

  • HTTP / WWW
  • Email (IMAP / POP /SMTP)
  • Media Streaming
  • Youtube
  • VoIP
  • Skype & Co.
  • Dropbox & Co.
  • VPN
19.04.2023
Application Layer
3

DNS (Domain Name System)

  • Auflösung einer IP anhand eines Namens
  • Nameserver
    • z.B. switch.ch
    • registrierung von domains mit toplevel
    • .ch, .de, .uk, .app, .net, .com
    • subdomains
      • Entriy Types
      • A
      • CNAME
      • M
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
15

Container für Daten

  • Container für Daten
    • HTML
    • JSON
    • XML
    • Plain Text
    • Media
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

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