DNSは何をしているのか
DNSは、URLに出てくる example.com みたいな名前を、通信に使えるIPアドレスに変換する仕組みです。
インターネットの通信は最終的に「IPアドレスのどこに送るか」で動きます。でも人間は 203.0.113.10 みたいな数字を覚えにくいので、覚えやすい名前(ドメイン名)を使えるようにして、その裏でDNSがIPアドレスに変換してくれています。
- 人間が使う:
example.com - 通信で使う:
203.0.113.10
変換は毎回やると遅いので、しばらく覚えておく(キャッシュ)
DNSの変換は、毎回ゼロから調べ直すと時間がかかります。だから一度変換した結果を「しばらく覚えておく」ことで、次回以降は素早く同じIPアドレスを取り出せるようにします。これがキャッシュです。
イメージとしては、こういう流れです。
- ブラウザが
example.comを開く - 以前に調べた結果が残っていれば、それを使って即座にIPアドレスが分かる
- 残っていなければ、DNSサーバに聞きに行って調べる
IPアドレス
IPアドレスは、インターネット上の住所です。
データを届けるときに、どこに届けるかを指定するために使います。
たとえば友だちの中村さんに荷物を送りたいとします。
中村さんの家〜と口で言えば近所の人との会話では通じるかもしれませんが、郵便で届けるには、配達員さんが迷わないように住所が必要です。
- 中村さんの家〜(人間に分かりやすい呼び方)
- 〒123-4567 東京都〜〜(配送に必要な住所)
インターネットも同じで
-
example.com(人間に分かりやすい名前) -
203.0.113.10(通信に必要な住所)
という関係になります。ブラウザは人間に分かりやすい名前から住所を調べて、最終的にIPアドレスという住所を使ってサーバへデータを届けます。
住所が分かっても、どの部屋に届けるかがまだ必要
住所(IPアドレス)が分かっても、マンションで部屋番号が必要なように、同じ機械の中のどのアプリに渡すかを決める情報が必要です。それがポート番号です。
- IPアドレス: 建物の住所
- ポート番号: 部屋番号、受付窓口
だから通信はだいたい IPアドレス:PORT のセットで行き先が決まります。
PORTは65536個ある
0番は特定の用途に割り当てられず、通常は使われないので65535個とも説明されます
IPアドレスが建物の住所だとすると、PORTは建物の中の受付窓口や部屋番号みたいなものです。
- IPアドレス: どの建物に届けるか(住所)
- PORT: 建物のどの窓口に届けるか(担当部署、受付番号)
同じ建物(同じIPアドレス)でも、中にはいろんなサービスが動いています。
- Webサイトを見る窓口
- SSHでログインする窓口
- メールの窓口
- DNSの窓口
だから「この建物のこの窓口に届けてね」を指定する必要があり、それがPORTです。
サーバは1台の中で複数のサービスを動かせますが、PORTによってどのサービスに繋ぐかを分けています。
例えばURLに https://example.com と書かれているとき、裏側ではPORTも決まっています。
httpsなら基本的にはPORT番号が443です。
普段はPORTを書かなくてもアクセスできますし、特段意識する必要もありません。
一方で開発中のローカル環境では http://localhost:3000 のようにPORTを書くことが多いです。これは同じPC(同じ住所)でも、3000番という入口のサービスに繋ぎたいからです。
有名なPORT番号は0〜1023を指し、well-known portsと呼ばれています。
その中でもよく使われる、代表的なものを下記に載せます。
よく使われるPORT表
| PORT | 用途 | 具体的に起きる動作の例 |
|---|---|---|
| 20 | FTP(データ転送) | ファイル本体を送る、ファイルを受け取る(アップロード/ダウンロードの中身が流れる) |
| 21 | FTP(制御) | ログインする、ディレクトリ一覧を取る、転送開始などの命令を送る(操作の指示が流れる) |
| 22 | SSH | サーバにリモートログインしてコマンド実行、公開鍵で認証、SCP/SFTPでファイル転送 |
| 23 | Telnet | 文字ベースでリモート接続して操作する(暗号化なしなので今は基本使われない) |
| 25 | SMTP | メールをサーバへ送る、別のメールサーバへ中継する(送信の配送処理) |
| 53 | DNS | ドメイン名からIPアドレスを調べる、メール用の宛先(MX)などDNSレコードを問い合わせる |
| 80 | HTTP | Webページを取得する、APIでデータを取得する、画像やCSS/JSを取りに行く(暗号化なし) |
| 110 | POP3 | メールサーバからメールを受信する、受信後にサーバから削除する設定で取り出すこともある |
| 443 | HTTPS | 暗号化してWebページやAPIをやり取りする、ログインや決済などの通信を安全に行う |
まとめ
- DNSは、人が覚えやすいドメイン名を、通信に必要なIPアドレスへ変換する仕組み
- IPアドレスは、インターネット上で通信先を指定するための住所のような識別子
- 通信先は基本的に 宛先IPアドレス + 宛先PORTで特定される
- PORTは 0〜65535の65536個が存在し、https は通常443、httpは通常80が使われる