URL

当ページでは、URLの概要URLを構成する各要素について、RFCの定義に基づいて整理しています。
Web技術に関して分かりやすい図解資料を探している方へ勧めたい文献→ イラスト図解式 Web技術の基本

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

ドメイン(Domain)とは、インターネット上の特定のネットワークを示す識別子のこと。 下の図の例では、「shukapin.com」がドメイン名となる。
一方、ホスト(Host)とは、ドメイン内の特定のマシン(コンピュータやサーバ)を示す識別子のこと。 下の図の例では、「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=ホスト名+ドメイン」として表現している。 
 
RFC3986の抜粋:
 

ポート(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)

オリジン(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章により、以下のように定義されている。