アプリケーション層のプロトコル|メール・HTTP・DNS・SNMP・VoIPをまとめて理解しよう
はじめに
OSI基本参照モデルの上位層では、ユーザーが利用するアプリケーションに近い通信を扱います。
TCP/IPでは、
アプリケーション層
としてまとめて考えます。
代表的なものには、
メール
├─ SMTP
├─ POP3
└─ IMAP
Web
├─ HTTP
├─ HTTPS
├─ WebDAV
└─ WebSocket
ネットワーク設定・名前解決
├─ DHCP
└─ DNS
その他
├─ SOAP
└─ SNMP
インターネット電話
├─ VoIP
├─ SIP
└─ VoIPゲートウェイ
などがあります。
今回は、それぞれが何をする技術なのかを中心に整理していきます。
1. メールで使われるプロトコル
電子メールでは、
メールを送る処理
と、
メールを受け取る処理
で異なるプロトコルが利用されます。
代表的なのが、
SMTP
POP3
IMAP
です。
2. SMTP
**SMTP(Simple Mail Transfer Protocol)**は、
電子メールを送信・転送するためのプロトコル
です。
例えば、
送信者
↓
メールサーバー
↓
メールサーバー
↓
受信者
という通信の、
送信者
↓
メールサーバー
メールサーバー
↓
メールサーバー
などでSMTPが利用されます。
つまり、
SMTP = メールを送る
と覚えると分かりやすいです。
3. POP3
**POP3(Post Office Protocol Version 3)**は、
メールサーバーからメールを受信するためのプロトコル
です。
基本的にはメールを端末へダウンロードして利用する考え方です。
メールサーバー
↓
POP3
↓
PC
4. IMAP
**IMAP(Internet Message Access Protocol)**も、メールを利用するためのプロトコルです。
POP3との大きな違いは、
メールをサーバー上で管理しながら利用する
ことです。
メールサーバー
/ | \
PC スマホ タブレット
複数の端末から同じメールボックスを利用しやすいのが特徴です。
整理すると、
SMTP
→ 送信
POP3
→ 端末へ受信・ダウンロードして利用
IMAP
→ サーバー上のメールを管理しながら利用
となります。
5. HTTP
Webサイトを見るときに利用される代表的なプロトコルが、
HTTP(Hypertext Transfer Protocol)
です。
WebブラウザとWebサーバーの間で、
ブラウザ
↓ Request
Webサーバー
↓ Response
ブラウザ
というリクエストとレスポンスによる通信を行います。
HTTPでは、サーバーに対して何をしてほしいのかを、
HTTPメソッド
によって指定します。
6. GETメソッド
GETは、
指定したリソースを取得する
ためのHTTPメソッドです。
例えばWebページを取得する場合、
ブラウザ
「このページください」
↓
GET
↓
Webサーバー
というイメージです。
Webページやデータの取得などで利用されます。
7. POSTメソッド
POSTは、
サーバーへデータを送信して処理を依頼する
ために利用されるHTTPメソッドです。
例えば、
ログインフォーム
問い合わせフォーム
データ登録
などで利用されます。
GET
→ リソースを取得
POST
→ データを送って処理を依頼
と、まずは整理しておきましょう。
※POSTだから自動的に通信内容が暗号化されるわけではありません。暗号化にはHTTPSなどが必要です。
8. CONNECTメソッド
CONNECTは、
通信相手とのトンネルを確立するために利用されるHTTPメソッド
です。
特にHTTPプロキシを経由してHTTPS通信を行う場合などに利用されます。
イメージすると、
ブラウザ
↓
プロキシサーバー
↓
Webサーバー
「このサーバーまで
トンネルを作ってください」
という役割です。
GETやPOSTとは用途が大きく異なるので、
GET
→ 取得
POST
→ データを送って処理を依頼
CONNECT
→ トンネルを確立
と区別しましょう。
9. HTTPS
**HTTPS(HTTP Secure)**は、
HTTP通信をTLSによって保護する仕組み
です。
通常のHTTPでは、通信内容そのものをHTTPが暗号化するわけではありません。
HTTPSでは、
HTTP
↓
TLS
↓
TCP
という形で通信を保護します。
これによって、
- 通信内容の暗号化
- 通信相手の認証
- データ改ざんの検知
などを実現します。
10. WebDAV
**WebDAV(Web-based Distributed Authoring and Versioning)**は、
HTTPを拡張して、Webサーバー上のファイルなどを管理できるようにする仕組み
です。
通常のWebページ閲覧だけでなく、
ファイルの作成
ファイルの削除
ファイルの移動
ディレクトリ操作
などを行えるようにします。
イメージとしては、
Webサーバー上のファイルをネットワークストレージのように扱う
技術です。
11. WebSocket
通常のHTTPでは、
クライアント
↓ Request
サーバー
↓ Response
というやり取りが基本です。
一方、
WebSocket
では接続を維持して、
クライアントとサーバーが双方向にリアルタイム通信
できます。
クライアント
⇅
⇅
サーバー
そのため、
チャット
リアルタイム通知
オンラインゲーム
などに適しています。
HTTP
→ リクエストとレスポンスが基本
WebSocket
→ 接続を維持して双方向通信
と整理できます。
12. DHCP
ネットワークへ接続するためには、
IPアドレス
サブネットマスク
デフォルトゲートウェイ
DNSサーバー
などの設定が必要です。
これらのネットワーク設定を自動的に配布するために利用されるのが、
DHCP(Dynamic Host Configuration Protocol)
です。
例えばPCをWi-Fiへ接続すると、
PC
↓
DHCPサーバー
↓
IPアドレスなどを取得
という処理が行われます。
毎回手動でIPアドレスを設定しなくてもネットワークを利用できるのは、DHCPのおかげです。
13. DNS
私たちはWebサイトへアクセスするとき、
example.com
のような名前を利用します。
しかしIP通信ではIPアドレスが必要です。
そこで利用されるのが、
DNS(Domain Name System)
です。
DNSは、
ドメイン名とIPアドレスなどの情報を対応付ける仕組み
です。
www.example.com
↓
DNS
↓
192.0.2.10
このような処理を名前解決と呼びます。
14. DNSの階層構造
DNSは、世界中の名前情報を1台のサーバーだけで管理しているわけではありません。
階層的な構造になっています。
ルートDNS
↓
.com DNS
↓
example.com DNS
それぞれが担当する範囲の情報を管理することで、巨大なDNSの仕組みを実現しています。
15. コンテンツサーバーとキャッシュサーバー
DNSサーバーには、役割の違いがあります。
コンテンツサーバー
権威DNSサーバーとも呼ばれ、
自分が管理するドメインについて正式なDNS情報を持つサーバー
です。
例えば、
example.com
を管理する権威DNSサーバーは、example.comに関する正式な情報を持っています。
キャッシュサーバー
利用者の代わりに名前解決を行い、その結果を一定時間保存するDNSサーバー
です。
PC
↓
キャッシュDNSサーバー
↓
必要に応じて他のDNSサーバーへ問い合わせ
一度取得した情報をキャッシュしておけば、同じ問い合わせに素早く回答できます。
16. 再帰的な問い合わせ
利用者のPCがキャッシュDNSサーバーへ、
最終的な答えまで調べて返してください
と依頼するような問い合わせを、
再帰的問い合わせ
といいます。
PC
↓
キャッシュDNSサーバー
「www.example.comの
IPアドレスを調べてください」
キャッシュDNSサーバーは必要に応じて、
ルートDNS
↓
TLDのDNS
↓
権威DNS
などへ問い合わせて答えを探します。
クライアント側から見ると、
DNSサーバーに問い合わせれば最終的な答えが返ってくる
という仕組みです。
17. DNSレコード
DNSには、
DNSレコード(リソースレコード)
としてさまざまな情報が登録されています。
代表的なものを見てみましょう。
| レコード | 主な役割 |
|---|---|
| A | ホスト名 → IPv4アドレス |
| AAAA | ホスト名 → IPv6アドレス |
| CNAME | 別名を設定 |
| MX | メールサーバーを指定 |
| NS | DNSサーバーを指定 |
| PTR | IPアドレスから名前を調べる逆引き |
例えば、
Aレコード
www.example.com
↓
192.0.2.10
という形です。
ここは試験でもよく問われるので、役割を整理しておきましょう。
18. DNSラウンドロビン
1つのドメイン名に対して複数のIPアドレスを登録する方法があります。
例えば、
www.example.com
↓ DNS
192.0.2.10
192.0.2.20
192.0.2.30
という状態です。
DNSから返すIPアドレスの順番などを変えることで、アクセスを複数のサーバーへ分散させる方法を、
DNSラウンドロビン
と呼びます。
利用者A → Server-A
利用者B → Server-B
利用者C → Server-C
のように負荷を分散できます。
ただし、専用ロードバランサのように通信単位で高度な負荷分散を行う仕組みとは異なります。
19. SOAP
**SOAP(Simple Object Access Protocol)**は、
システム間で構造化されたメッセージを交換するためのプロトコル
です。
SOAPでは一般的にXML形式のメッセージを利用します。
システムA
↓
XML形式のSOAPメッセージ
↓
システムB
Webサービスやシステム間連携などで利用されてきました。
まずは、
SOAP
→ XMLを利用したシステム間のメッセージ交換
と覚えておけば大丈夫です。
20. SNMP
**SNMP(Simple Network Management Protocol)**は、
ネットワーク機器を監視・管理するためのプロトコル
です。
例えば、
ルーター
スイッチ
サーバー
などの状態を監視できます。
管理サーバー
↓↑
SNMP
↙ ↘
ルーター スイッチ
SNMPで管理する側をマネージャ、管理される機器側で情報を提供する仕組みをエージェントと呼びます。
21. MIB
SNMPでは、機器の管理情報を、
MIB(Management Information Base)
という形で扱います。
例えば、
インターフェースの状態
通信量
機器の稼働状態
などの管理情報があります。
イメージとしては、
SNMP
→ 情報をやり取りする仕組み
MIB
→ 管理する情報
です。
22. SNMP Trap
通常の監視では、
マネージャ
↓
「状態を教えて」
エージェント
↓
「正常です」
のように問い合わせます。
一方、機器側から異常などを自発的に通知する仕組みが、
SNMP Trap
です。
ネットワーク機器
「障害が発生しました!」
↓ Trap
管理サーバー
障害監視では重要な仕組みです。
23. VoIP
**VoIP(Voice over IP)**は、
音声をIPネットワーク上で送受信する技術
です。
従来の電話網ではなく、
音声
↓
デジタルデータ
↓
IPネットワーク
↓
相手
という形で音声通信を行います。
IP電話などで利用されています。
24. SIP
VoIPで重要なプロトコルの一つが、
SIP(Session Initiation Protocol)
です。
SIPは、
音声通話などのセッションを開始・変更・終了するためのプロトコル
です。
電話で考えると、
電話をかける
↓
相手を呼び出す
↓
通話を開始
↓
通話を終了
といった通話の制御を担当します。
重要なのは、
SIPそのものが音声データを運んでいるわけではない
という点です。
SIPは主に通話を成立させるための制御を担当します。
25. VoIPゲートウェイ
VoIPゲートウェイは、
IPネットワークと従来の電話網などを接続するための装置
です。
例えば、
IP電話
↓
IPネットワーク
↓
VoIPゲートウェイ
↓
電話網
↓
固定電話
という通信を可能にします。
異なる電話ネットワークの橋渡し役と考えると分かりやすいです。
26. アプリケーション層を全体で整理する
今回登場した技術を役割ごとに整理しましょう。
メール
├─ SMTP → 送信・転送
├─ POP3 → メールを受信
└─ IMAP → サーバー上でメールを管理
Web
├─ HTTP → Web通信
│ ├─ GET → 取得
│ ├─ POST → データ送信・処理依頼
│ └─ CONNECT → トンネル確立
├─ HTTPS → HTTPをTLSで保護
├─ WebDAV → Web上のファイル管理
└─ WebSocket → 双方向リアルタイム通信
ネットワーク設定・名前解決
├─ DHCP → IPアドレスなどを自動設定
└─ DNS → 名前解決
├─ 権威DNS(コンテンツサーバー)
├─ キャッシュDNS
├─ DNSレコード
└─ DNSラウンドロビン
管理・システム連携
├─ SOAP → XMLによるメッセージ交換
└─ SNMP → ネットワーク監視・管理
IP電話
├─ VoIP → IPネットワーク上で音声通信
├─ SIP → 通話セッションを制御
└─ VoIPゲートウェイ → IP網と電話網を接続
27. まとめ
この記事で覚えること
- SMTPはメールの送信・転送に利用する
- POP3とIMAPはメールの受信・利用に関係する
- HTTPはリクエストとレスポンスによって通信する
- GETはリソースを取得する
- POSTはデータを送信して処理を依頼する
- CONNECTはトンネルを確立する
- HTTPSはHTTPをTLSによって保護する
- WebDAVはHTTPを拡張してファイル管理などを可能にする
- WebSocketは双方向のリアルタイム通信に利用できる
- DHCPはIPアドレスなどのネットワーク設定を自動配布する
- DNSはドメイン名とIPアドレスなどを対応付ける
- 権威DNSサーバーは担当するドメインの正式な情報を持つ
- キャッシュDNSサーバーは名前解決を代行して結果を保存する
- AレコードはIPv4、AAAAレコードはIPv6に対応する
- MXレコードはメールサーバーを指定する
- DNSラウンドロビンは複数のIPアドレスを利用してアクセスを分散する
- SOAPはXMLを利用したシステム間のメッセージ交換に使われる
- SNMPはネットワーク機器の監視・管理に利用する
- MIBはSNMPで扱う管理情報
- SNMP Trapでは機器側から通知できる
- VoIPはIPネットワーク上で音声通信を行う技術
- SIPは通話などのセッションを制御する
- VoIPゲートウェイはIPネットワークと電話網などを接続する
🍯 はちみつメモ
アプリケーション層は「何のための通信?」で整理すると覚えやすい。メールならSMTP・POP3・IMAP、WebならHTTP・HTTPS、名前解決ならDNS、自動設定ならDHCP、監視ならSNMP、IP電話ならVoIP・SIP。まず役割を結び付けてから細かい仕組みを覚えよう。