Der Fully Qualified Domain Name (FQDN) ist der vollständige und eindeutige Name eines Computers oder Hosts im Internet oder in einem lokalen Netzwerk. Er besteht aus mehreren Teilen, die eine hierarchische Struktur widerspiegeln.
Ein FQDN setzt sich aus drei Hauptbestandteilen zusammen:
Hostname – Der spezifische Name eines Computers oder Dienstes (z. B. www
).
Domainname – Der Name der übergeordneten Domain (z. B. example
).
Top-Level-Domain (TLD) – Die oberste Ebene der Domainstruktur (z. B. .com
).
Beispiel eines FQDN:
👉 www.example.com.
www
→ Hostname
example
→ Domainname
.com
→ Top-Level-Domain
Der abschließende Punkt (.
) ist optional und steht für die Root-Domain des DNS-Systems.
✅ Eindeutigkeit: Jeder FQDN ist weltweit einzigartig und verweist auf eine bestimmte Ressource im Internet.
✅ DNS-Auflösung: Er wird von DNS-Servern genutzt, um IP-Adressen für Webseiten und Server zu finden.
✅ SSL-Zertifikate: Ein FQDN wird oft in SSL/TLS-Zertifikaten verwendet, um sichere Verbindungen zu gewährleisten.
✅ E-Mail-Zustellung: Mailserver verwenden FQDNs, um Mails an die richtigen Hosts zu senden.
FQDN: mail.google.com
(vollständig spezifiziert)
Einfache Domain: google.com
(kann mehrere Hosts enthalten, z. B. www
, mail
, ftp
)
Zusammengefasst ist der FQDN die vollständige Adresse eines Geräts oder Dienstes im Internet, während eine einfache Domain eine allgemeine Adresse ist.
Ein Bearer Token ist eine Art von Zugriffstoken, das zur Authentifizierung und Autorisierung in Webanwendungen und APIs verwendet wird. Der Begriff "Bearer" bedeutet „Inhaber“, was bedeutet, dass jeder, der dieses Token besitzt, Zugriff auf die geschützten Ressourcen hat – ohne zusätzliche Überprüfung.
Authorization: Bearer <token>
.GET /geschuetzte-daten HTTP/1.1
Host: api.example.com
Authorization: Bearer abcdef123456
💡 Tipp: Um die Sicherheit zu erhöhen, kann man Token mit kurzen Laufzeiten verwenden und sie nur über HTTPS übertragen.
OAuth (Open Authorization) ist ein offenes Standardprotokoll für Autorisierungen, das es Anwendungen ermöglicht, auf Ressourcen eines Nutzers zuzugreifen, ohne dessen Zugangsdaten (z. B. Passwort) direkt zu kennen. Es wird häufig für Single Sign-On (SSO) und API-Zugriffe verwendet.
OAuth arbeitet mit Tokens, die einer Anwendung erlauben, im Namen eines Nutzers auf eine Ressource zuzugreifen. Der typische Ablauf sieht so aus:
Entity-Header sind HTTP-Header, die Informationen über den Hauptteil (Body) einer Nachricht enthalten. Sie können sowohl in Anfragen als auch in Antworten vorkommen und beschreiben Eigenschaften des Inhalts, wie Typ, Länge, Kodierung oder letzte Änderung.
1.
Content-Type
Content-Type: application/json; charset=UTF-8
2.
Content-Length
Content-Length: 1024
3.
Content-Encoding
Content-Encoding: gzip
4. Content-Language
Content-Language: de-DE
5. Cache-Location
Content-Location: /files/document.pdf
6. Last-Modified
Last-Modified: Tue, 30 Jan 2025 14:20:00 GMT
7. ETag
ETag: "abc123xyz"
8. Expires
Expires: Fri, 02 Feb 2025 12:00:00 GMT
9. Allow
Allow: GET, POST, HEAD
10. Refresh
(Nicht standardisiert, aber oft verwendet)
Refresh: 10; url=https://example.com
Diese Header helfen dabei, den Inhalt einer HTTP-Nachricht genau zu beschreiben, Caching-Strategien zu optimieren und die korrekte Darstellung sicherzustellen.
Anfrage-Header (Request Headers) sind HTTP-Header, die ein Client (z. B. ein Webbrowser oder eine API-Anfrage) an den Server sendet, um zusätzliche Informationen über die Anfrage, den Client oder die gewünschten Inhalte bereitzustellen.
1. Host
Host: www.example.com
2. User-Agent
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
3. Accept
Accept: text/html, application/json
4. Accept-Language
Accept-Language: de-DE, en-US
5. Accept-Encoding
Accept-Encoding: gzip, deflate, br
6. Referer
Referer: https://www.google.com/
7. Authorization
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
8. Cookie
Cookie: sessionId=abc123; theme=dark
9. Content-Type
(bei POST/PUT-Anfragen)
Content-Type: application/json
10. Origin
Origin: https://www.example.com
Diese Header helfen dem Server, die Anfrage zu verstehen und entsprechend zu reagieren, indem sie Details über den Client, die bevorzugten Inhalte und Sicherheitsaspekte liefern.
Allgemeine HTTP-Header sind Header, die sowohl in HTTP-Anfragen als auch in HTTP-Antworten verwendet werden können. Sie enthalten allgemeine Informationen zur Verbindung und Datenübertragung, die nicht spezifisch für den Client, den Server oder den Inhalt sind.
1. Cache-Control
Cache-Control: no-cache, no-store, must-revalidate
2. Connection
Connection: keep-alive
3. Date
Date: Wed, 31 Jan 2025 12:34:56 GMT
4. Pragma
(veraltet, aber noch genutzt)
Cache-Control
, wird aber hauptsächlich für rückwärtskompatible Caching-Regeln genutzt.Pragma: no-cache
5. Trailer
Trailer: Expires
6. Transfer-Encoding
Transfer-Encoding: chunked
7. Upgrade
Upgrade: websocket
8. Via
Via: 1.1 proxy.example.com
Diese Header sorgen für eine effizientere Kommunikation zwischen Client und Server, steuern das Caching und ermöglichen Protokoll-Upgrades.
HTTP-Header sind Metadaten, die bei HTTP-Anfragen und -Antworten zwischen Client (z. B. Browser) und Server übertragen werden. Sie enthalten wichtige Informationen zur Kommunikation, wie z. B.:
Cache-Control
zur Steuerung des Caching).User-Agent
, der den Browser-Typ beschreibt).Server
, das den verwendeten Webserver angibt).Content-Type
, das den Medientyp der Antwort definiert).Beispiel einer HTTP-Anfrage mit Headern:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Beispiel einer HTTP-Antwort mit Headern:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 3456
Server: Apache
Header werden oft für Sicherheit (z. B. Strict-Transport-Security
), Performance (z. B. Cache-Control
) und Authentifizierung (z. B. Authorization
) genutzt.
Ein Remote Function Call (RFC) ist eine Methode, mit der ein Computerprogramm eine Funktion auf einem entfernten System ausführt, als ob sie lokal auf dem eigenen System aufgerufen würde. RFC wird häufig in verteilten Systemen verwendet, um die Kommunikation und den Datenaustausch zwischen verschiedenen Systemen zu ermöglichen.
Contract Driven Development (CDD) ist eine Softwareentwicklungsmethode, bei der der Schwerpunkt auf der Definition und Verwendung von Contracts (Verträgen) zwischen verschiedenen Komponenten oder Services liegt. Diese Verträge spezifizieren klar, wie verschiedene Softwareteile miteinander interagieren sollen. CDD wird häufig in Microservices-Architekturen oder bei der Entwicklung von APIs verwendet, um sicherzustellen, dass die Kommunikation zwischen unabhängigen Modulen korrekt und konsistent ist.
Contracts als Quelle der Wahrheit:
Trennung von Implementierung und Vertrag:
Vertragsgetriebene Tests:
Consumer-Driven Contract
verwendet werden, um sicherzustellen, dass die vom Verbraucher erwarteten Daten und Formate vom Anbieter geliefert werden.Contract Driven Development eignet sich besonders für Projekte mit vielen unabhängigen Komponenten, bei denen klare und stabile Schnittstellen entscheidend sind. Es hilft, Missverständnisse zu vermeiden und stellt durch automatisierte Tests sicher, dass die Kommunikation zwischen Services robust bleibt. Die zusätzliche Komplexität bei der Verwaltung von Verträgen muss jedoch bedacht werden.
RESTful (Representational State Transfer) bezeichnet einen Architekturstil für verteilte Systeme, insbesondere für Webdienste. Es ist eine Methode zur Kommunikation zwischen Client und Server über das HTTP-Protokoll. RESTful Webservices sind APIs, die den Prinzipien des REST-Architekturstils folgen.
Ressourcenbasiertes Modell:
Verwendung von HTTP-Methoden:
GET
: Zum Abrufen einer Ressource.POST
: Zum Erstellen einer neuen Ressource.PUT
: Zum Aktualisieren einer bestehenden Ressource.DELETE
: Zum Löschen einer Ressource.PATCH
: Zum Teilweisen Aktualisieren einer bestehenden Ressource.Zustandslosigkeit (Stateless):
Client-Server-Architektur:
Cachebarkeit:
Einheitliche Schnittstelle:
Schichtenarchitektur:
Angenommen, wir haben eine API für die Verwaltung von "Benutzern" und "Posts" in einer Blogging-Anwendung:
/users
: Sammlung aller Benutzer/users/{id}
: Einzelner Benutzer mit der ID {id}
/posts
: Sammlung aller Blog-Posts/posts/{id}
: Einzelner Blog-Post mit der ID {id}
GET-Anfrage:
GET /users/1 HTTP/1.1
Host: api.example.com
Antwort:
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
POST-Anfrage:
POST /users HTTP/1.1
Host: api.example.com
Content-Type: application/json
{
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
Antwort:
HTTP/1.1 201 Created
Location: /users/2
RESTful APIs sind eine weit verbreitete Methode zur Erstellung von Webdiensten und bieten eine einfache, skalierbare und flexible Architektur für die Kommunikation zwischen Client und Server.