--- marp: true theme: gaia paginate: true backgroundColor: #fff header: "Grundlagen IT- und Internettechnik (223015c)" footer: "Michael Czechowski – HdM Stuttgart – SoSe 2026" title: "Kapitel 2: Netzwerke, Protokolle & CSS" --- # Kapitel 2 ## Netzwerke, Protokolle & CSS --- # Sub-Sektion A: Netzwerk ## Wie reisen Pakete? --- # Drei Adressen — IP · MAC · Port | Adresse | Identifiziert | Beispiel | |---------|---------------|----------| | **IP** | das **Endgerät** (welt-eindeutig) | `192.168.1.42` (v4) · `2001:db8::1` (v6) | | **MAC** | die **Netzwerk-Karte** (lokal eindeutig) | `00:1A:2B:3C:4D:5E` (6 Byte hex) | | **Port** | das **Programm** auf dem Gerät | `80` (HTTP) · `443` (HTTPS) · `22` (SSH) | **Drei Schichten, drei Fragen.** „Welcher Computer?" → IP. „Welches Kabel/WLAN?" → MAC. „Welches Programm?" → Port. --- ![bg fit](./assets/demos/ip-packet.png) --- ![bg fit](./assets/demos/client-server-ports.png) --- # TCP/IP-Schichtenmodell --- # Warum Schichten? Komplexes Problem **„Daten von A nach B"** in kleine Aufgaben **zerlegt:** - Welche elektrischen Signale auf dem Kabel? (Schicht 1) - Wie ist das Paket adressiert? (Schicht 2) - Wie kommt das Paket über mehrere Hops? (Schicht 3) - Wie ist die Verbindung zuverlässig? (Schicht 4) - Welche Anwendung benutzt das? (Schicht 5) **Jede Schicht ignoriert, was die anderen tun.** Modularer, austauschbarer, debugbarer. --- # TCP/IP · 4 Schichten | # | Schicht | Aufgabe | Beispiel-Protokolle | Dateneinheit | |---|---------|---------|---------------------|--------------| | 1 | **Network Access** | Bits auf Kabel/WLAN | Ethernet · WiFi | Frame | | 2 | **Internet** | Routing über mehrere Hops | **IP** · ICMP | Packet | | 3 | **Transport** | Verbindung + Zuverlässigkeit | **TCP** · UDP | Segment | | 4 | **Application** | Anwendungs-Logik | **HTTP** · DNS · SMTP | Data | Schichten von unten nach oben. Jede höhere Schicht **nutzt** die darunter. --- ![bg fit](./assets/demos/encap-stack.png) --- # Encapsulation — Datenüberbringung ``` [Application Data] ↓ + TCP-Header [Segment] ↓ + IP-Header [Packet] ↓ + Ethernet-Header + Trailer [Frame] ↓ als Bits auf das Kabel/WLAN ``` Beim Empfänger: **umgekehrte Reihenfolge.** --- # OSI vs TCP/IP | OSI (7 Schichten) | TCP/IP (4 Schichten) | |-------------------|----------------------| | 7 Application | Application | | 6 Presentation | (in App-Schicht) | | 5 Session | (in App-Schicht) | | 4 Transport | Transport | | 3 Network | Internet | | 2 Data Link | Network Access | | 1 Physical | (in Network Access) | **OSI:** theoretisches Lehrbuch-Modell (ISO, 1984). **TCP/IP:** das Modell, das in der Praxis verwendet wird. --- # DNS — die Adress-Auskunft --- ![bg fit](./assets/demos/dns-lookup.png) --- ![bg fit](./assets/demos/dns-tree.png) --- # HTTP — die Sprache des Webs --- # HTTP-Request — was geschickt wird ```http GET /index.html HTTP/1.1 Host: librete.ch User-Agent: Mozilla/5.0 (Macintosh; …) Accept: text/html,application/xhtml+xml Accept-Language: de-DE,en-US;q=0.9 Connection: keep-alive ``` | Bestandteil | Was | |-------------|-----| | `GET` | **Method** — was tun wir | | `/index.html` | **Path** — was wollen wir | | `HTTP/1.1` | **Version** | | `Host: …` | **Header** (mehrere möglich) | --- # HTTP-Response — was zurückkommt ```http HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 1234 Cache-Control: max-age=3600 Server: nginx/1.24 ... ``` | Bestandteil | Was | |-------------|-----| | `200 OK` | **Statuscode + Message** | | `Content-Type: …` | **Header** mit Meta-Information | | (leere Zeile) | trennt Header von Body | | ` --- # Statuscodes — die wichtigsten | Code | Name | Bedeutung | |------|------|-----------| | **200** | OK | alles gut, hier dein Inhalt | | **301** | Moved Permanently | Seite ist umgezogen, hier neue URL | | **302** | Found | temporäre Weiterleitung | | **400** | Bad Request | deine Anfrage war kaputt | | **401** | Unauthorized | du musst dich einloggen | | **403** | Forbidden | eingeloggt aber nicht berechtigt | | **404** | Not Found | gibt's nicht | | **500** | Internal Server Error | Server hat Bug | | **503** | Service Unavailable | Server überlastet / down | --- # HTTP/1.1 → HTTP/2 → HTTP/3 | Version | Jahr | Hauptverbesserung | |---------|------|-------------------| | HTTP/1.0 | 1996 | erste Spec | | **HTTP/1.1** | 1997 | persistent connections (1 TCP für viele Requests) | | **HTTP/2** | 2015 | multiplexing (parallele Streams im selben TCP) + Header-Komprimierung | | **HTTP/3** | 2022 | basiert auf **QUIC** (UDP statt TCP), schnellere Handshakes | Heute: HTTP/2 dominant. HTTP/3 wächst stark, besonders bei Google, Cloudflare. --- ![bg fit](./assets/demos/tcp-handshake.png) --- # Block F · URL → Pixel in 7 Schritten 1. **URL parsen** — Schema, Host, Port, Path extrahieren 2. **DNS-Lookup** — Host-Name → IP-Adresse 3. **TCP-Handshake** mit Server-IP auf Port 443 4. **TLS-Handshake** für https (Zertifikat prüfen) 5. **HTTP-Request** senden 6. Server antwortet mit **HTML, CSS, JS** (als Body) 7. Browser **parsed + rendert** — HTML-Baum + CSS-Regeln + JS-Ausführung → Pixel --- ![bg fit](./assets/demos/network-chain.png) --- # Sub-Sektion B: CSS + A11y ## Wie wird HTML hübsch + barrierefrei? --- ![bg fit](./assets/demos/css-anatomie.png) --- # CSS-Selektoren | Selektor | Was | |----------|-----| | `p` | alle `

`-Elemente | | `.btn` | alle Elemente mit `class="btn"` | | `#header` | das Element mit `id="header"` (nur EINS pro Seite) | | `*` | alle Elemente | | `button:hover` | Button beim Hover | | `button:focus` | Button mit Tastatur-Fokus | | `input:disabled` | deaktivierte Inputs | | `nav > a` | alle `` direkt unter `