URL
当ページでは、URLの概要とURLを構成する各要素について、RFCの定義に基づいて整理しています。
URLとはURLの全体構成URLの各構成要素スキーム(Scheme)ホスト(Host)・ドメイン(Domain)・FQDNポート(Port)パス(Path)クエリ(Query)フラグメント(Fragment)URLの一部分の呼称オリジン(Origin)オーソリティ(Authority)
Web技術に関して分かりやすい図解資料を探している方へ勧めたい文献→ イラスト図解式 Web技術の基本
URLとは
URL (Uniform Resource Locator)とは、インターネット上のリソース(Webページやファイル等)が存在する場所を示す識別子のこと。
URLの全体構成
URLの全体的な構成は以下の図の通り。
URLの構成要素の概要は下記の通り。各要素の詳細は以降の章で説明する。
URL構成要素 | 概要 |
---|---|
スキーム | 利用する通信プロトコル。 |
ホスト | ドメイン内のマシンの識別子。 |
ドメイン | インターネット上の特定のネットワークの識別子。 |
ポート | 通信先サービスの識別子。 |
パス | アクセスしたいデータや機能の識別子。 |
クエリ | クライアントからの入力データ。 |
フラグメント | ソース(ページ)内の特定情報の場所を示す識別子。 |
URLの各構成要素
スキーム(Scheme)
スキーム(URLスキーム、Scheme)では、どのようなプロトコルを使用してリソースにアクセスするかを示す。
取得するデータの種類やアクセス方法などを指定するために使う。
URLの 「://」より前の部分であり、RFC3986の3.1章にスキームの構成が以下のように定義されている。
例:以下のURLの中では「https」がスキームとなる。
://www.shukapin.com:8080/info?id=x#L12
主なスキームは以下の通り。
スキーム名 | 概要 |
---|---|
http | Webページにアクセスする |
https | Webページにアクセスする(通信データを暗号化する) |
ftp | FTPでファイルを送受信する |
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のポート番号は「ウェルノウンポート番号」と呼ばれ、主要なサービスやプロトコルが利用するために予約されている。
ウェルノウンポート番号の一例は以下の通り。
ポート番号 | プロトコル |
---|---|
22 | SSH |
25 | SMTP |
80 | HTTP |
443 | HTTPS |
パス(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
オーソリティ(Authority)
オーソリティ(Authority)とは、URLの「//」の後に続き、次の「/」または「?」または「#」までの部分のこと。つまり、URLの中の「ホスト+ドメイン+ポート」のこと。
例:以下のURLの中では「www.shukapin.com:8080」がオリジンとなる。
https:///info?id=x#L12
オーソリティの構文については、RFC3986の3.2章により、以下のように定義されている。