Zum Hauptinhalt springen

1. Einführung (Introduction)

Dieses Kapitel stellt die grundlegenden Konzepte von URIs, Designüberlegungen und Syntaxnotation vor.


Überblick

Ein Uniform Resource Identifier (URI) bietet ein einfaches und erweiterbares Mittel zur Identifizierung einer Ressource.

Historischer Hintergrund:

  • Abgeleitet von Konzepten, die durch die World Wide Web globale Informationsinitiative eingeführt wurden
  • Die Verwendung dieser Identifikatoren geht auf 1990 zurück
  • Dieses Dokument ersetzt RFC 2396 und führt URL- und relative URL-Spezifikationen zusammen

Diese Spezifikation:

  • Definiert eine einzelne, generische Syntax für alle URIs
  • Führt IPv6-Adresssyntax ein
  • Schließt spezifische Syntax einzelner URI-Schemas aus (wird in separaten Dokumenten aktualisiert)

1.1. Überblick über URIs

Merkmale von URIs

Die Merkmale von URIs können durch drei Wörter zusammengefasst werden: Uniform, Resource, Identifier

Uniform (Einheitlich)

Vorteile der Einheitlichkeit:

  1. Kontextunabhängigkeit: Ermöglicht die Verwendung verschiedener Arten von Ressourcenidentifikatoren im selben Kontext, auch wenn sich die Zugriffsmechanismen unterscheiden

  2. Semantische Konsistenz: Ermöglicht einheitliche semantische Interpretation gemeinsamer syntaktischer Konventionen über verschiedene Arten von Ressourcenidentifikatoren hinweg

  3. Erweiterbarkeit: Ermöglicht die Einführung neuer Arten von Ressourcenidentifikatoren, ohne die Verwendung bestehender Identifikatoren zu beeinträchtigen

  4. Wiederverwendbarkeit: Ermöglicht die Wiederverwendung von Identifikatoren in vielen verschiedenen Kontexten, wodurch neue Anwendungen oder Protokolle einen vorhandenen, großen und weit verbreiteten Satz von Ressourcenidentifikatoren nutzen können

Beispiel:

http://example.com/page
ftp://example.com/file
mailto:[email protected]

Alle verwenden dieselbe generische Syntaxstruktur

Resource (Ressource)

Umfang der Ressourcen: Diese Spezifikation beschränkt nicht, was eine Ressource sein könnte; der Begriff „Ressource" wird in einem allgemeinen Sinn für alles verwendet, was durch einen URI identifiziert werden könnte.

