Zum Hauptinhalt springen

RFC 3986 - Uniform Resource Identifier (URI): Generische Syntax

  • Status: Internet Standard
  • Veröffentlicht: January 2005
  • Stream: IETF
  • Aktualisiert: RFC1738
  • Ersetzt: RFC1808, RFC2396, RFC2732
  • Errata: Keine Errata

Zusammenfassung​

Ein Uniform Resource Identifier (URI) ist eine kompakte Zeichenfolge, die eine abstrakte oder physische Ressource identifiziert.

Diese Spezifikation definiert:

  • Die generische URI-Syntax
  • Einen Prozess zur Auflösung von URI-Referenzen, die in relativer Form vorliegen können
  • Richtlinien und Sicherheitsüberlegungen für die Verwendung von URIs im Internet

Hauptmerkmale:

  • Die URI-Syntax definiert eine Grammatik, die eine Obermenge aller gültigen URIs ist
  • Ermöglicht Implementierungen, die gemeinsamen Komponenten einer URI-Referenz zu analysieren, ohne die schémaspezifischen Anforderungen jedes möglichen Identifikators zu kennen
  • Definiert keine generative Grammatik für URIs; diese Aufgabe wird von den einzelnen Spezifikationen jedes URI-Schemas durchgeführt

Bedeutung​

RFC 3986 ist das Herzstück der Web-Infrastruktur:

  • 🌐 Definiert die generische Syntax für URLs und URNs
  • 🔗 Grundlage für alle Ressourcenlokalisierung im Web
  • 📋 Basis für alle Protokolle einschließlich HTTP, HTTPS, FTP
  • 🎯 Algorithmus zur Auflösung relativer URIs
  • 🔒 URI-Sicherheitsüberlegungen

Inhaltsverzeichnis​

1. Einführung (Introduction)​

  • 1.1 Überblick über URIs
    • 1.1.1 Generische Syntax
    • 1.1.2 Beispiele
    • 1.1.3 URI, URL und URN
  • 1.2 Designüberlegungen
    • 1.2.1 Transkription
    • 1.2.2 Trennung von Identifikation und Interaktion
    • 1.2.3 Hierarchische Identifikatoren
  • 1.3 Syntaxnotation

2. Zeichen (Characters)​

  • 2.1 Prozent-Kodierung
  • 2.2 Reservierte Zeichen
  • 2.3 Nicht reservierte Zeichen
  • 2.4 Wann kodieren oder dekodieren
  • 2.5 Datenidentifikation

3. Syntaxkomponenten (Syntax Components)​

  • 3.1 Schema
  • 3.2 Autorität
    • 3.2.1 Benutzerinformationen
    • 3.2.2 Host
    • 3.2.3 Port
  • 3.3 Pfad
  • 3.4 Abfrage
  • 3.5 Fragment

4. Verwendung (Usage)​

  • 4.1 URI-Referenz
  • 4.2 Relative Referenz
  • 4.3 Absoluter URI
  • 4.4 Gleiche-Dokument-Referenz
  • 4.5 Suffix-Referenz

5. Referenzauflösung (Reference Resolution)​

  • 5.1 Festlegung eines Basis-URI
  • 5.2 Relative Auflösung
  • 5.3 Komponentenrekonstruktion
  • 5.4 Beispiele zur Referenzauflösung

6. Normalisierung und Vergleich (Normalization and Comparison)​

  • 6.1 Äquivalenz
  • 6.2 Vergleichsleiter

7. Sicherheitsüberlegungen (Security Considerations)​

  • 7.1 Zuverlässigkeit und Konsistenz
  • 7.2 Böswillige Konstruktion
  • 7.3 Backend-Transkodierung
  • 7.4 Seltene IP-Adressformate
  • 7.5 Sensible Informationen
  • 7.6 Semantische Angriffe

8. IANA-Überlegungen (IANA Considerations)​

9. Danksagungen (Acknowledgements)​

10. Referenzen (References)​

Anhänge (Appendices)​

Schnellreferenz​

URI Generische Syntax​

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty

URI-Komponenten Beispiel​

  foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment

