はじめに
こんにちは。アメリカで独学でエンジニアを目指している者です。
現在、ネットワークについて学んでいるのですが、恥ずかしながらURLに関する理解が不十分だったので、これを機に記事としてまとめてみることにしました。
URLとは
インターネットで情報にアクセスするときには、URLと呼ばれる“住所”のような文字列を使います。よく目にする「http://~」「https://~」といったアドレスが、そのURLです。
ここでは、URLとは何か、そしてどのような仕組みで情報を指定しているのか、基本的な構造を中心に解説します。
URLの基本的な構造
一般的に、URLは以下のパーツで構成されています。
プロトコル://ドメイン名(ホスト名)/パス名(ディレクトリ/ファイルなど)
たとえば下記の例を見てみましょう。
https://example.com/products/item01.html
それぞれ3つに分けられます。
- プロトコル(https://)
-
http
やhttps
などが有名です。 - URL先のサーバーにアクセスするときに、どのような方法で通信を行うかを指定します。
-
https
は通信を暗号化するセキュア版のプロトコルです。
- ドメイン名(example.com)
-
example.com
の部分で、目的のWebサーバーがどこにあるのかを指定しています。 -
DNS(Domain Name System)
が、ドメイン名をIPアドレスに変換し、実際のサーバーの場所を特定します。
- パス名(products/item01.html)
- サーバー内のどのファイル(またはディレクトリ)にアクセスするかを示します。
- ディレクトリとファイル名をスラッシュ(/)で区切って階層を表現します。
- 多くのWebサーバーでは、パス部分が省略されているとデフォルトのファイル(
index.html
など)を返すことがあります。
プロトコルやドメイン名については当然知っていましたが、最後の部分ではindex.html
などが省略されるケースが多く、実際にはパス名が省略されていたことを最近知りました。
このようにして、サーバー内のディレクトリ構造を辿って目的のファイルを探せるという仕組みを、改めて理解できました。
URLでよく見るその他の要素
URLについて扱ったので、ほかの要素についてもみていきましょう。
ポート番号
https://example.com:443/
以前、TCP/IPの概念について触れた際にも述べましたが、IPアドレスが“住所”だとすると、ポート番号は「どのサービス(部屋)にアクセスするか」を指定するイメージです。
たとえば、80番であればHTTP、443番であればHTTPSなどが分かります。
URLの中には、ドメイン名の後ろに「:443」のような形でポート番号が記載される場合がありますが、通常はHTTPなら80番、HTTPSなら443番を使うため省略されることがほとんどです。
クエリパラメータ
https://example.com/search?q=chatgpt&page=2
“?(クエスチョンマーク)”の後ろに続く「q=chatgpt&page=2」のような部分が、検索ワードやページ番号などの“パラメータ”です。
クエリパラメータは主に検索の際のフィルタリングなどにも使われます。
Railsでもたしかparamsが取得できるもののうちの一つだった気がします
アンカー(フラグメント)
https://example.com/index.html#section2
“#section2”のように“#(シャープ)”から始まる部分は、ページ内の特定の場所にジャンプするための目印を示します。
通常はページの内容が読み込まれた後、該当の要素にスクロールする仕組みになっています。
まとめ
プロトコル:アクセス方法を示す(https など)
ドメイン名:インターネット上のサーバーの場所を示す(example.com など)
パス名:サーバー内のどこにあるデータかを示す(/products/item01.html など)
さらに、必要に応じてポート番号やクエリパラメータ、フラグメント(アンカー)などを組み合わせることで、より細かい指定や、ページ内の特定位置へのアクセスを実現しています。
普段何気なく使っているURLですが、改めて調べてみると意外な発見もあるものですね。
今後も、このように学んだことがあれば忘れないうちに記事にしてまとめていこうと思います。