URL

当ページでは、URLの概要とURLを構成する各要素について、RFCの定義に基づいて整理しています。
 
 

URLとは

URL (Uniform Resource Locator)とは、インターネット上のリソース(Webページやファイル等)が存在する場所を示す識別子のこと。
URLの定義についてはRFC3986内に記載されている。
 

URLの全体構成

URLの全体的な構成は以下の図の通り。
 
URLの構成要素の概要は下記の通り。各要素の詳細は以降の章で説明する。
URL構成要素概要
スキーム利用する通信プロトコル。
ホストドメイン内のマシンの識別子。
ドメインインターネット上の特定のネットワークの識別子。
ポート通信先サービスの識別子。
パスアクセスしたいデータや機能の識別子。
クエリクライアントからの入力データ。
フラグメントソース(ページ)内の特定情報の場所を示す識別子。
 

URLの各構成要素

スキーム(Scheme)

スキーム(URLスキーム、Scheme)では、どのようなプロトコルを使用してリソースにアクセスするかを示し、取得するデータの種類やアクセス方法などを指定するために使う。
 
URLの 「://」より前の部分であり、RFC3986の3.1章にスキームの構成が以下のように定義されている。
 
以下のURLの中では「https」がスキームとなる。
://www.shukapin.com:8080/info?id=x#L12
 
主なスキームは以下の通り。
スキーム名概要
httpWebページにアクセスする
httpsWebページにアクセスする(通信データを暗号化する)
ftpFTPでファイルを送受信する
mailto電子メールの送信先を指定する
comgooglemapsスマホアプリ「Google Maps」を起動する
 

ホスト(Host)・ドメイン(Domain)・FQDN

ドメインとは、インターネット上の特定のネットワークを示す識別子のこと。 下の図の例では、「shukapin.com」がドメイン名となる。
 
一方、ホストとは、ドメイン内の特定のマシン(コンピュータやサーバ)を示す識別子のこと。 下の図の例では、「pc」「www」「mail」「api」がホスト名となる
また、「ホスト+ドメイン」のことをFQDN(Fully Qualified Domain Name、完全修飾ドメイン)と呼ぶ。FQDNは、インターネット上のマシンを一意に特定する識別子となる。
 
以下のURLの中では「www」がホスト名、「shukapin.com」がドメイン名、「www.shukapin.com」がFQDNとなる。
https://:8080/info?id=x#L12
 
RFC3986の構成との違いについて RFC3986においてはFQDNのことを「Host」と定義している。(DNSの設定により、ドメイン名が特定のホスティングサーバーを指すため。)
当ページではDNSの用語定義に従い、「RFC定義のHost=FQDN=ホスト名+ドメイン」として表現している。
 

ポート(Port)

ポート(ポート番号、Port)とは、通信先のサービスの識別子のこと。
 
ポートの構文についてはRFC3986の3.2.3章にて、以下のように定義されている。
 
以下のURLの中では「8080」がポート番号となる。
https://www.shukapin.com:/info?id=x#L12
 
以下のような場合はポート番号を省略することができる。
  • スキームが「http」でポート番号「80」が使われている場合
  • スキームが「https」でポート番号「443」が使われている場合
 
16ビットの整数で構成され、0~65535の範囲の番号が使われる。
0~1023のポート番号は「ウェルノウンポート番号」と呼ばれ、主要なサービスやプロトコルが利用するために予約されている。
 
ウェルノウンポート番号の一例は以下の通り。
ポート番号プロトコル
22SSH
25SMTP
80HTTP
443HTTPS
 

パス(Path)

パス(Path)とは、アクセスしたいページやデータ、機能の識別子のこと。
 
以下のURLの中では「/info」がパスとなる。
https://www.shukapin.com:8080?id=abc#L123
 

クエリ(Query)

クエリ(URLパラメータ、Query)とは、クライアントからの入力データなどの、サーバへ送る付加情報のこと。クエリの先頭には「?」を付ける。
 
クエリの構文についてはRFC3986の3.4章により、以下のように定義されている。
 
以下のURLの中では「?id=abc」がクエリとなり、クエリ名「id」に値「abc」を指定して送るという意味となる
https://www.shukapin.com:8080/info?#L12
 
また、複数のクエリを送信する場合は、「&」でクエリを繋ぐ。
以下にクエリ名「id」に値「abc」を指定し、クエリ名「input」に値「xyz」を指定して送る例を示す。
https://shukapin.com?&
 

フラグメント(Fragment)

フラグメント(Fragment)とは、ソース(ページ)内の特定情報の場所を示す識別子のこと。「アンカー」とも呼ばれる。フラグメントの先頭には「#」を付ける。
 
フラグメントの構文については、RFC3986の3.5章により、以下のように定義されている。
 
以下のURLの中では「L12」がフラグメントとなる。
https://www.shukapin.com:8080/info?id=x#
 

URLの一部分の呼称

オリジン(Origin)

オリジンとは、URLの中の「スキーム+ホスト+ドメイン+ポート」のこと。
 
以下のURLの中では「https://www.shukapin.com:8080」がオリジンとなる。
/info?id=x#L12
 
オリジンは同一サービスとしてみなされる単位であり、同一オリジンポリシーやCORSといった仕組みなどにおいて、この用語が利用されている。
 

オーソリティ(Authority)

オーソリティ(Authority)とは、URLの「//」の後に続き、次の「/」または「?」または「#」までの部分のこと。つまり、URLの中の「ホスト+ドメイン+ポート」のこと。
 
以下のURLの中では「www.shukapin.com:8080」がオリジンとなる。
https:///info?id=x#L12
 
オーソリティの構文については、RFC3986の3.2章により、以下のように定義されている。