Gängige URI-Schemas​

SchemaZweckBeispiel
httpHTTP-Protokollhttp://www.example.com/
httpsSicheres HTTPhttps://www.example.com/
ftpDateiübertragungftp://ftp.example.com/file.txt
mailtoE-Mailmailto:[email protected]
fileLokale Dateifile:///path/to/file
dataInline-Datendata:text/plain;base64,SGVsbG8=
telTelefonnummertel:+1-800-555-1212

Reservierte Zeichen​

gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="

Nicht reservierte Zeichen​

unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

Prozent-Kodierung​

pct-encoded = "%" HEXDIG HEXDIG

Beispiele:
Leerzeichen → %20
"你" (Chinesisch) → %E4%BD%A0

URI vs URL vs URN​

Beziehungsdiagramm​

        URI (Uniform Resource Identifier)
/ \
URL URN
(Uniform Resource Locator) (Uniform Resource Name)
(Wie zugreifen) (Was es ist)

Vergleich​

KonzeptFokusPersistenzBeispiel
URIIdentifikationNicht garantiertAlle URIs
URLStandortStandortabhängighttp://example.com/page
URNNamePersistenturn:isbn:0-486-27557-4

Wichtig: Alle URLs sind URIs, alle URNs sind URIs, aber nicht alle URIs sind URLs oder URNs.

Implementierungsanforderungen​

Muss implementieren (MUST)​

  • ✅ Grundlegende URI-Syntaxanalyse
  • ✅ Korrekte Prozent-Kodierungsbehandlung
  • ✅ Algorithmus zur Auflösung relativer URIs
  • ✅ Groß-/Kleinschreibung unabhängiges Schema und Host
  • ✅ Entfernung von Punktsegmenten in Pfaden

Sollte implementieren (SHOULD)​

  • ✅ URI-Normalisierung
  • ✅ IRI-Unterstützung (Internationalisierte Ressourcen-Identifikatoren)
  • ✅ IPv6-Adressunterstützung
  • ✅ Sichere Benutzerinformationsbehandlung

Kann implementieren (MAY)​

  • Schémaspezifische Validierung
  • URI-Äquivalenzvergleich
  • Automatische Normalisierung

Verwandte RFCs​

  • RFC 1738: URL-Spezifikation (aktualisiert)
  • RFC 2396: URI Generische Syntax (ersetzt)
  • RFC 2732: IPv6-Adressformat (ersetzt)
  • RFC 3987: IRI (Internationalisierte Ressourcen-Identifikatoren)
  • RFC 6874: IPv6-Zonenbezeichner
  • RFC 7230: HTTP/1.1 Nachrichtensyntax
  • RFC 8820: URI-Design und Eigentum

Online-Ressourcen​


Nächstes Kapitel: 1. Einführung (Introduction)


Glossary (Glossar)​

Definitionen der in RFC 3986 verwendeten wichtigsten URI-Begriffe.


A​

Absolute URI (Absoluter URI)​

URI, der ein Schema enthält, aber kein Fragment. Wird verwendet, um eine Ressource unabhängig zu identifizieren.

Authority (Autorität)​

URI-Komponente, die Benutzerinformationen, Host und Port enthält. Format: [userinfo@]host[:port]


B​

Base URI (Basis-URI)​

Absoluter URI, der zur Auflösung relativer Referenzen verwendet wird.


C​

Character Encoding (Zeichenkodierung)​

Abbildung von Zeichen auf Oktette.


D​

Dereference (Dereferenzierung)​

Ausführung einer Operation auf der durch einen URI bezeichneten Ressource mittels eines Zugriffsmechanismus.

Dot Segment (Punkt-Segment)​

Pfadsegment . oder .., das zur Navigation in relativen Pfaden dient.


F​

Fragment​

Optionale URI-Komponente, getrennt durch #, die eine sekundäre Ressource identifiziert.


G​

gen-delims (allgemeine Trennzeichen)​

Teilmenge reservierter Zeichen: : / ? # [ ] @


H​

Host​

Teil der Autoritätskomponente, kann eine IP-Adresse oder ein Domainname sein.