Vertraute Beispiele:

  • 📄 Elektronische Dokumente
  • 🖼️ Bilder
  • 📊 Informationsquellen mit konsistentem Zweck (z.B. „heutiger Wetterbericht für Los Angeles")
  • 🔧 Dienste (z.B. HTTP-zu-SMS-Gateway)
  • 📚 Sammlungen anderer Ressourcen

Breitere Ressourcen:

  • 🧑 Menschen
  • 🏢 Unternehmen
  • 📖 Gebundene Bücher in einer Bibliothek
  • 🔢 Abstrakte Konzepte (mathematische Operatoren, Beziehungstypen, numerische Werte)

Wichtiger Punkt: Ressourcen sind nicht notwendigerweise über das Internet zugänglich

Identifier (Identifikator)

Definition: Ein Identifikator verkörpert die Informationen, die erforderlich sind, um das Identifizierte von allen anderen Dingen innerhalb seines Identifikationsbereichs zu unterscheiden.

Bedeutung von „Identifizieren":

  • Bezieht sich auf den Zweck, eine Ressource von allen anderen zu unterscheiden
  • Berücksichtigt nicht, wie dieser Zweck erreicht wird (z.B. durch Name, Adresse oder Kontext)
  • Sollte nicht als Identifikator missverstanden werden, der die Identität des referenzierten Inhalts definiert oder verkörpert
  • Sollte nicht annehmen, dass Systeme, die den URI verwenden, auf die identifizierte Ressource zugreifen

URI-Definition: Ein URI ist ein Identifikator, der aus einer Zeichenfolge besteht, die mit der Syntaxregel <URI> in Abschnitt 3 übereinstimmt.

Globale Natur von URIs

Globaler Geltungsbereich: URIs haben einen globalen Geltungsbereich und werden unabhängig vom Kontext konsistent interpretiert

Beispiel:

http://localhost/

Hat für jeden Benutzer, der diese Referenz verwendet, dieselbe Interpretation
Obwohl die Netzwerkschnittstelle, die „localhost" entspricht, unterschiedlich sein kann
Die Interpretation ist unabhängig vom Zugriff

Kontextrelativität:

  • Auf der Referenz basierende Aktionen werden relativ zum Kontext des Endbenutzers ausgeführt
  • Operationen, die auf global eindeutige Dinge verweisen sollen, müssen URIs verwenden, die die Ressource von allen anderen unterscheiden

Lokaler Kontext-URI:

file:///etc/hosts

Wird nur verwendet, wenn der Kontext selbst ein ressourcendefinierender Aspekt ist
Z.B. Online-Hilfehandbücher, die auf Dateien im Dateisystem des Endbenutzers verweisen

1.1.1. Generische Syntax

Schema-Namen

Jeder URI beginnt mit einem Schema-Namen (definiert in Abschnitt 3.1), der sich auf eine Spezifikation für die Zuweisung von Identifikatoren innerhalb dieses Schemas bezieht.

Föderiertes Benennungssystem: Die URI-Syntax ist ein föderiertes und erweiterbares Benennungssystem, bei dem die Spezifikationen jedes Schemas die Syntax und Semantik von Identifikatoren, die dieses Schema verwenden, weiter einschränken können.

Generische Elemente

Diese Spezifikation definiert die Elemente der URI-Syntax, die:

  • ✅ Von allen URI-Schemas benötigt werden
  • ✅ Für viele URI-Schemas gemeinsam sind

Vorteile:

  1. Schema-unabhängige Analyse: Definiert die Syntax und Semantik, die zur Implementierung eines schema-unabhängigen URI-Referenz-Analysemechanismus erforderlich sind
  2. Verzögerte Verarbeitung: Ermöglicht das Aufschieben der schema-abhängigen Verarbeitung eines URI, bis sie benötigt wird
  3. Protokollunabhängigkeit: Protokolle und Datenformate, die URI-Referenzen verwenden, können auf diese Spezifikation als Definition des zulässigen Syntaxbereichs verweisen
  4. Vorwärtskompatibilität: Enthält noch nicht definierte Schemas

Entkoppelte Evolution: Entkoppelt die Evolution von Identifikationsschemas von der Evolution von Protokollen, Datenformaten und Implementierungen, die URIs verwenden.

Generischer Parser

Parsing-Fähigkeit: Ein Parser für die generische URI-Syntax kann jede URI-Referenz in ihre Hauptkomponenten analysieren

Zweistufige Analyse:

  1. Generische Analyse: Schema und Hauptkomponenten bestimmen
  2. Schema-spezifische Analyse: Weitere schema-spezifische Analyse der Komponenten durchführen

Obermenge-Beziehung: Die generische URI-Syntax ist eine Obermenge der Syntax aller URI-Schemas


1.1.2. Beispiele

URI-Beispiele

Die folgenden URI-Beispiele veranschaulichen mehrere URI-Schemas und Variationen in ihren gemeinsamen Syntaxkomponenten:

ftp://ftp.is.co.za/rfc/rfc1808.txt
  • Schema: ftp
  • Autorität: ftp.is.co.za
  • Pfad: /rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
  • Schema: http
  • Autorität: www.ietf.org
  • Pfad: /rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
  • Schema: ldap
  • Autorität: [2001:db8::7] (IPv6-Adresse)
  • Pfad: /c=GB
  • Abfrage: objectClass?one
news:comp.infosystems.www.servers.unix
  • Schema: news
  • Pfad: comp.infosystems.www.servers.unix
tel:+1-816-555-1212
  • Schema: tel
  • Pfad: +1-816-555-1212
telnet://192.0.2.16:80/
  • Schema: telnet
  • Autorität: 192.0.2.16:80
  • Pfad: /
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
  • Schema: urn
  • Pfad: oasis:names:specification:docbook:dtd:xml:4.1.2

1.1.3. URI, URL und URN

Konzeptionelle Unterscheidung

URI-Klassifizierung: Ein URI kann weiter als Lokator, Name oder beides klassifiziert werden

URL (Uniform Resource Locator)

Definition: Die Teilmenge von URIs, die zusätzlich zur Identifizierung einer Ressource ein Mittel zur Lokalisierung der Ressource bereitstellen, indem sie ihren primären Zugriffsmechanismus beschreiben (z.B. ihren Netzwerk-„Standort")

Merkmale:

  • Bietet Zugriffsmethode
  • Beschreibt Netzwerkstandort
  • Kann sich ändern, wenn die Ressource verschoben wird

Beispiele:

http://www.example.com/index.html
ftp://ftp.example.com/file.txt

URN (Uniform Resource Name)

Definition: Historisch verwendet, um sich auf URIs unter dem „urn"-Schema [RFC2141] zu beziehen, die global eindeutig und persistent bleiben müssen, auch wenn die Ressource nicht mehr existiert oder nicht verfügbar wird

Merkmale:

  • Persistenter Identifikator
  • Standortunabhängig
  • Bleibt gültig, auch wenn die Ressource verschwindet

Beispiele:

urn:isbn:0-486-27557-4
urn:ietf:rfc:3986

Beziehungsdiagramm

        URI (Uniform Resource Identifier)
/ \
URL URN
(Wie man die Ressource findet) (Persistenter Name)
(Standortabhängig) (Standortunabhängig)

Zeitgenössische Verwendung

Terminologievereinfachung: Derzeit ist es am besten, die Begriffe „URL" und „URN" als Merkhilfen innerhalb des URI-Raums zu betrachten

Praktische Anleitung:

  • Verwenden Sie „URI" statt „URL" oder „URN"
  • Alle URLs sind URIs
  • Alle URNs sind URIs
  • Aber nicht alle URIs sind URLs oder URNs

1.2. Designüberlegungen

Das URI-Design muss mehrere, manchmal widersprüchliche Ziele in Einklang bringen.

1.2.1. Transkription

Ziel: URIs sollten von Menschen mit verschiedenen Techniken und Medien transkribiert werden können

Einschränkungen:

  • Sollten kurz sein
  • Sollten einprägsam sein
  • Sollten leicht einzugeben sein

Konflikte mit anderen Zielen:

Kürze vs. Lesbarkeit
http://x.co/a vs http://example.com/article

Einprägsamkeit vs. globale Eindeutigkeit
http://blog vs http://username.blog.example.com

Praktische Überlegungen:

  • Begrenzter Zeichensatz (ASCII)
  • Groß-/Kleinschreibung-unabhängige Systeme
  • Behandlung von Sonderzeichen

Transkriptionsfehler:

Häufige Fehler:
- Verwechslung von 0 (Null) und O (Buchstabe)
- Verwechslung von 1 (Eins) und l (kleines L)
- Verwechslung von - (Bindestrich) und _ (Unterstrich)

1.2.2. Trennung von Identifikation und Interaktion

Prinzip: URI identifiziert eine Ressource unabhängig davon, wie auf diese Ressource zugegriffen wird

Vorteile:

  1. Identifikationspersistenz: Identifikatoren können unverändert bleiben, wenn sich Zugriffsmethoden ändern
  2. Protokollunabhängigkeit: Auf dieselbe Ressource kann über mehrere Methoden zugegriffen werden
  3. Referenzintegrität: Kann auf nicht zugängliche Ressourcen verweisen

Beispiel:

Identifikation: urn:isbn:0-486-27557-4
Zugriff 1: http://amazon.com/dp/0486275574
Zugriff 2: http://barnesandnoble.com/...
Zugriff 3: Lokale Bibliothek

Nicht-Zugriffs-Verwendungen:

  • 📝 Dokumentreferenzen
  • 🏷️ Metadaten-Tags
  • 🔗 Link-Beziehungen
  • 📊 Datenidentifikation

1.2.3. Hierarchische Identifikatoren

Hierarchische Struktur: Die URI-Syntax unterstützt hierarchische Namensräume

Organisationsform:

http://example.com/products/electronics/phones/model-x
└─Autorität─┘ └────────Pfadhierarchie─────────┘

Vorteile:

  1. Delegierte Verwaltung: Ermöglicht die Delegation der Benennungsautorität
  2. Relative Referenzen: Unterstützt relative URI-Referenzen
  3. Logische Organisation: Spiegelt die logische Organisation von Ressourcen wider

Hierarchie-Beispiel:

/products/
/electronics/
/phones/
/model-x
/model-y
/laptops/
/clothing/

1.3. Syntaxnotation

Diese Spezifikation verwendet Erweiterte Backus-Naur-Form (ABNF) [RFC2234] zur Definition von URI-Syntaxregeln.

ABNF-Grundlagen

Regelformat:

rulename = elements

Grundelemente:

ALPHA    = A-Z / a-z
DIGIT = 0-9
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"

Operatoren:

  • / : Alternation (oder)
  • * : Wiederholung (null oder mehr)
  • [ ] : Optional
  • ( ) : Gruppierung

Beispiel:

scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Interpretation:
- Beginnt mit einem Buchstaben
- Gefolgt von null oder mehr (Buchstabe/Ziffer/+/-/.)

Zusammenfassung der Schlüsselkonzepte

Drei Merkmale von URIs

  1. Uniform: Konsistente Syntax und Semantik
  2. Resource: Kann alles identifizieren
  3. Identifier: Fähigkeit zu unterscheiden und zu identifizieren

URI vs URL vs URN

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

Designprinzipien

  1. Transkribierbarkeit: Menschen können leicht eingeben und sich erinnern
  2. Trennung der Anliegen: Identifikation ist unabhängig vom Zugriff
  3. Hierarchie: Unterstützt Delegation und Organisation

Nächstes Kapitel: 2. Zeichen (Characters) - Zeichenbehandlung und Kodierung in URIs