Co to jest URL?

URL, czyli Ujednolicony Lokalizator Zasobów (ang. Uniform Resource Locator)

URL, czyli Ujednolicony Lokalizator Zasobów (ang. Uniform Resource Locator) - kolokwialnie zwany adresem internetowym (ang. web address) - to unikalna sekwencja znaków, która umożliwia lokalizowanie zasobów cyfrowych (cyfrowo zachowanych nienamacalnych wytworów ludzkiego intelektu) poprzez sieć komputerową, w tym między innymi sieć Internet, które następnie mogą podlegać dostępowi używając różnorakich protokołów transferu takich jak HTTP, czyli protokołu przesyłania dokumentów hipertekstowych (ang. Hypertext Transfer Protocol), FTP, czyli protokołu przesyłania plików (ang. File Transfer Protocol) oraz mailto dla poczty elektronicznej.

URL jako URI (ang. Uniform Resource Identifier)

URL jest rodzajem URI, czyli Ujednoliconego Identyfikatora Zasobów (ang. Uniform Resource Identifier).

URI, czyli Ujednolicony Identifikator Zasobów (ang. Uniform Resource Identifier)

URI, czyli Ujednolicony Identifikator Zasobów (ang. Uniform Resource Identifier) to unikalna sekwencja znaków, która umożliwia identyfikację zasobów fizycznych, takich jak fizyczne obiekty, miejsca, oraz ludzie, oraz zasobów logicznych (nienamacalnych wytworów ludzkiego intelektu), takich jak idee, koncepcje, dokumenty pisemne, książki, piosenki, filmy, gry, oraz zasoby cyfrowe.

Pochodzenie URL

Termin URL został zdefiniowany przez wynalazcę sieci World Wide Web, Tim Berners-Lee, w roku 1994.

Konceptualizacja URL jest powiązana z rozwojem Protokołu Przesyłania Dokumentów Hipertekstowych (ang. Hypertext Transfer Protocol, HTTP) zapoczątkowanym przez Tim Berners-Lee w CERN w 1989 roku. Aby dowiedzieć się więcej zobacz What is HTTP?.

Składnia URI

Jak zauważono powyżej, URL jest rodzajem URI.

Generyczna składnia URI zawiera 5 komponentów:

  • schemat (ang. scheme) (wymagany),

  • źródło (ang. authority) (opcjonalne),

  • ścieżka (ang. path) (wymagana),

  • kwerenda (ang. query) (opcjonalna), i

  • fragment (opcjonalny).

Komponenty URI
schemat://źródło/ścieżka?kwerenda#fragment

Komponent źródło (ang. authority) zawiera trzy podkomponenty:

  • infoużytkownika (ang. userinfo) (opcjonalne),

  • host (wymagane), i,

  • port (optional).

URI z podkomponentami daneużytkownika, host i port
schemat://infoużytkownika@host:port/ścieżka?kwerenda#fragment

Podkomponent infoużytkownika może być dalej podzielony na następujące podkomponenty:

  • nazwaużytkownika (ang. username) (wymagana), i

  • hasło (ang. password) (opcjonalne).

Pełna składnia URI
schemat://nazwaużytkownika:hasło@host:port/ścieżka?kwerenda#fragment

Warto zapamiętać, że jedynymi wymaganymi komponentami URI są schemat i ścieżka.

Składnia URL

URL przestrzega generycznej składni URI, jednakże komponent schemat nazywany jest protokołem. Komponent protokół może mieć takie wartości, jak file, http, https, ftp oraz mailto.

A więc, URL może zawierać w sobie pięć komponentów:

  • protokół (ang. protocol) (required),

  • źródło (ang. authority) (opcjonalne), składające się z opcjonalnego infoużytkownika (ang. userinfo), wymaganego hosta oraz opcjonalnego portu,

  • ścieżka (wymagana),

  • kwerenda (opcjonalna), i

  • fragment (opcjonalny).

