URI: der Uniform Resource Identifier erklärt
Den meisten ist das Konzept von URLs bekannt. Mit den Adressen lassen sich Websites im Internet ansteuern. Was aber ist ein URI? Erdacht hat das Konzept von URIs der Urvater des World Wide Webs, Tim Berners-Lee. Als er im RFC 1630 den Begriff zum ersten Mal verwendete, sprach er noch von einem Universal Resource Identifier. Inzwischen, unter anderem durch Veröffentlichungen des Word Wide Web Consortiums (W3C), hat sich URI allerdings als Akronym für den Uniform Resource Identifier etabliert und wird bis heute so verstanden. An der eigentlichen Konzeption hat sich allerdings nichts geändert.
Was ist der Uniform Resource Identifier?
Uniform Resource Identifier (URI) sollen abstrakte oder physische Ressourcen im Internet ansprechen. Was für Ressourcen das sein sollen, kann sich je nach Situation unterscheiden. Es kann sich dabei beispielsweise um Webseiten handeln, aber ebenso können auch Sender oder Empfänger von E-Mails per URI identifiziert werden. Anwendungen nutzen die eindeutige Identifikation, um mit einer Ressource zu interagieren oder Daten der Ressource abzufragen.
Auf dieser Basis können Protokolle wie HTTP oder FTP funktionieren, den die Form der Adressierung wird von der URI-Syntax festgelegt. Aus dem URI kann ein System ablesen, welche Information wo und wie angesprochen werden soll.
URI-Syntax
Ein URI besteht aus höchstens fünf Teilen, von denen allerdings nur zwei obligatorisch sind.
- scheme: Gibt Auskunft über das verwendete Protokoll.
- authority: Identifiziert die Domäne.
- path: Zeigt den genauen Pfad zur Ressource.
- query: Steht für eine Abfrage-Aktion.
- fragmnet: Bezeichnet einen Teilaspekt einer Ressource.
Nur scheme und path müssen in jedem Identifier vorkommen. In der URI-Syntax werden alle Bestandteile nacheinander aufgeführt und durch bestimmte, festgelegte Zeichen voneinander getrennt.
scheme :// authority path ? query # fragment
Die doppelten Schrägstriche nach dem ersten Doppelpunkt sind nur dann notwendig, wenn auch der Teil authority gefüllt ist. Außerdem kann authority noch eine Benutzerinformation enthalten, die dann durch das @-Zeichen von der Domain abgetrennt ist, und zusätzlich noch eine Portangabe zum Schluss beinhalten, welche dann wiederum mit einem Doppelpunkt von der Domain getrennt wird.
Als Beispiel kann eine übliche Webadresse dienen: "https://example.org/test/test1?search=test-question#part2"
- scheme: https
- authority: example.org
- path: test/test1
- query: search=test-question
- fragment: part2
In dem Beispiel verweist der URI auf einen Teil einer Website. Auf den Teil (part2) wird per HTTP zugriffen; der Teil befindet sich auf einem Gerät mit der Kennung example.org und ist unter dem angegebenen Pfad zu finden, wenn man zuvor eine Suche durchführt. Mit dem Uniform Resource Identifier kann aber eben auch eine Mail-Adresse angesprochen werden: "mailto:user@example.org".
- scheme: mailto
- path: user@example.org
In diesem Fall sind nur noch die beiden obligatorischen Bestandteile im URI enthalten. Weitere mögliche Ressourcen, die mit dieser Syntax angesprochen werden können, sind beispielsweise auch Dateien oder sogar Telefonnummern.
Zwar ist der Pfad eine obligatorische Angabe in jedem URI, der Inhalt des Bestandteils kann aber leer sein. So ist „http://example.org/“ ein gültiger URI mit leerem path.
URI-Schemata, also der erste Teil jedes URIs, werden von der IANA verwaltet. Zwar kann man auch eigene Schemata verwenden, die von der Organisation bestätigten sind allerdings über das komplette Internet hinweg bekannt. Die bekanntesten schemes sind:
- about: Browserinformationen
- data: eingebettete Daten
- feed: Web-Feeds
- file: Dateien
- ftp: File Transfer Protocol
- git: Versionsverwaltung mit Git
- http: Hypertext Transfer Protocol
- https: Hypertext Transfer Protocol Secure
- imap: Internet Message Access Protocol
- pop: POP3
- mailto: E-Mail-Adressen
- news: Usenet-Newsgroups
- rsync: Datensynchronisation
- sftp: SSH File Transfer Protocol
- ssh: Secure Shell
- tel: Telefonnummern
- urn: Uniform Resource Names
Die IANA veröffentlicht eine offizielle Liste aller bekannter URI-Schemata.
URI-Referenz
Um nicht immer die komplette Angabe eines URIs schreiben (und speichern) zu müssen, verwenden manche Anwendungen eine kürzere Fassung der Syntax. Damit die Kurzform richtig verstanden werden kann, muss es immer einen Basis-URI geben, der komplett ausformuliert ist. Die URI-Referenzen werden dann intern aufgelöst. Man unterscheidet deshalb absolute Referenzen von relativen. Der absolute URI funktioniert unabhängig von Kontext und besteht mindestens aus scheme, authority und path. Die relative Referenz ist die eigentliche Kurzform: Mit dieser Form wird nur die Abweichung vom Basis-URI angegeben. Ein relativer URI muss sich daher immer im selben Namensraum befinden, wie der Basis-URI.
Bei der relativen Referenz wird kein scheme angegeben. Um relative URIs von absoluten unterscheiden zu können, darf daher auch kein Doppelpunkt im ersten Segment eines Pfades auftauchen, denn der Teil vor dem Doppelpunkt würde dann als scheme interpretiert. Unter den relativen Referenzen unterscheidet man drei verschiedene Arten, die man jeweils durch eine Markierung am Anfang des Pfads erkennt:
- Eine relative Pfad-Referenz beginnt ohne Schrägstrich.
- Eine absolute Pfad-Referenz beginnt mit einem Schrägstich.
- Eine Netzwerk-Pfad-Referenz beginnt mit zwei Schrägstrichen.
URI vs. URL vs. URN
Große Verwirrung besteht oft angesichts der sehr ähnlich klingenden Abkürzungen URIs, URLs oder URNs. Der Unsicherheit wird dadurch unterstützt, dass alle drei Begriffe auch technisch miteinander verwandt sind. Der Uniform Resource Locator wird verwendet, um anzuzeigen, wo sich eine Ressource befindet. Deshalb wird die URL auch beim Surfen im Internet benutzt, um auf bestimmte Webseiten zu navigieren. Dagegen ist der Uniform Resource Name ortsunabhängig und bezeichnet eine Ressource dauerhaft. Sind URLs also vor allem in Form von Webadressen bekannt, kann ein URN beispielsweise auch als ISB vorkommen, um ein Buch dauerhaft identifizieren zu können.
URL und URN folgen der URI-Syntax. Beide Bezeichnungsarten sind deshalb Teilmengen von URI. URL und URN sind also immer URIs. Uniform Resource Identificators sind im Umkehrschluss aber keine URLs oder URNs.