Day 24: ネットワークのコアプロトコルと安全なプロトコルの理解 - ネットワークの知識
はじめに
ここでは、ネットワークのコアプロトコルと安全なプロトコルに焦点を当て、以下の内容を取り上げます。
- DNSやHTTPの仕組み
- SMTP、POP3、IMAPなどのメールプロトコル
- SSL/TLSによる暗号化通信
- VPNの基本概念
また、Wiresharkを使用した実践的なキャプチャタスクを通じて、プロトコルの動作を視覚的に確認します。
ネットワークのコアプロトコル
1. DNS (Domain Name System)
DNSは、IPアドレスとドメイン名を相互に変換するプロトコルです。
実は以前にDNSの投稿をしているので、簡潔に仕組みの説明とキャプチャしてパケットを見てみましょう。Day 11: DNS
仕組み
-
名前解決: ドメイン名(例:
example.com
)をIPアドレスに変換。 - DNSレコード: Aレコード(IPv4)、AAAAレコード(IPv6)、CNAME(別名)など複数のレコードタイプがあり、それぞれが特定の役割を持っています。DNSレコードの種類
キャプチャタスク
Wiresharkで以下を確認してみましょう。
-
Wiresharkのインストールと起動
- 公式サイト(Wireshark)からインストール。
- インストール後、Wiresharkを起動します。
-
インターフェースを選択
- キャプチャしたいネットワーク(Wi-Fi、有線LANなど)を選択。
- 使用中のインターフェースを確認し、選択します。
-
キャプチャの開始
- 「Start Capture」ボタンをクリックしてキャプチャを開始します。
-
DNSクエリを発生させる
- コマンドプロンプトまたはターミナルを開き、以下のコマンドを実行します:
nslookup www.google.com
- このコマンドは、
www.google.com
のIPアドレスを取得するためにDNSサーバーへ問い合わせを行います。
- コマンドプロンプトまたはターミナルを開き、以下のコマンドを実行します:
-
Wiresharkでフィルタを設定
- DNS通信のみを表示するために、フィルタ欄に以下を入力して適用します:
dns
- DNS通信のみを表示するために、フィルタ欄に以下を入力して適用します:
-
キャプチャ結果の観察
- フィルタリングされたパケットリストから、DNSクエリとレスポンスを探します。
- 以下の情報を確認します:
-
DNSクエリ: クライアント(あなたのデバイス)がDNSサーバーに送信するリクエスト。
- ドメイン名:
www.google.com
- クエリタイプ:
A
(IPv4アドレス)またはAAAA
(IPv6アドレス)。
- ドメイン名:
-
DNSレスポンス: DNSサーバーから返される応答。
- 対応するIPアドレス(例:
142.250.190.36
など)が含まれます。
- 対応するIPアドレス(例:
-
DNSクエリ: クライアント(あなたのデバイス)がDNSサーバーに送信するリクエスト。
-
キャプチャの停止
- 必要な情報を確認したら、「Stop Capture」ボタンをクリックしてキャプチャを停止します。
2. HTTPとFTP
インターネットでのデータ通信には、用途に応じてさまざまなプロトコルが使用されますが。その中でも、HTTPとFTPは広く利用される基本的なプロトコルです。それぞれの仕組みと特徴を見ていきます。
HTTP (Hypertext Transfer Protocol)
HTTPは、主にWebページのデータ転送に使用されるプロトコルです。WebブラウザがWebサーバーからデータを取得し、ユーザーにページを表示する際に利用されます。
-
リクエストとレスポンスの仕組み:
-
リクエスト:
クライアント(例: Webブラウザ)が、Webサーバーに対してデータを要求します。たとえば、ブラウザでURLを入力すると、「このURLのページを送ってほしい」とリクエストが送信されます。 -
レスポンス:
サーバーがリクエストを受け取り、HTML、CSS、画像ファイルなどページを構成するのに必要なデータを返します。
-
リクエスト:
-
HTTPの主な特徴:
- ステートレス(状態を記憶しない): HTTPでは1つのリクエストとレスポンスが独立しており、サーバーは以前のリクエストの情報を記憶しません。ただし、Cookieやセッションを使って擬似的に状態を管理することは可能です。
-
ポート番号: 通常はポート
80
を使用。
-
進化したHTTP/2やHTTP/3:
- 高速化や効率化が進んでおり、複数リクエストの同時送信や通信の最適化が行われています。どのバージョンが使われるかは基本的にはサーバー側の設定に依存します。
FTP (File Transfer Protocol)
FTPは、ファイルをアップロード(送信)したり、ダウンロード(取得)したりするためのプロトコルです。サーバーとクライアント間で大容量のファイルをやり取りする場合に便利です。
-
通信の仕組み:
FTPでは、コントロール接続とデータ接続という2つの接続を利用します。-
コントロール接続:
コマンドの送受信を行うための接続です。たとえば、「このファイルを送信してください」という指示を送ります。 -
データ接続:
実際にファイルデータを転送するための接続です。
-
コントロール接続:
-
データ通信の特徴:
- コントロール接続とデータ接続を分けて通信する。
-
FTPの主な特徴:
-
アクティブモードとパッシブモード:
通信の種類によって、クライアントとサーバーの接続方法が異なります。- アクティブモード: サーバーがクライアントに接続してデータ転送を行います。
- パッシブモード: クライアントがサーバーに接続し、データをやり取りします。ファイアウォールの影響を受けにくいのが特徴です。
-
ポート番号: 通常はコントロール接続でポート
21
、データ接続でポート20
を使用。
-
アクティブモードとパッシブモード:
HTTPリクエストのキャプチャ
Wiresharkで以下を確認してみましょう。
-
Wiresharkでキャプチャを開始:
- 使用中のネットワークインターフェースを選択して「Start Capture」をクリックします。
-
ブラウザでHTTP通信を発生:
- ブラウザを開き、
http://example.com
のようなHTTP(非HTTPS)のWebページにアクセスします。 - 例:
http://example.com
- ブラウザを開き、
-
フィルタを設定:
- Wiresharkのフィルタ欄に以下を入力してHTTP通信を絞り込みます:
http
- Wiresharkのフィルタ欄に以下を入力してHTTP通信を絞り込みます:
-
HTTPリクエストの確認:
- キャプチャしたパケット一覧から、HTTPリクエスト(GETやPOST)を探します。
- HTTPリクエストをクリックすると、以下の詳細が確認できます:
-
GETリクエスト:
- URLやホスト情報(例:
GET /index.html HTTP/1.1
)
- URLやホスト情報(例:
-
GETリクエスト:
-
キャプチャを停止:
- 必要なデータがキャプチャできたら、「Stop Capture」をクリックします。
3. SMTP、POP3、IMAP
これらは、メールを送受信する際に使われる主要なプロトコルです。それぞれ役割が異なり、メールがどのように送られ、受信されるのかの理解のためその仕組みを押さえておきましょう。
SMTP (Simple Mail Transfer Protocol)
メールを送信する際に使用されるプロトコルです。
「送信専用」なため、受信したメールの管理には使いません。
-
役割:
メールクライアント(例: Outlook、Thunderbird)やメールサーバー間で、送信メールを転送します。送信者から宛先のサーバーにメールを届ける仕組みを提供します。 -
仕組み:
送信者のクライアントがSMTPサーバーに接続し、送信先のドメインのメールサーバーにメールを転送します。
例:example@gmail.com
からinfo@domain.com
に送信する際、GmailのSMTPサーバーを通じて、宛先サーバーにメールを届けます。
POP3 (Post Office Protocol 3)
メールを受信するためのプロトコルです。サーバー上のメールをダウンロードしてローカルに保存し、管理します。
-
役割:
メールサーバーからクライアントにメールをダウンロードして、オフラインでメールを管理します。 -
仕組み:
メールクライアント(例: Outlook)がPOP3サーバーに接続して、メールをローカルにダウンロードします。
一度ダウンロードしたメールはサーバーから削除される場合が多いです。
IMAP (Internet Message Access Protocol)
メールをサーバー上で管理しながら、クライアントで閲覧・操作するためのプロトコルです。
-
役割:
メールをサーバー上に保存し、複数のデバイスから同じメールボックスを確認できます。 -
仕組み:
メールクライアントは、サーバー上のメールにアクセスし、ローカルにコピーを作成します。
メールを削除したり移動した場合、変更はサーバーに反映され、他のデバイスにも適用されます。
SMTP、POP3、IMAPの違い
以下の表に、3つのプロトコルの特徴をまとめました。それぞれの役割や利用シーンの違いを理解することで、メールの仕組みをより効果的に活用できます。
特徴 | SMTP | POP3 | IMAP |
---|---|---|---|
主な用途 | メールの送信 | メールの受信とダウンロード | メールの受信とサーバー管理 |
メールの保存場所 | サーバー → 送信先サーバー | ローカルデバイス | サーバー上 |
複数デバイスでの利用 | 不可 | 不可 | 可能 |
オフライン管理 | 不可 | 可能 | 部分的に可能 |
ストレージの制約 | 無関係 | 無関係 | サーバー容量に依存 |
大きな違い
-
SMTPは送信専用
- SMTPはメールを送信するためのプロトコルであり、メールを受信することはできません。POP3やIMAPとは役割が明確に異なります。
-
POP3とIMAPの使い分け
- POP3は、サーバーからメールをダウンロードしてローカルに保存する仕組みのため、インターネット接続がなくても受信したメールを確認できます。ただし、サーバーからメールが削除されるため、他のデバイスでは同じメールを確認できなくなることがあります。これにより、デバイス間でのメールの一貫性が失われることがあります。
- IMAPは、サーバー上でメールを管理する仕組みのため、複数のデバイスから同じメールを確認できます。メールの削除や移動などの操作がサーバーに反映されるため、どのデバイスでも最新の状態を維持できます。一方で、サーバー容量の制約を考慮する必要があります。
具体例
-
SMTPの使用例
あなたがメールを送信するとき、SMTPは送信先のメールサーバーにメールを届けます。たとえば、GmailのSMTPサーバーを使用して、Yahooメールの宛先にメールを送るといったケースです。 -
POP3の使用例
自宅のPCでメールをダウンロードして確認した後、そのメールがサーバーから削除されるため、スマートフォンでは同じメールを確認できなくなります。 -
IMAPの使用例
職場のPC、スマートフォン、タブレットなど複数のデバイスで同じメールボックスを共有し、どのデバイスからでも送受信したメールを一貫して確認できます。
利用するメールサービスや用途に応じて、これらのプロトコルを適切に選択することが重要です。
ネットワークの安全なプロトコル
データの安全性を確保するためには、暗号化や認証を行うプロトコルが重要です。ここでは、Web通信で広く使われるSSL/TLSを解説します。
1. SSL/TLSによる暗号化通信
仕組み
SSL(Secure Sockets Layer)およびTLS(Transport Layer Security)は、インターネット上で安全な通信を実現するためのプロトコルです。TLSはSSLの改良版で、現在ではTLSが主に使用されています。
-
SSL/TLSハンドシェイク
- 目的: サーバーとクライアント間で安全に通信を行うための暗号化鍵を共有します。
-
手順:
- クライアント(Webブラウザなど)がサーバーに接続を要求。
- サーバーが証明書(SSL/TLS証明書)をクライアントに送信。
- クライアントが証明書を検証(例:認証局に署名された証明書かどうか)。
- 暗号化鍵を交換し、安全な通信経路を確立。
-
HTTPS通信
- HTTP通信の暗号化: HTTP(Hypertext Transfer Protocol)をSSL/TLSで暗号化したプロトコルがHTTPS(Hypertext Transfer Protocol Secure)です。
-
役割:
- データが第三者に盗聴されることを防ぐ(機密性)。
- データが改ざんされていないことを保証する(完全性)。
- 通信相手が本当に正しいサーバーであることを確認する(認証)。
例: 銀行のWebサイトやショッピングサイトでは、URLが「https://」で始まり、ブラウザのアドレスバーに鍵マークが表示されます。
キャプチャタスク
Wiresharkを使用してSSL/TLS通信の動作を観察してみましょう。
-
準備
- Wiresharkを起動し、通信しているネットワークインターフェースを選択。
- HTTPSを利用するWebサイトにアクセス(例:
https://www.google.com
)。
-
フィルタ設定
- フィルタに以下を入力して、HTTPS通信だけを絞り込み。
ssl or tls
- フィルタに以下を入力して、HTTPS通信だけを絞り込み。
-
キャプチャ内容の観察
-
SSL/TLSハンドシェイク:
- Client Hello: クライアントが暗号化方式やバージョンをサーバーに提案。
- Server Hello: サーバーが暗号化方式や証明書をクライアントに送信。
- 鍵交換: クライアントとサーバーが暗号化鍵を共有。
-
暗号化されたデータのパケット:
- ハンドシェイク後のデータ通信は暗号化されており、Wireshark上で内容を確認することはできません(安全な通信の証です)。
-
SSL/TLSハンドシェイク:
3. SSH (Secure Shell)
SSH(Secure Shell) は、ネットワーク上で安全なリモート接続を提供するプロトコルです。主にサーバーやネットワークデバイスのリモート管理に使用されます。初期のプロトコルであるTelnetでは通信内容が暗号化されないため、SSHはその安全な代替手段として広く普及しています。
SSHの特徴
-
暗号化
通信内容が暗号化されるため、第三者による盗聴や改ざんを防ぎます。 -
認証
SSHでは、ユーザー名とパスワードの他、公開鍵暗号方式を利用した認証が可能です。これにより、高いセキュリティを実現します。 -
セキュアなプロトコル
SSHは、安全なリモート操作だけでなく、ファイル転送(SCP、SFTP)やトンネリング(ポート転送)にも対応しています。
4. VPN (Virtual Private Network)
VPN(仮想プライベートネットワーク) は、安全でないインターネット上に暗号化された仮想ネットワークを構築し、安全な通信を可能にする技術です。
VPNの仕組み
-
暗号化トンネル
クライアントとVPNサーバー間で暗号化された「トンネル」を作成します。このトンネル内の通信は外部から保護され、盗聴や改ざんを防ぎます。 -
IPアドレスのマスキング
接続元のIPアドレスがVPNサーバーのIPアドレスに置き換えられるため、匿名性が向上します。 -
安全なデータ転送
公共Wi-Fiなど、信頼性の低いネットワーク上でも安全に通信できます。
小テスト
Q1: DNSについて
DNSが変換するのはどの組み合わせですか?
a) MACアドレス ↔ IPアドレス
b) IPアドレス ↔ ドメイン名
c) HTTPヘッダ ↔ リクエストボディ
d) UDP ↔ TCP
Q2: SMTPの主な用途はどれですか?
a) メールの送信
b) メールの受信
c) メールのサーバー管理
d) ファイル転送
Q3: SSL/TLS通信について
SSL/TLSによる通信が暗号化されるのはどの段階ですか?
a) OSIモデルのアプリケーション層
b) OSIモデルのトランスポート層
c) OSIモデルのネットワーク層
d) OSIモデルの物理層
Q4: SSHの特徴として正しくない**ものはどれですか?
a) 暗号化された通信を提供する
b) リモートサーバーへの安全な接続を実現
c) パスワードやデータが平文で送信される
d) Telnetの代替として利用される
解答
Q1: b) IPアドレス ↔ ドメイン名
DNSは、ドメイン名とIPアドレスを相互に変換します。
Q2: a) メールの送信
SMTPは、メールを送信するためのプロトコルです。
Q3: a) OSIモデルのトランスポート層
SSL/TLSはトランスポート層で動作し、データの暗号化と安全な通信を提供します。
Q4: c) パスワードやデータが平文で送信される
SSHではすべての通信が暗号化され、平文で送信されることはありません。
まとめ
以上、コアプロトコルと安全なプロトコルについて解説しました。
- DNSやHTTP: ネットワーク通信の基礎となるプロトコル。
- メールプロトコル: メール送信と受信に使われるSMTP、POP3、IMAP。
- SSL/TLSとSSH: 暗号化により安全な通信を実現するプロトコル。
- VPN: 安全な仮想ネットワークを構築。
様々なプロトコルを理解し、Wiresharkなどで実際の通信を観察することで、よりネットワークの仕組みをより深く学ぶことができます。
Discussion