Webサービスを開発する上で絶対に知らないといけない基礎用語の意味を自分なりにまとめています。
- ドメイン名
- IPアドレス
- DNSサーバー
- ポート番号
ドメイン名
世界中には、星の数ほどのWebサイトがあります。日本の中だけでもサーバーの数は276万台あると言われています。
私達が、携帯電話やPCでWebサイトにアクセスしている時、手元にある携帯電話やPCはどのようにして目的のWebサイトにアクセスしているのでしょうか?
普段、インターネットを頻繁に使っている私達は上の問いに対して、インターネットアドレス
があるからそれを頼りにしてサーバーにアクセスしているのでは?と考える人も多いと思います。私もかつてはそのように考えていました。
大枠は正解ですが、エンジニアとして深堀りをしていきたいと思います。
私達がインターネットアドレス
と普段呼んでいるものは以下になりますよね?
https://www.google.com/
この中でも以下の箇所はドメイン名
と呼ばれていて、各サーバーの住所の役割を果たしています。
google.com
ドメイン名:インターネット上でWebサイトを特定するための識別子。インターネット上での住所の役割を果たしている。
IPアドレス
しかし、ドメイン名はあくまで、「人間が理解しやすいために」作られたもので、コンピューター同士は数字の羅列(IPアドレス)
でやりとりをします。
IPアドレス:インターネットに接続されている機器(サーバーや携帯電話、PC)すべてに割り振られている番号。重複はなく、一つ一つが世界唯一の番号。
つまり、IPアドレスが存在することで、私達の手元にあるPCや携帯電話は
私達の見たい情報(htmlファイル)が保存されているサーバーを特定することができます。
DNSサーバー
私達があるWebサイトにアクセスするとき、PCや携帯電話は以下の動作をして世界中のサーバーにアクセスして情報のやりとりをしています。
(1)クライアントサイドは、DNSサーバー
にドメイン名を教えて、IPアドレス
を問い合わせします。
(2)DNSサーバーは対応するIPアドレスを返します。
(3)クライアントサイドは、IPアドレスを頼りに対象サーバーにアクセスします。
(4)サーバーはクライアントサイドにhtmlファイルを返します。(=クライアント側でWebサイトが表示されます。)
DNSサーバー
は、IPアドレス(コンピューター同士でやりとりする番号)とドメイン名(人間がわかりやすいように記述されたもの)の紐づけ表
を持っているサーバーになります。クライアントはまず、このDNSサーバーに問い合わせをしてIPアドレスを教えてもらってから、対象のサーバーにアクセスをします。
ポート番号
しかし、厳密には上記だけでは、私達がアクセスしたいWebサービスにクライアントはアクセスすることができないのです。
その理由は、アクセスされたサーバー側が、今のままではクライアントサイドが何をしたいのか理解できないから
なのです。
一体何が起こっているのでしょうか。
復習になりますが、クライアントとサーバーは様々なプロトコルを使ってお互いやりとりをします。今回は通信なのでHTTPというプロトコルを使ってやりとりをします。
この「HTTP」というプロトコルを理解してくれる「窓口」(ポート番号
)にアクセスをしないとサーバー側は何も動いてくれないのです。
人間社会の例で例えるのであれば
IPアドレスがマンション名。ポート番号は部屋番号になります。
IPアドレスでマンション名まではつきとめられて、入口まで到着することはできます。
でも部屋番号がわからないと最終的に目的のhtmlが存在するアプリケーションにたどり着けません。
ポート番号は各サーバーによって自由に決めることができます。(HTTPだからと言って80番である必要はありません)
しかし、代表的なプロトコルが使用するポートについてはあらかじめ取り決めがされていて「ウェルノウンポート(Well-known ports)」として知られています。
ポート番号 | プロトコル |
---|---|
80 | HTTP |
110 | POP3 |
25 | SMTP |
22 | SSH |
今回の場合はHTTPのプロトコルを使用しているので、80番ポート
にアクセスをして最終的に自分が閲覧したいhtmlのレスポンスをサーバーからもらうことができます。