Z tych pięciu komponentów, tylko protokół oraz ścieżka są wymagane.

URL, który odnosi się do lokalnego pliku jest przykładem URL, w którym tylko protokół oraz ścieżka są wskazane.

URL, w którym wskazane są wyłącznie protokół i ścieżka
file:///Users/johndoe/Documents/mystuff.json
URL Syntax.

Protokół (ang. protocol) URL

Protokół (ang. protocol) URL

Protokół (ang. protocol) URL - odpowiednik schematu URI - jest pierwszym z dwóch wymaganych komponentów URL (drugim jest ścieżka), który określa zestaw zasad i procedur rządzących sposobem, zgodnie z którym zasób URL ma podlegać dostępowi.

Częstą wartością protokołu może być file, http (razem ze swym zaszyfowanym odpowiednikiem https), ftp oraz mailto.

Źródło (ang. authority) URL

Źródło (ang. authority) URL

Źródło (ang. authority) URL jest opcjonalnym komponentem URL który wskazuje serwer lub serwery, z których zasób URL ma być podawany, oraz opcjonalnie umożliwia uwierzytelnianie (ang. authentication) użytkownika podczas dokonywania dostępu do tych serwerów, oraz wskazuje port, poprzez który te serwery powinny podlegać dostępowi.

Żródło URL składa się z trzech podkomponentów:

  • infoużytkownika (opcjonalne),

  • host (wymagany), i

  • port (opcjonalny).

Infoużytkownika (ang. username) w źródle (ang. authority) URL

Infoużytkownika (ang. username) w źródle (ang. authority) URL

Infoużytkownika (ang. username) w źródle (ang. authority) URL jest opcjonlanym podkomponentem w opcjonalnym źródle (ang. authority) URL, który wskazuje wymaganą nazwaużytkownika (ang. username) oraz opcjonalne hasło na potrzeby uwierzytelniania (ang. authentication) podczas dokonywania dostępu do hosta URL.

Dane w podkomponencie hasło podawane są jako tekst odkryty (ang. plain text) i, z tego względu, jego użycie jest odradzane, a nawet oficjalnie dezaprobowane (ang. deprecated).

Host (ang. host) w źródle (ang. authority) URL

Host (ang. host) w źródle (ang. authority) URL

Host (ang. host) w źródle (ang. authority) URL jest wymaganym podkomponentem w opcjonalnym źródle (ang. authority) URL, który wskazuje serwer lub serwery, z których zasób URL ma być podawany.

Host może być:

  • zarejestrowaną nazwą domeny (np. example.net), która może być poprzedzona opcjonalną subdomeną (np. www), lub

  • adresem IP (np. 127.0.0.1).

W zarejestrowanej nazwie domeny ostatni podkomponent (np. com, net, pl) nazywany jest sufiksem domeny (ang. domain suffix).

Zarejestrowana nazwa domeny mapowana jest do jednego lub wielu adresów IP przez System Nazw Domen (ang. Domain Name System, DNS).

Z drugiej strony, wiele różnych zarejestrowanych nazw domen może być mapowanych do jednego adresu IP, gdy w grę wchodzi tak zwany wirtualny hosting.

URL z zarejestrowaną nazwą domeny jako hostem
https://www.example.net/movies/?director=scott
URL z adresem IP jako hostem
http://127.0.0.1:8080/users

Port w źródle (ang. authority) URL

Port w źródle (ang. authority) URL

Port w źródle (ang. authority) URL jest opcjonalnym podkomponentem w opcjonalnym źródle (ang. authority) URL, który identfyikuje proces klienta (ang. client process), który dokonuje dostępu do hosta.

Niektóre numery portów uznazwane są za zarezerwowane i powinny być używane tylko przez procesy używające określonych protokołów.

Powszechnie używany port dla serwerów sieciowych to 8080, jednakże gdy port nie jest wskazany HTTP używa domyślnie portu 80, a HTTPS używa domyślnie portu 443. Te numery portów zarezerwowane są dla tych celów.

