Anwendungsschichtprotokolle
Anwendungsschichtprotokolle definieren, wie vernetzte Programme Nachrichten austauschen – deren Formate, die Abfolge von Anfragen und Antworten sowie die Bedeutung jedes Feldes – und wandeln so rohe Transportverbindungen in nützliche Dienste wie das Web und E-Mail um.
Definition
Ein Anwendungsschichtprotokoll ist ein Regelsatz, der die Nachrichtenformate, Austauschmuster und die Semantik definiert, mittels derer Anwendungsprozesse auf verschiedenen Hosts kommunizieren, aufgebaut auf Transportdienstleistungen wie TCP oder UDP.
Scope
Dieses Thema behandelt den Entwurf und den Betrieb von Anwendungsprotokollen, die auf Transportdiensten aufbauen: Anwendungsarchitekturen (Client-Server und Peer-to-Peer), die allen Protokollen gemeinsamen Elemente (Nachrichtentypen, Syntax, Semantik und Regeln) sowie kanonische Beispiele – HTTP für das Web, SMTP und IMAP für E-Mail und Dateitransfer. Es behandelt, wie Protokolle TCP oder UDP verwenden, persistente versus nicht-persistente Verbindungen und Anfrage-Antwort-Muster. Ausgenommen sind die in separaten Themen behandelte Namens- und Inhaltsbereitstellungsinfrastruktur sowie die darunterliegenden Transportmechanismen.
Core questions
- Welche gemeinsamen Elemente definieren ein Anwendungsschichtprotokoll?
- Wie unterscheiden sich Client-Server- und Peer-to-Peer-Anwendungsarchitekturen?
- Wie strukturiert HTTP Anfragen und Antworten für das Web?
- Wie bewegen und greifen E-Mail-Protokolle wie SMTP und IMAP auf E-Mails zu?
- Wie wählen und nutzen Anwendungsprotokolle Transportdienste wie TCP und UDP?
Key concepts
- Client-Server- und Peer-to-Peer-Architekturen
- Nachrichtenformat, Syntax und Semantik
- HTTP-Anfragen und -Antworten
- HTTP-Methoden und Statuscodes
- persistente vs. nicht-persistente Verbindungen
- SMTP und E-Mail-Übertragung
- IMAP und E-Mail-Zugriff
- Verwendung von TCP und UDP durch Anwendungen
Key theories
- Anfrage-Antwort-Protokolle über TCP
- Viele Anwendungsprotokolle folgen einem Anfrage-Antwort-Muster über eine zuverlässige TCP-Verbindung: Ein Client sendet eine strukturierte Anfrage, der Server gibt eine Antwort zurück, mit Konventionen für Methoden, Statuscodes und Header, wie am Beispiel von HTTP.
- Anwendungsarchitekturen
- Anwendungen sind als Client-Server organisiert, wobei ständig aktive Server von Clients kontaktiert werden, oder als Peer-to-Peer, wobei Hosts sowohl Dienste anfordern als auch bereitstellen; die Wahl beeinflusst Skalierbarkeit, Verwaltung und die Gestaltung von Protokollen.
- Speichern-und-Weiterleiten-Nachrichtenaustausch
- E-Mail veranschaulicht einen Multi-Protokoll-Dienst: SMTP übermittelt E-Mails zwischen Servern nach dem Speichern-und-Weiterleiten-Prinzip, während Abrufprotokolle es Benutzern ermöglichen, auf ihre Postfächer zuzugreifen, wodurch die Nachrichtenübertragung vom Nachrichtenzugriff getrennt wird.
Clinical relevance
Anwendungsschichtprotokolle stellen die direkte Schnittstelle zwischen Software und dem Netzwerk dar: HTTP bildet die Grundlage des Webs und der meisten modernen Programmierschnittstellen (APIs), E-Mail-Protokolle ermöglichen den globalen Nachrichtenaustausch, und die Anfrage-Antwort-Muster sowie architektonischen Muster wiederholen sich in unzähligen Diensten. Ihr Verständnis ist essenziell für die Entwicklung vernetzter Anwendungen, das Design von APIs und die Fehlersuche, von langsamen Seitenladezeiten bis hin zu Problemen bei der E-Mail-Zustellung.
History
Frühe Internetanwendungen waren E-Mail (mit SMTP) und Dateitransfer. Das Web, um 1990 von Tim Berners-Lee geschaffen, führte HTTP ein, das sich von einem einfachen Dokumentenabrufprotokoll zur Grundlage moderner Webanwendungen und APIs entwickelte, wobei HTTP/1.1, HTTP/2 und HTTP/3 die Leistung verbesserten und die Semantik in RFC 9110 (2022) konsolidiert wurde.
Key figures
- Tim Berners-Lee
- Roy Fielding
- Jon Postel
- John Klensin
Related topics
Seminal works
- rfc9110
- rfc5321
- kurose2021
Frequently asked questions
- Was genau spezifiziert ein Anwendungsschichtprotokoll?
- Es spezifiziert die Arten der ausgetauschten Nachrichten (wie Anfragen und Antworten), die genaue Syntax dieser Nachrichten (ihre Felder und deren Kodierung), die Bedeutung jedes Feldes und die Regeln, wann und wie Nachrichten gesendet werden. HTTP definiert beispielsweise Methoden, Header, Statuscodes und den Anfrage-Antwort-Fluss.
- Warum verwendet das Web TCP anstelle von UDP?
- Webseiten und APIs benötigen in der Regel eine zuverlässige, geordnete Zustellung potenziell großer Antworten, die TCP bereitstellt, zusammen mit einer Überlastkontrolle zur gemeinsamen Nutzung des Netzwerks. HTTP läuft aus diesem Grund traditionell über TCP, obwohl HTTP/3 über QUIC läuft, das auf UDP aufbaut, aber selbst Zuverlässigkeit und Überlastkontrolle wieder einführt.