hier-part (hierarchischer Teil)​

Hauptstruktur des URI, enthält Autorität und Pfad.

Hierarchical Identifiers (Hierarchische Bezeichner)​

Die URI-Syntax ist von links nach rechts hierarchisch nach abnehmender Bedeutung gegliedert.


I​

IRI (Internationalisierter Ressourcenbezeichner)​

URI-Erweiterung, die die Verwendung von Unicode-Zeichen erlaubt (RFC 3987).


L​

Late-Binding (Späte Bindung)​

Das Ergebnis einer URI-Referenz wird in der Regel erst beim Zugriff bestimmt und kann sich im Lauf der Zeit oder mit anderen Aspekten der Interaktion ändern.


N​

Normalization (Normalisierung)​

Vorgang der Überführung eines URI in eine kanonische Form, um Vergleiche zu ermöglichen.


P​

Path (Pfad)​

URI-Komponente, die eine Ressource im Autoritätsbereich identifiziert.

Percent-Encoding (Prozent-Kodierung)​

Kodierung von Zeichen mit % gefolgt von zwei Hexadezimalziffern.

Port​

Optionale Autoritätskomponente, die einen Netzwerkport angibt.


Q​

Query (Abfrage)​

Optionale URI-Komponente, getrennt durch ?, überträgt nicht-hierarchische Daten.


R​

Reserved Characters (Reservierte Zeichen)​

Zeichensatz mit besonderer Bedeutung in URIs.

Relative Reference (Relative Referenz)​

URI-Referenz, die nicht mit einem Schema beginnt, wird relativ zu einem Basis-URI aufgelöst.

Representation (Repräsentation)​

Aufzeichnung des Zustands einer Ressource zu einem bestimmten Zeitpunkt.

Resolution (Auflösung)​

Vorgang der Umwandlung einer relativen Referenz in einen absoluten URI.

Retrieval (Abruf)​

Erlangen einer Repräsentation der zugehörigen Ressource mithilfe eines URI.


S​

Same-Document Reference (Referenz auf dasselbe Dokument)​

Referenz, die aus einer leeren Zeichenkette oder nur aus einer Fragment-Komponente besteht.

Scheme (Schema)​

Erste Komponente eines URI, definiert den Namensraum des Bezeichners.

Scheme-Based Normalization (Schemabasierte Normalisierung)​

Anwendung schemaspezifischer Regeln, z. B. Ergänzung des Standardports :80 bei HTTP-URIs.

Simple String Comparison (Einfacher Zeichenkettenvergleich)​

Zeichenweiser Vergleich zweier URIs.

sub-delims (Unter-Trennzeichen)​

Teilmenge reservierter Zeichen: ! $ & ' ( ) * + , ; =

Syntax-Based Normalization (Syntaxbasierte Normalisierung)​

Anwendung schemaunabhängiger Normalisierungsregeln: Groß-/Kleinschreibungsnormalisierung (Schema und Host sind case-insensitive), Normalisierung der Prozentkodierung sowie Normalisierung der Pfadsegmente (Entfernen von . und ..).


T​

Transcription (Transkription)​

URIs sind für die weltweite Transkription ausgelegt und verwenden einen eingeschränkten Zeichensatz, um die Eingabe über Sprachen und Regionen hinweg zu erleichtern.


U​

Unreserved Characters (Nicht-reservierte Zeichen)​

Zeichen, die in URIs verwendet werden können, aber keine reservierte Verwendung haben: A-Z a-z 0-9 - . _ ~

URI (Uniform Resource Identifier)​

Kompakte Zeichenfolge, die eine abstrakte oder physische Ressource identifiziert.

URI Reference (URI-Referenz)​

URI oder relative Referenz.

URL (Uniform Resource Locator)​

Teilmenge von URIs, die einen Zugriffsmechanismus bereitstellen.

URN (Uniform Resource Name)​

Persistenter, ortsunabhängiger Bezeichner.

Userinfo (Benutzerinformation)​

Optionaler Teil der Autoritätskomponente, vor @.


Zurück: RFC 3986 Startseite