URL ze wskazanym numerem portu
https://example.net:443

Ścieżka (ang. path) URL

Ścieżka (ang. path) URL

Ścieżka (ang. path) URL jest drugim z dwóch wymaganych komponentów URL (pierwszym jest protokół), która określa logiczną lokalizację do danego zasobu URL (podczas gdy, protokół określa zasady i procedury dotyczące sposobu dostępu do tego zasobu).

Ścieżka składa się z jednego segmentu (np. /filmy) lub z wielu segmentów (np. /filmy/komedie)

Kwerenda (ang. query) w URL

Kwerenda (ang. query) w URL

Kwerenda (ang. query) w URL jest opcjonalnym komponentem URL, który wskazuje parametry używane przy dokonywaniu dostępu do zasobu URL.

W URL kwerenda poprzedzona jest znakiem zapytania (?).

Składnia kwerendy nie jest jasno zdefiniowana, ale zazwyczaj składa się z par kluczy i wartości (ang. key-value pairs) rozdzielonych znakiem znakiem ampersand (&).

URL z kwerendą
https://www.example.net/movies?director=scott&year=1982

Fragment (ang. fragment) w URL

Fragment (ang. fragment) w URL

Fragment (ang. fragment) w URL jest opcjonalnym komponentem URL, który wskazuje logiczną lokalizację do drugorzędnego zasobu (ang. secondary resource) URL takiego jak element w dokumencie HTML oznaczonego poprzez atrybut ID.

W URL fragment poprzedzony jest znakiem hashtag (#).

URL z kwerendą i fragmentem
https://www.example.net/movies?director=scott&year=1982#actors

Adresy URL w zapytaniach (ang. requests) HTTP

Adresy URL używane są w zapytaniach HTTP do wskazywania zasoób podlegających dostępowi.

Zasoby, które mogą podlegać dostępowi używając HTTP oraz adresów URL to przede wszystkim dokumenty HTML.

Konwersja i kodowanie URL

Dany URL może zostać użyty do transmisji danych poprzez sieć Internet, gdy składa się z bezpiecznych znaków ASCII.

Znak spoza ASCII, aby zostać użytym w URL, musi być skonwertowanym do tak zwanego Punycode składającego się z bezpiecznych znaków ASCII.

Przykładem znaku spoza ASCII jest , który, aby być użytym w URL, musi zostać skonwertowany do xn--g6h.

Znak ASCII, który nie jest uznany za bezpieczny, aby być użytym w URL musi zostać zakodowany do zestawu bezpiecznych znaków ASCII składającego się z prefiksu % oraz następującego po nim numeru heksadecymalnego (ang. hexadecimal).

Przykładem znaku ASCII, który nie jest uznany za bezpieczny, jest znak spacja, który musi być zakodowany do + lub %20

Adres IRI (ang. Internationalized Resource Identifier)

IRI, czyli Zinternacjonalizowany Identyfikator Zasobów (ang. Internationalized Resource Identifier)

IRI, czyli Zinternacjonalizowany Identyfikator Zasobów (ang. Internationalized Resource Identifier) to URL, który na potrzeby internacjonalizacji, może składać się ze znaków Unicode (w przeciwieństwie do standardowych znaków URL z ASCII).

Większość współczesnych przeglądarek wspiera adresy IRI.

Na potrzeby transmisji poprzez Internet, znaki spoza ASCII w IRI konwertowane są do tak zwanego kodu Punycode, który składa się tylko z bezpiecznych znaków ASCII.

Przykładem znaku Unicode spoza ASCII jest , który musi być skonwertowany do xn--gmq.

Nazwa domeny w IRI, która zawiera w sobie zinternacjonalizowane znaki, określana jest IDN, czyli Zinternacjonalizowaną Nazwą Domeny (ang. Internationalized Domain Name).