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