URLとは何か:定義と構成要素の概要
まず、要点
- URIという上位概念のうち、所在特定手段を示す部分がURL。
- 構成要素はスキーム・オーソリティ・パス・クエリ・フラグメント。
- フラグメント(#以降)は通常サーバーへ送信されない。
このノートの内容
URLを構成する5つの要素は何を表す?
URL文字列の左から右へ対応する順に要素を並べています。
| 対象 | 役割・違い |
|---|---|
| スキーム | https:// のようにリソース取得に使うプロトコルを示す部分 |
| オーソリティ | ドメイン名とポート番号から成り、どのサーバーに要求するかを示す |
| パス | /path/to/myfile.html のようにサーバー上のリソースの場所を示す |
| クエリ文字列 | ?key1=value1&key2=value2 の形式でサーバーに渡す追加パラメータ |
| フラグメント識別子 | #以降で示され、通常はサーバーへ送信されない目印 |
ここがポイント:URLはスキームからフラグメントまで5つの部分の組み合わせで、それぞれ異なる役割を持つ。
前提・位置づけ:MDNの解説とRFC 3986の一般構文に基づく既存の構成要素の分解であり、新しい情報は含みません。
調査結果
URLとは何か
URL(Uniform Resource Locator)は、ブラウザがウェブページや画像などのリソースを取得する際に指定する、インターネット上の固有のリソースを指す一意のアドレスである。ブラウザの上部(アドレスバー)に表示されている文字列がこれにあたる。MDN Web Docsの解説[1]では、有効なURLはそれぞれ理論上一意のリソースを指すとされている。
技術仕様の観点では、URLは「URI(Uniform Resource Identifier)」というより広い概念のサブセットに位置づけられる。インターネット技術の標準化団体IETFが定めたRFC 3986[2](2005年1月発行)では、URIを「抽象的または物理的なリソースを識別する文字列」と定義した上で、URLは「そのリソースの主要なアクセス手段(プロトコルなど)を記述することで所在を特定する」URIの一種と説明されている。
URLの構成要素
URLは概ね次の要素から成る。MDN[1]の解説とRFC 3986の一般構文(scheme ":" hier-part [ "?" query ] [ "#" fragment ])はほぼ対応している。
- スキーム:
https://のように、ブラウザがリソースを取得するために使うプロトコルを示す部分。 - オーソリティ:ドメイン名(例:
www.example.com、どのサーバーに要求するかを示す)とポート番号(HTTPは80、HTTPSは443が標準)から成る。 - パス:
/path/to/myfile.htmlのように、サーバー上のリソースの場所を示す部分。現代のウェブでは物理ファイルとは限らず、サーバー側で処理される抽象的な経路であることが多い。 - クエリ文字列:
?key1=value1&key2=value2の形式で、サーバーに渡す追加のパラメータ。 - フラグメント識別子(アンカー):
#見出し名のように、リソース内の特定箇所を指す目印。ブラウザの表示制御に使われ、通常はサーバーへ送信されない。
MDNでは、この構造を郵便の住所に例える説明も紹介されている。スキームは配送手段、ドメイン名は市町村、ポート番号は郵便番号、パスは配達先の建物に相当するというものである。
まとめ
「ざっくり」言えば、URLは「インターネット上のどこに何があるかを示す住所」であり、スキーム://ドメイン:ポート/パス?クエリ#フラグメント という形式で、リソースの取得方法・場所・詳細指定をひとまとめに表現した文字列である。
注意事項・未確認事項
- 問いが「ざっくり知りたい」という概要レベルの要望のため、URLエンコーディングや国際化ドメイン名(IDN)、パーセントエンコードなど発展的な技術詳細は本レポートでは扱っていない。必要であれば別途調査が望ましい。
- RFC 3986は2005年発行の一次仕様だが、その後WHATWG URL Standardなどブラウザ実装寄りの仕様も存在し、細部(特殊文字の扱いなど)でRFCとの差異が指摘されることがある。本レポートでは概要説明のためRFC 3986とMDNの記述に基づく一般的な定義に絞っており、両仕様の詳細な差異までは検証していない。