Compare commits
4
Commits
028f5f0fb8
...
613f37983e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
613f37983e
|
||
|
|
2658251bcb
|
||
|
|
3d6059c070
|
||
|
|
ed756461e6
|
No files matched your search
@@ -345,16 +345,16 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Zwischen Ihnen und einer Webseite liegen viele Stationen.
|
Zwischen Klick und fertiger Webseite liegen viele Stationen.
|
||||||
|
|
||||||
Jede Komponente "spricht" anders:
|
Jede Schicht spricht eine andere Sprache:
|
||||||
|
|
||||||
- Browser → **HTTP**
|
- Browser → **HTTP**
|
||||||
- Netzwerkkarte → **Bits / Signale**
|
- Netzwerkkarte → **Bits und Signale**
|
||||||
- Router → **IP-Pakete**
|
- Router → **IP-Pakete**
|
||||||
- Provider → **Routing**
|
- Provider → **Routing**
|
||||||
|
|
||||||
Wie zusammenbringen?
|
Diese Sprachen müssen zusammenspielen.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -370,7 +370,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
# Die Lösung: Arbeitsteilung
|
# Die Lösung: Arbeitsteilung
|
||||||
|
|
||||||
Statt dass jedes Programm alles können muss: **Aufgaben aufteilen.**
|
Statt dass jedes Programm alles können muss, teilen sich mehrere Schichten die Aufgaben.
|
||||||
|
|
||||||
| Wer? | Aufgabe | Typische Geräte |
|
| Wer? | Aufgabe | Typische Geräte |
|
||||||
|------|---------|-----------------|
|
|------|---------|-----------------|
|
||||||
@@ -447,9 +447,9 @@ Das TCP/IP-Modell entstand praktisch aus dem ARPANET (1970er), im Gegensatz zum
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Encapsulation:** Jede Schicht packt ein.
|
**Encapsulation:** Jede Schicht verpackt die Daten der darüberliegenden Schicht.
|
||||||
|
|
||||||
**Decapsulation:** Beim Empfang wird ausgepackt.
|
**Decapsulation:** Beim Empfang packt jede Schicht ihren Teil wieder aus.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -515,18 +515,17 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Warum ist das clever?
|
# Vorteile der Schichtung
|
||||||
|
|
||||||
**Ohne Schichten:**
|
**Ohne Schichten:**
|
||||||
Jede App müsste wissen, wie Ethernet-Frames gebaut werden, wie WLAN funktioniert, wie Router Pakete weiterleiten...
|
Jede Anwendung müsste wissen, wie Ethernet-Frames gebaut werden, wie WLAN funktioniert und wie Router Pakete weiterleiten.
|
||||||
|
|
||||||
**Mit Schichten:**
|
**Mit Schichten:**
|
||||||
Der Browser sagt: "Ich will diese Seite."
|
Der Browser fordert nur die Seite an. Alles Weitere übernehmen die Schichten darunter.
|
||||||
Alles andere übernehmen die Schichten darunter.
|
|
||||||
|
|
||||||
**Austauschbarkeit:**
|
**Austauschbarkeit:**
|
||||||
WLAN statt Ethernet? Nur Schicht 1 ändert sich.
|
Wechselt WLAN zu Ethernet, ändert sich nur Schicht 1.
|
||||||
HTTP/2 statt HTTP/1? Nur Schicht 4 ändert sich.
|
Löst HTTP/2 die Version HTTP/1 ab, ändert sich nur Schicht 4.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -539,9 +538,9 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Exkurs: OSI vs. TCP/IP
|
# OSI vs. TCP/IP
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
OSI (7 Schichten) ist ein theoretisches Referenzmodell — TCP/IP (4 Schichten) beschreibt das reale Internet.
|
OSI (7 Schichten) ist ein theoretisches Referenzmodell — TCP/IP (4 Schichten) beschreibt das reale Internet.
|
||||||
|
|
||||||
@@ -559,7 +558,7 @@ SPEAKER NOTES:
|
|||||||
<!-- _class: lead -->
|
<!-- _class: lead -->
|
||||||
|
|
||||||
# Die drei Adressen
|
# Die drei Adressen
|
||||||
## IP, MAC und Port – wer braucht was?
|
## IP, MAC und Port im Zusammenspiel
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -580,8 +579,7 @@ SPEAKER NOTES:
|
|||||||
- **Bleibt gleich** auf dem gesamten Weg
|
- **Bleibt gleich** auf dem gesamten Weg
|
||||||
- Analogie: **Empfänger auf einem Brief**
|
- Analogie: **Empfänger auf einem Brief**
|
||||||
|
|
||||||
Router lesen die IP und entscheiden:
|
Router lesen die Ziel-IP und leiten das Paket in die passende Richtung weiter.
|
||||||
"Ist das für mich? Nein → in welche Richtung weiterleiten?"
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -604,7 +602,7 @@ aa:bb:cc:dd:ee:ff
|
|||||||
- **Ändert sich bei jedem Hop**
|
- **Ändert sich bei jedem Hop**
|
||||||
- Analogie: **"Nächstes Postamt: XY"**
|
- Analogie: **"Nächstes Postamt: XY"**
|
||||||
|
|
||||||
Funktioniert nur innerhalb eines Netzwerksegments.
|
Sie funktioniert nur innerhalb eines Netzwerksegments.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -699,7 +697,7 @@ Drei Adressebenen lösen drei verschiedene Probleme:
|
|||||||
<!-- _class: lead -->
|
<!-- _class: lead -->
|
||||||
|
|
||||||
# Die Reise eines Klicks
|
# Die Reise eines Klicks
|
||||||
## Was passiert, wenn Sie `www.hdm-stuttgart.de` aufrufen?
|
## Was passiert, wenn ihr `www.hdm-stuttgart.de` aufruft?
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -713,13 +711,13 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
# Das Szenario
|
# Das Szenario
|
||||||
|
|
||||||
Sie sind im WLAN der HdM und rufen auf:
|
Ihr seid im WLAN der HdM und ruft auf:
|
||||||
|
|
||||||
```
|
```
|
||||||
https://www.hdm-stuttgart.de
|
https://www.hdm-stuttgart.de
|
||||||
```
|
```
|
||||||
|
|
||||||
**Zwischen Enter und fertiger Seite:** ~200 Millisekunden.
|
Zwischen Enter und fertiger Seite vergehen rund 200 Millisekunden.
|
||||||
|
|
||||||
In dieser Zeit passieren hunderte Operationen.
|
In dieser Zeit passieren hunderte Operationen.
|
||||||
|
|
||||||
@@ -775,11 +773,11 @@ SPEAKER NOTES:
|
|||||||
www.hdm-stuttgart.de → 212.132.79.37
|
www.hdm-stuttgart.de → 212.132.79.37
|
||||||
```
|
```
|
||||||
|
|
||||||
Ihr Laptop fragt sich durch:
|
Euer Laptop arbeitet die Quellen der Reihe nach ab:
|
||||||
|
|
||||||
1. **Browser-Cache:** "War ich da kürzlich?" → Nein
|
1. **Browser-Cache** prüfen → kein Eintrag
|
||||||
2. **OS-Cache:** "Kennt das Betriebssystem die IP?" → Nein
|
2. **OS-Cache** prüfen → kein Eintrag
|
||||||
3. **Router/Provider:** DNS-Server wird gefragt
|
3. **Router/Provider:** DNS-Server anfragen
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -836,7 +834,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
# DNS ist selbst Netzwerk
|
# DNS ist selbst Netzwerk
|
||||||
|
|
||||||
Die DNS-Anfrage ist ein ganz normales Paket:
|
Die DNS-Anfrage ist ein gewöhnliches Paket:
|
||||||
|
|
||||||
| Eigenschaft | Wert |
|
| Eigenschaft | Wert |
|
||||||
|-------------|------|
|
|-------------|------|
|
||||||
@@ -867,7 +865,7 @@ www.hdm-stuttgart.de = 212.132.79.37
|
|||||||
|
|
||||||
Diese Information wird gecached (für Minuten bis Stunden).
|
Diese Information wird gecached (für Minuten bis Stunden).
|
||||||
|
|
||||||
**Nächster Schritt:** Verbindung aufbauen.
|
Der nächste Schritt ist der Verbindungsaufbau.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -894,7 +892,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Warum ein Handshake?
|
# Zweck des Handshakes
|
||||||
|
|
||||||
TCP ist **verbindungsorientiert**:
|
TCP ist **verbindungsorientiert**:
|
||||||
|
|
||||||
@@ -905,8 +903,6 @@ TCP ist **verbindungsorientiert**:
|
|||||||
**Analogie:**
|
**Analogie:**
|
||||||
Telefonat: Klingeln → Abheben → "Hallo?" → Gespräch beginnt
|
Telefonat: Klingeln → Abheben → "Hallo?" → Gespräch beginnt
|
||||||
|
|
||||||
Nicht: Einfach losreden und hoffen, dass jemand zuhört.
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
- Warum Aufwand?
|
- Warum Aufwand?
|
||||||
@@ -975,7 +971,7 @@ Der Handshake synchronisiert **Sequenznummern** – essenziell für TCPs Zuverl
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Jetzt erst** kann HTTP gesprochen werden.
|
Erst jetzt kann HTTP übertragen werden.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1000,7 +996,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Was Ihr Browser sendet
|
# Was euer Browser sendet
|
||||||
|
|
||||||
```http
|
```http
|
||||||
GET / HTTP/2.0
|
GET / HTTP/2.0
|
||||||
@@ -1011,17 +1007,17 @@ Accept-Language: de-DE
|
|||||||
Connection: keep-alive
|
Connection: keep-alive
|
||||||
```
|
```
|
||||||
|
|
||||||
~200 Bytes Text.
|
Der Request umfasst rund 200 Bytes Text.
|
||||||
|
|
||||||
**GET** = "Gib mir" (im Gegensatz zu POST = "Nimm das")
|
**GET** ruft Daten ab (im Gegensatz zu **POST**, das Daten sendet).
|
||||||
**/** = "Die Startseite"
|
**/** bezeichnet die Startseite.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
- HTTP-Request: lesbar, menschlich verständlich
|
- HTTP-Request: lesbar, menschlich verständlich
|
||||||
- GET = "hol mir was" (POST = "hier Daten für Sie")
|
- GET = "hol mir was" (POST = "hier Daten für euch")
|
||||||
- "/" = Wurzel = Startseite
|
- "/" = Wurzel = Startseite
|
||||||
- HTTP/1.1 = Protokollversion
|
- HTTP/2.0 = Protokollversion
|
||||||
- Header: Kontext (Host, Browser, Sprache)
|
- Header: Kontext (Host, Browser, Sprache)
|
||||||
- ~200 Bytes Text → müssen durchs Internet
|
- ~200 Bytes Text → müssen durchs Internet
|
||||||
-->
|
-->
|
||||||
@@ -1106,13 +1102,13 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
<!-- _class: dimmed -->
|
<!-- _class: dimmed -->
|
||||||
|
|
||||||
# Woher kennt Ihr Laptop die Router-MAC?
|
# Router-MAC per ARP ermitteln
|
||||||
|
|
||||||
**ARP** – Address Resolution Protocol
|
**ARP** – Address Resolution Protocol
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Das passiert automatisch. Die Info wird gecached.
|
Das geschieht automatisch. Die Information wird gecached.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1139,7 +1135,7 @@ Frame wird zu **Bits** – Bits werden zu Signalen:
|
|||||||
01001000 01010100 01010100 01010000 ...
|
01001000 01010100 01010100 01010000 ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Ab hier übernimmt die Physik.
|
Ab Schicht 1 erfolgt die Übertragung physikalisch.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1167,17 +1163,17 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Der erste Hop: Ihr Router
|
# Der erste Hop: Euer Router
|
||||||
|
|
||||||
**Laptop** → [Frame] → **Router**
|
**Laptop** → [Frame] → **Router**
|
||||||
|
|
||||||
Der Router empfängt:
|
Der Router verarbeitet das Frame in drei Schritten:
|
||||||
|
|
||||||
1. **Layer 1:** Signale → Bits
|
1. **Layer 1:** Signale werden zu Bits.
|
||||||
2. **Layer 2:** Frame prüfen. MAC okay? → Auspacken
|
2. **Layer 2:** Frame und MAC-Adresse werden geprüft, dann ausgepackt.
|
||||||
3. **Layer 3:** IP lesen. "212.132.79.37 – nicht mein Netz"
|
3. **Layer 3:** Die Ziel-IP liegt außerhalb des lokalen Netzes.
|
||||||
|
|
||||||
**Routing-Entscheidung:** "Ich schicke es Richtung Internet."
|
**Routing-Entscheidung:** Das Paket geht Richtung Internet weiter.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1190,7 +1186,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Der Router verpackt NEU
|
# Der Router verpackt neu
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -1213,7 +1209,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Bei jedem Hop:
|
Bei jedem Hop laufen drei Schritte ab:
|
||||||
|
|
||||||
1. Auspacken bis Layer 3 (IP)
|
1. Auspacken bis Layer 3 (IP)
|
||||||
2. Routing-Entscheidung
|
2. Routing-Entscheidung
|
||||||
@@ -1249,9 +1245,9 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Jede Schicht prüft "ist das für mich?" und packt dann die nächste aus.
|
Jede Schicht prüft, ob das Paket für sie bestimmt ist, und packt dann die nächste aus.
|
||||||
|
|
||||||
Am Ende versteht der Webserver: "Jemand will die Startseite."
|
Am Ende erkennt der Webserver die Anfrage nach der Startseite.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1269,7 +1265,7 @@ SPEAKER NOTES:
|
|||||||
# Der Server antwortet
|
# Der Server antwortet
|
||||||
|
|
||||||
```http
|
```http
|
||||||
HTTP/1.1 200 OK
|
HTTP/2.0 200 OK
|
||||||
Content-Type: text/html; charset=UTF-8
|
Content-Type: text/html; charset=UTF-8
|
||||||
Content-Length: 45231
|
Content-Length: 45231
|
||||||
|
|
||||||
@@ -1280,7 +1276,7 @@ Content-Length: 45231
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
~45 KB HTML müssen jetzt zu Ihnen.
|
Rund 45 KB HTML müssen nun zu euch übertragen werden.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1294,7 +1290,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
# Encapsulation beim Server
|
# Encapsulation beim Server
|
||||||
|
|
||||||
Der Server macht **dasselbe** – nur in die andere Richtung:
|
Der Server durchläuft dieselben Schritte – nur in umgekehrter Richtung:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -1313,7 +1309,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Gleiches Spiel wie der Hinweg:
|
Der Rückweg funktioniert wie der Hinweg:
|
||||||
|
|
||||||
- Hop für Hop durchs Internet
|
- Hop für Hop durchs Internet
|
||||||
- **IP bleibt gleich** (Start/Ziel)
|
- **IP bleibt gleich** (Start/Ziel)
|
||||||
@@ -1328,13 +1324,13 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Decapsulation bei Ihnen
|
# Decapsulation bei euch
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Rückweg = Encapsulation umgekehrt.
|
Der Rückweg ist die umgekehrte Encapsulation.
|
||||||
|
|
||||||
Jede Schicht prüft "ist das für mich?" und packt dann die nächste aus.
|
Jede Schicht prüft, ob das Paket für sie bestimmt ist, und packt dann die nächste aus.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1417,7 +1413,7 @@ Beide sind Transport-Protokolle (Schicht 3), aber mit fundamental unterschiedlic
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Warum UDP bei Video-Calls?
|
# UDP bei Video-Calls
|
||||||
|
|
||||||
**Szenario:** Ein Paket geht verloren.
|
**Szenario:** Ein Paket geht verloren.
|
||||||
|
|
||||||
@@ -1444,7 +1440,7 @@ SPEAKER NOTES:
|
|||||||
|
|
||||||
**MTU** = Maximum Transmission Unit
|
**MTU** = Maximum Transmission Unit
|
||||||
|
|
||||||
Ethernet-Frame kann maximal **1500 Bytes** Nutzdaten transportieren.
|
Ein Ethernet-Frame kann maximal **1500 Bytes** Nutzdaten transportieren.
|
||||||
|
|
||||||
**Problem:** Ein Foto hat 3.000.000 Bytes.
|
**Problem:** Ein Foto hat 3.000.000 Bytes.
|
||||||
|
|
||||||
@@ -1705,7 +1701,7 @@ HTML definiert die Struktur – was ist auf der Seite. CSS definiert das Aussehe
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Was ist CSS?
|
# CSS im Überblick
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -1738,7 +1734,7 @@ Vorteil: Ihr könnt das Design der ganzen Website ändern, indem ihr eine Datei
|
|||||||
|
|
||||||
# CSS einbinden
|
# CSS einbinden
|
||||||
|
|
||||||
**Option 1: Externe Datei** ✓
|
**Option 1: Externe Datei** (empfohlen)
|
||||||
```html
|
```html
|
||||||
<link rel="stylesheet" href="style.css">
|
<link rel="stylesheet" href="style.css">
|
||||||
```
|
```
|
||||||
@@ -1748,7 +1744,7 @@ Vorteil: Ihr könnt das Design der ganzen Website ändern, indem ihr eine Datei
|
|||||||
<style>p { color: blue; }</style>
|
<style>p { color: blue; }</style>
|
||||||
```
|
```
|
||||||
|
|
||||||
**Option 3: Inline** ✗
|
**Option 3: Inline** (vermeiden)
|
||||||
```html
|
```html
|
||||||
<p style="color: blue;">...</p>
|
<p style="color: blue;">...</p>
|
||||||
```
|
```
|
||||||
@@ -1884,7 +1880,7 @@ Eine Klasse kann auf beliebig viele Elemente angewendet werden. Ein Element kann
|
|||||||
|
|
||||||
**Raute** vor dem Namen = ID
|
**Raute** vor dem Namen = ID
|
||||||
|
|
||||||
⚠️ IDs sollten **einmalig** pro Seite sein.
|
**Achtung:** IDs sollten **einmalig** pro Seite sein.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPEAKER NOTES:
|
SPEAKER NOTES:
|
||||||
@@ -1932,7 +1928,7 @@ Element.Klasse: Das Element muss beides sein. "p.wichtig" heißt: nur p-Elemente
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Spezifität: Welche Regel gewinnt?
|
# Spezifität von Selektoren
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -2316,7 +2312,7 @@ Einheiten: rem für Schrift, relative Einheiten für Layout.
|
|||||||
|
|
||||||
# Fragen & Diskussion
|
# Fragen & Diskussion
|
||||||
|
|
||||||
**Nächster Termin:** 24.01.2026 – JavaScript
|
**Nächstes Thema:** JavaScript
|
||||||
|
|
||||||
**Kontakt:** lb-czechowski@hdm-stuttgart.de
|
**Kontakt:** lb-czechowski@hdm-stuttgart.de
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ Hochschule der Medien Stuttgart
|
|||||||
|
|
||||||
<!-- _class: lead -->
|
<!-- _class: lead -->
|
||||||
|
|
||||||
# Kapitel 3 – 24.01.2026
|
# Kapitel 3
|
||||||
## Interaktivität & JavaScript
|
## Interaktivität & JavaScript
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -119,16 +119,15 @@ Hochschule der Medien Stuttgart
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Was ist JavaScript?
|
# JavaScript im Überblick
|
||||||
|
|
||||||
**Die einzige Programmiersprache, die im Browser läuft!**
|
JavaScript ist die einzige Programmiersprache, die nativ im Browser läuft.
|
||||||
|
|
||||||
- **1995:** In 10 Tagen entwickelt (Brendan Eich, Netscape)
|
- **1995:** In 10 Tagen entwickelt (Brendan Eich, Netscape)
|
||||||
- **Heute:** Überall – Browser, Server, Apps, IoT
|
- **Heute:** Überall – Browser, Server, Apps, IoT
|
||||||
|
|
||||||
**Nicht verwechseln:**
|
**Nicht verwechseln:**
|
||||||
- Java ≠ JavaScript (komplett unterschiedlich!)
|
- Java und JavaScript sind zwei völlig verschiedene Sprachen.
|
||||||
- "JavaScript ist zu Java wie Carpet zu Car"
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Ursprünglich "Mocha", dann "LiveScript", dann "JavaScript" (Marketing!)
|
Ursprünglich "Mocha", dann "LiveScript", dann "JavaScript" (Marketing!)
|
||||||
@@ -159,7 +158,7 @@ ES6 = großes Update mit vielen Features
|
|||||||
|
|
||||||
# JavaScript einbinden
|
# JavaScript einbinden
|
||||||
|
|
||||||
**Option 1: Externe Datei (empfohlen!)**
|
**Option 1: Externe Datei (empfohlen)**
|
||||||
```html
|
```html
|
||||||
<body>
|
<body>
|
||||||
<!-- Inhalt -->
|
<!-- Inhalt -->
|
||||||
@@ -174,7 +173,7 @@ ES6 = großes Update mit vielen Features
|
|||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
⚠️ Script am **Ende** des `<body>` – damit HTML zuerst lädt!
|
**Wichtig:** Das Script gehört ans **Ende** des `<body>`, damit das HTML zuerst lädt.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Externe Datei = wiederverwendbar, cachebar
|
Externe Datei = wiederverwendbar, cachebar
|
||||||
@@ -184,7 +183,7 @@ Oder: defer-Attribut
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Die Konsole: Euer bester Freund
|
# Die JavaScript-Konsole
|
||||||
|
|
||||||
**Browser DevTools → Console**
|
**Browser DevTools → Console**
|
||||||
- Windows/Linux: `F12` oder `Strg+Shift+I`
|
- Windows/Linux: `F12` oder `Strg+Shift+I`
|
||||||
@@ -196,7 +195,7 @@ console.log(42);
|
|||||||
console.log("Die Antwort ist:", 42);
|
console.log("Die Antwort ist:", 42);
|
||||||
```
|
```
|
||||||
|
|
||||||
**Direkt in der Konsole tippen und Enter!**
|
Befehle lassen sich direkt in der Konsole eingeben und mit Enter ausführen.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Console = REPL (Read-Eval-Print-Loop)
|
Console = REPL (Read-Eval-Print-Loop)
|
||||||
@@ -348,7 +347,7 @@ true || false // true (ODER)
|
|||||||
|
|
||||||
**In der Browser-Konsole:**
|
**In der Browser-Konsole:**
|
||||||
|
|
||||||
1. Erstellen Sie Variablen für sich:
|
1. Erstellt Variablen für euch:
|
||||||
```javascript
|
```javascript
|
||||||
const name = "Your Name";
|
const name = "Your Name";
|
||||||
let age = 20;
|
let age = 20;
|
||||||
@@ -491,7 +490,7 @@ Funktionale Programmierung, Original-Array bleibt unverändert
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Was ist das DOM?
|
# Das DOM im Überblick
|
||||||
|
|
||||||
**D**ocument **O**bject **M**odel
|
**D**ocument **O**bject **M**odel
|
||||||
|
|
||||||
@@ -646,7 +645,7 @@ remove = aus DOM entfernen
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Was sind Events?
|
# Events im Überblick
|
||||||
|
|
||||||
**NutzerInnen interagieren mit der Seite:**
|
**NutzerInnen interagieren mit der Seite:**
|
||||||
- Klicken
|
- Klicken
|
||||||
@@ -654,7 +653,7 @@ remove = aus DOM entfernen
|
|||||||
- Scrollen
|
- Scrollen
|
||||||
- Formulare absenden
|
- Formulare absenden
|
||||||
|
|
||||||
**JavaScript kann darauf reagieren!**
|
JavaScript kann auf diese Ereignisse reagieren.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Event = Ereignis
|
Event = Ereignis
|
||||||
@@ -784,9 +783,9 @@ toggleButton.addEventListener("click", () => {
|
|||||||
|
|
||||||
// Button-Text ändern
|
// Button-Text ändern
|
||||||
if (body.classList.contains("dark-mode")) {
|
if (body.classList.contains("dark-mode")) {
|
||||||
toggleButton.textContent = "☀️ Light Mode";
|
toggleButton.textContent = "Light Mode";
|
||||||
} else {
|
} else {
|
||||||
toggleButton.textContent = "🌙 Dark Mode";
|
toggleButton.textContent = "Dark Mode";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
@@ -1002,21 +1001,21 @@ Frameworks für größere Apps, Komponenten-basiert
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Ihr könnt jetzt...
|
# Das könnt ihr jetzt
|
||||||
|
|
||||||
- Den historischen Kontext von IT verstehen
|
- Den historischen Kontext von IT verstehen
|
||||||
- Erklären wie das Internet funktioniert
|
- Erklären wie das Internet funktioniert
|
||||||
- HTML-Seiten strukturieren
|
- HTML-Seiten strukturieren
|
||||||
- CSS für Layout und Design nutzen
|
- CSS für Layout und Design nutzen
|
||||||
- JavaScript für Interaktivität einsetzen
|
- JavaScript für Interaktivität einsetzen
|
||||||
- **Mit EntwicklerInnen auf Augenhöhe sprechen!**
|
- **Mit EntwicklerInnen auf Augenhöhe sprechen**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Feedback – Eure Meinung zählt!
|
# Feedback
|
||||||
|
|
||||||
Euer ehrliches Feedback hilft mir, den Kurs zu verbessern.
|
Euer ehrliches Feedback hilft mir, den Kurs zu verbessern.
|
||||||
**Es gibt keine falschen Antworten!**
|
Es gibt keine falschen Antworten.
|
||||||
|
|
||||||
- Was hat gut funktioniert?
|
- Was hat gut funktioniert?
|
||||||
- Was könnte besser sein?
|
- Was könnte besser sein?
|
||||||
|
|||||||
@@ -6,47 +6,70 @@
|
|||||||
<style>
|
<style>
|
||||||
html, body { margin: 0; padding: 0; background: #fff; font-family: system-ui, sans-serif; }
|
html, body { margin: 0; padding: 0; background: #fff; font-family: system-ui, sans-serif; }
|
||||||
body { padding: 30px 40px; display: inline-block; }
|
body { padding: 30px 40px; display: inline-block; }
|
||||||
.wrap { display: flex; gap: 36px; align-items: flex-start; }
|
.headers {
|
||||||
.col { display: flex; flex-direction: column; gap: 4px; }
|
display: grid;
|
||||||
h3 { margin: 0 0 10px; font-size: 1.1rem; color: #1a1a2e; text-align: center; }
|
grid-template-columns: 240px 240px;
|
||||||
|
column-gap: 36px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.headers h3 { margin: 0; font-size: 1.1rem; color: #1a1a2e; text-align: center; }
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 240px 240px;
|
||||||
|
grid-template-rows: repeat(7, 48px);
|
||||||
|
column-gap: 36px;
|
||||||
|
row-gap: 6px;
|
||||||
|
}
|
||||||
.box {
|
.box {
|
||||||
border: 2px solid #4a4a6a;
|
border: 2px solid #4a4a6a;
|
||||||
padding: 10px 20px;
|
border-radius: 4px;
|
||||||
min-width: 230px;
|
|
||||||
font-size: 0.95rem;
|
|
||||||
background: #f3f4f6;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border-radius: 4px;
|
font-size: 0.95rem;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0 12px;
|
||||||
}
|
}
|
||||||
.osi .box { background: #dbeafe; border-color: #1e40af; color: #1e3a8a; }
|
.osi {
|
||||||
.tcpip .box { background: #fce7d6; border-color: #c2410c; color: #7c2d12; font-weight: 600; }
|
background: #dbeafe;
|
||||||
.tcpip .app { min-height: 126px; }
|
border-color: #1e40af;
|
||||||
.tcpip .trans { min-height: 40px; }
|
color: #1e3a8a;
|
||||||
.tcpip .net { min-height: 40px; }
|
}
|
||||||
.tcpip .link { min-height: 82px; }
|
.tcpip {
|
||||||
|
background: #fce7d6;
|
||||||
|
border-color: #c2410c;
|
||||||
|
color: #7c2d12;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
/* OSI: column 1, one box per row */
|
||||||
|
.o7 { grid-area: 1 / 1; } .o6 { grid-area: 2 / 1; } .o5 { grid-area: 3 / 1; }
|
||||||
|
.o4 { grid-area: 4 / 1; } .o3 { grid-area: 5 / 1; } .o2 { grid-area: 6 / 1; }
|
||||||
|
.o1 { grid-area: 7 / 1; }
|
||||||
|
/* TCP/IP: column 2, each block spans its OSI equivalents */
|
||||||
|
.t-app { grid-area: 1 / 2 / 4 / 2; } /* OSI 5-7 */
|
||||||
|
.t-tra { grid-area: 4 / 2 / 5 / 2; } /* OSI 4 */
|
||||||
|
.t-net { grid-area: 5 / 2 / 6 / 2; } /* OSI 3 */
|
||||||
|
.t-link { grid-area: 6 / 2 / 8 / 2; } /* OSI 1-2 */
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="wrap">
|
<div class="headers">
|
||||||
<div class="col osi">
|
<h3>OSI (7 Schichten)</h3>
|
||||||
<h3>OSI (7 Schichten)</h3>
|
<h3>TCP/IP (4 Schichten)</h3>
|
||||||
<div class="box">7. Anwendung</div>
|
</div>
|
||||||
<div class="box">6. Darstellung</div>
|
<div class="grid">
|
||||||
<div class="box">5. Sitzung</div>
|
<div class="box osi o7">7. Anwendung</div>
|
||||||
<div class="box">4. Transport</div>
|
<div class="box osi o6">6. Darstellung</div>
|
||||||
<div class="box">3. Vermittlung</div>
|
<div class="box osi o5">5. Sitzung</div>
|
||||||
<div class="box">2. Sicherung</div>
|
<div class="box osi o4">4. Transport</div>
|
||||||
<div class="box">1. Bitübertragung</div>
|
<div class="box osi o3">3. Vermittlung</div>
|
||||||
</div>
|
<div class="box osi o2">2. Sicherung</div>
|
||||||
<div class="col tcpip">
|
<div class="box osi o1">1. Bitübertragung</div>
|
||||||
<h3>TCP/IP (4 Schichten)</h3>
|
|
||||||
<div class="box app">Anwendung</div>
|
<div class="box tcpip t-app">Anwendung</div>
|
||||||
<div class="box trans">Transport</div>
|
<div class="box tcpip t-tra">Transport</div>
|
||||||
<div class="box net">Internet</div>
|
<div class="box tcpip t-net">Internet</div>
|
||||||
<div class="box link">Netzzugang</div>
|
<div class="box tcpip t-link">Netzzugang</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 63 KiB |
Reference in new issue
Block a user