このページでは、DHCPでIPアドレスが配られる手順、DNSのレコードとキャッシュサーバ、SNMP・FTP・SSH・NTPなどのプロトコル、VoIPによるIP電話がわかります。
- 一言で言うと:
- メール、Web、住所の自動配布や名前の変換、機器の監視、ファイル転送、インターネット電話など、私たちが実際に使うサービスごとの約束ごと(プロトコル)の話
- 試験では、プロトコル名と役割、ポート番号の組合せがよく問われる
メール(SMTP・POP3・IMAP4・S/MIME)→ Web(HTTP・HTTPS・WebSocket・Cookie)→ 住所と名前(DHCP・DNS)→ その他(SOAP・SNMP・FTP・SSH・NTP・LDAP)→ 電話(VoIP・SIP・RTP・RSVP)
覚え方の軸
- 「住所を配る」のがDHCP、「名前を住所に変える」のがDNS
- DHCPは、DISCOVER → OFFER → REQUEST → ACK(「ディ・オ・リ・ア」)。DISCOVERとREQUESTはブロードキャスト
- DNSは、分散データベース。キャッシュサーバが、ルートから順にたずねて答えを持ってくる(再帰的な問合せ)
- DNSレコードは「何を指すか」で覚える
- A(IPv4)、AAAA(IPv6)、NS(DNSサーバ)、CNAME(別名)、MX(メールサーバ。値が小さいほど優先)、PTR(逆引き)
- インターネット電話は「つなぐ係・声を運ぶ係・道を確保する係」
- SIPがセッションの開始と終了、RTPが音声の伝送(UDP)、RSVPが帯域の予約(QoS)
このテーマに出てくるポート番号(★)
| プロトコル | ポート番号 |
|---|---|
| FTP | TCP 20(データ)、TCP 21(制御) |
| SMTP | TCP 25 |
| DNS | UDP 53(大きい応答はTCP 53) |
| DHCP | UDP 67(サーバ)、UDP 68(クライアント) |
| HTTP | TCP 80 |
| POP3 | TCP 110 |
| NTP | UDP 123 |
| SNMP | UDP 161(TRAPは UDP 162) |
| HTTPS | TCP 443 |
| サブミッションポート(SMTP-AUTH) | TCP 587 |
アドレス管理及び名前解決技術:住所を配る、名前を住所に変える(★)
① DHCP
- DHCP(Dynamic Host Configuration Protocol):
- TCP/IPでは、それぞれのノードがIPアドレスを持つことが、通信の絶対条件
- でも、ノードが増えると、これを適切に設定するのは難しい
- そこで、ノードへのIPアドレスの割当てを自動的に行うプロトコル
- DHCPの仕組み:
- DHCPサーバに、使えるIPアドレスを登録しておく
- DHCPクライアントは、起動時にDHCPサーバに、ブロードキャストを使ったDHCPディスカバパケットを送って、アドレスの取得を要求する
- DHCPサーバは、プールしているアドレスから、空いているものを自動的に割り当てる
- 終了時には、IPアドレスの回収もできるので、IPアドレス資源の有効活用にもつながる
- これで、ネットワークの管理負担がかなり減った
- DHCPの弱点:
- DHCPクライアントは、IPアドレスがない状態で起動するので、ブロードキャストが届く範囲にDHCPサーバがいないと、IPアドレスを取得できない
- リレーエージェント:
- ルータを使ったネットワークで、DHCPサーバとクライアントが同じLANにない(ブロードキャストが届かない)場合に必要
- ディスカバパケットを、DHCPサーバまで中継する機能
- DHCPの例え:
- ホテルのフロント。チェックイン(起動)すると空いている部屋番号(IPアドレス)を渡し、チェックアウト(終了)したら回収して、次の客に使う
DHCPでやりとりされるメッセージの順序(★試験で問われる)
- DHCPディスカバ(DHCPDISCOVER):
- クライアントが、ネットワーク上のDHCPサーバを探すために送る(ブロードキャスト)
- DHCPオファー(DHCPOFFER):
- サーバが、提供できるIPアドレスなどのネットワーク設定情報を、クライアントに知らせる
- DHCPリクエスト(DHCPREQUEST):
- クライアントが、ネットワーク設定情報の使用要求を、ネットワーク上のDHCPサーバに伝える(ブロードキャスト)
- DHCPアック(DHCPACK):
- サーバが、使用要求が認められたことを、クライアントに知らせる
- 試験での出方(試験):
- ①DHCPディスカバと③DHCPリクエストの送信方法が問われる。答えは「ブロードキャスト」
- DHCPリクエストをブロードキャストする理由:
- 複数のDHCPサーバから提案(オファー)を受けたとき、どのDHCPサーバの提案を受け入れたかを、他のDHCPサーバにも知らせるため
- 例えば、何社かから見積りをもらったとき、「A社にお願いします」と全社に聞こえるように言えば、B社やC社は確保していた部屋を放せる
- 順番の覚え方:
- 「ディ・オ・リ・ア」(Discover → Offer → Request → Ack)
- 注意(ポート番号の向き):
- クライアントとサーバのポート番号を逆に覚えやすいので注意
- 正しくは、DHCPサーバがUDP 67番、DHCPクライアントがUDP 68番(RFC 2131)
② DNS
- ドメイン名:
- IPアドレスは覚えにくいので、IPアドレスに対応する別名として付けられたもの
- ドメイン名の読み方:
- 階層で表し、「www.example.co.jp」のように書く
- 右側から、jp(日本の)→ co(営利組織の)→ example(という会社にある)→ www(というホスト)と読む
- FQDN(完全修飾ドメイン名):
- 「www.example.co.jp」のように、特定のホストまで指定したドメイン名
- DNS(Domain Name System)サーバ:
- ドメイン名とIPアドレスの対応を管理しているサーバ
- 分散データベース:
- DNSサーバは、原理的には、世界中のすべてのノードのドメイン名とIPアドレスの対応を知っている必要がある
- でも、それは事実上不可能
- そこで、DNSの規約では、対応表を作る負担を細分化し、DNSを分散データベースにしている
- DNSサーバの構成:
- ルートサーバは、直下のjpやukといった国別ドメインを管理するサーバのIPアドレスを記録している
- jpサーバは、日本国内のco、acといった範囲を管理するサーバのIPアドレスを記録している
- こうして、上から下へ、担当を分けて管理する
- DNSの例え:
- 電話帳を1冊にまとめるのは無理なので、「国 → 都道府県 → 市 → 町」と、担当ごとの電話帳に分けている
- DNSのプロトコルとポート:
- 基本的にUDPを使う
- ただし、DNSのレコード長がUDPの512バイト制限を超える場合は、TCPを使う
- ポート番号は53番
- プライマリサーバとセカンダリサーバ:
- 1つのドメインを管理するDNSサーバは、ふつう、可用性を考えて、プライマリサーバとセカンダリサーバの2台で作る
主なDNSレコード(★)
- DNSレコード(リソースレコード):
- DNSサーバに保存されている名前解決情報
| レコード | 中身 | 例 |
|---|---|---|
| Aレコード | IPv4ホストのIPアドレス情報 | dns.example.com. IN A 192.0.2.1 |
| AAAAレコード | IPv6ホストのIPアドレス情報 | dns.example.com. IN AAAA 2001:db8::1 |
| NSレコード | DNSサーバを指定 | example.com. IN NS dns.example.com. |
| CNAMEレコード | ホストの別名を指定 | info.example.com. IN CNAME www.example.com.(info.example.comが別名) |
| MXレコード | メールサーバを指定。プリファレンス値(優先度)は小さいほうを優先 | example.com. IN MX 10 mail1.example.com.、example.com. IN MX 20 mail2.example.com. |
| PTRレコード | IPアドレスに対応するホスト名を調べる逆引きに使う | − |
- MXレコードの例の読み方:
- mail1(10)とmail2(20)では、値の小さいmail1が優先。mail1が使えないときにmail2に届く
- AAAAの覚え方:
- IPv6はIPv4の4倍の長さ(128ビット)なので、Aを4つ並べる
- 正引きと逆引き:
- 正引きは、ドメイン名からIPアドレスを調べる(Aレコード、AAAAレコード)
- 逆引きは、IPアドレスからドメイン名を調べる(PTRレコード)
DNSラウンドロビン
- DNSラウンドロビン:
- 負荷が集中するWebサーバやAPサーバなどを、複数のサーバで負荷分散するときに使う機能の1つ
- 1つのドメイン名に、複数のIPアドレスを登録する
- 名前解決のたびに、応答するIPアドレスを順番に変えることで、負荷を分散する
- 例:
- www.example.comに、192.0.2.1(Webサーバ1)と192.0.2.2(Webサーバ2)の2つのAレコードを登録する
- 1回目の問合せには192.0.2.1、2回目の問合せには192.0.2.2を答える
- DNSラウンドロビンの例え:
- 人気ラーメン店の案内係が、来た客を「1号店へ」「2号店へ」と交互に案内する
- チーミング:
- サーバの負荷分散技術の1つ
- 1台のサーバに積んだ複数のネットワークインタフェースカード(NIC)に、同じIPアドレスを割り当て、1つの仮想NICとして束ねる技術
- 負荷分散のほか、帯域の有効活用や耐障害性の向上ができる
コンテンツサーバとキャッシュサーバ
- ゾーン:
- DNSサーバがドメインを管理する範囲
- コンテンツサーバ(権威サーバ):
- 自分のゾーンのDNSレコードを持っているDNSサーバ
- リゾルバ:
- DNSクライアントのこと
- キャッシュサーバ:
- リゾルバが名前解決を求めるたびに、コンテンツサーバへの問合せを繰り返すのは非効率
- だから、ふつうは自組織の中にキャッシュサーバを置く
- この場合、リゾルバはキャッシュサーバに問い合わせる
- コンテンツサーバとキャッシュサーバの例え:
- コンテンツサーバは、各店が持っている「自分の店の正式な住所録」
- キャッシュサーバは、社内の物知りの総務係。知らなければ調べてきてくれて、一度調べたことはしばらく覚えている
再帰的な問合せ
- キャッシュサーバの動き:
- リゾルバからの問合せに、自分が持っている情報なら直接答える
- 持っていなければ、ルートDNSサーバから順に問い合わせ、最終的に目的のドメイン名の情報を持つコンテンツサーバから結果を得る
- この結果をリゾルバに答えるとともに、一定期間キャッシュとして持っておく
- 同じ問合せを受けたときに、他のDNSサーバに問い合わせずにすばやく答えるため
- 再帰的な問合せ:
- リゾルバからキャッシュサーバに送られる問合せ
- 「再帰的」は「再び帰ってくる」という意味で、再帰的な問合せには、最終的な結果を答える必要がある
- DNSキャッシュポイズニング:
- 問合せの回答を、本物のコンテンツサーバより先に送り込み、キャッシュサーバに偽の情報を覚え込ませる攻撃(セキュリティ分野で扱う)
- 注意(新しい情報):
- 「UDPは512バイトまで」という制限は、今はEDNS0という拡張で、もっと大きな応答もUDPで送れるようになっている
- 試験では「基本はUDP、大きいときはTCP、ポートは53番」で覚えておけばよい
その他のアプリケーション層プロトコル
① SOAP
- SOAP:
- ソフトウェアどうしがメッセージを交換するためのプロトコル
- データ構造の記述にXMLを使う
- 伝送にはHTTPなど既存のプロトコルを使うので、汎用性が高い
- SOAPの名前:
- 最初は「Simple Object Access Protocol」の略とされていたが、今は「SOAP」自体が正式名称
② SNMP
- SNMP(Simple Network Management Protocol):
- ネットワーク上の機器を監視し管理するためのプロトコル
- SNMPに準拠すれば、マルチベンダ環境(いろいろなメーカーの機器が混ざった環境)で、ネットワークの障害情報などを一元管理できる
- SNMPの登場人物:
- SNMPマネージャは、監視する側
- SNMPエージェントは、監視される側
- この2つの間で、PDU(Protocol Data Unit)という管理情報をやりとりする
- MIB(Management Information Base):
- エージェントにあるデータベース
- 故障情報やトラフィックの情報などがたまる
- SNMPのポート:
- ふつうはUDPを使う
- SNMPはUDP 161番、SNMP TRAPはUDP 162番
PDUの種類(★)
| PDU | 意味 |
|---|---|
| Get-Request、Get-Next-Request | マネージャが、エージェントから情報を引き出す |
| Set-Request | 管理オブジェクトの設定値を変更する |
| Get-Response | マネージャからの要求に返答する |
| Trap | エージェントから情報をマネージャに通知する |
- TrapとGetの違い:
- Get(Get-Request)は、マネージャから「調子はどう?」と聞きに行く(ポーリング)
- Trapは、エージェントから「故障しました!」と自分から知らせる
- SNMPの例え:
- マネージャは病院のナースステーション、エージェントは各病室のモニター。看護師が見回る(Get)こともあれば、モニターがナースコール(Trap)を鳴らすこともある
③ その他のアプリケーション層プロトコル(★)
| プロトコル | 中身 |
|---|---|
| FTP | File Transfer Protocol。ファイルの送受信に使うファイル転送プロトコル。ファイルをダウンロードする機能(データコネクション)と、コマンドを送受信する機能(制御コネクション)で、違うポート(TCP 20番、TCP 21番)を使う |
| Telnet | 遠隔地からログインして、マシンを操作するためのプロトコル |
| SSH | Secure SHell。テキストベースの通信であるTelnetに対して、暗号化や認証技術を使って、安全に遠隔操作するためのプロトコル |
| NTP | Network Time Protocol。ネットワーク上の各ノードの時刻を同期するためのプロトコル。ポートはUDP 123番。今はNTP3とNTP4が使われている。NTP4では、初めて公開鍵暗号を使った認証機能が入り、時刻改ざんなどのリスクに対応できるようになった |
| SNTP | Simple NTP。NTPの簡易版(時刻同期だけに特化したもの) |
| LDAP | Lightweight Directory Access Protocol。ディレクトリサービスにアクセスするためのプロトコル |
- FTPのポートの覚え方:
- 20番がデータ、21番が制御(コマンド)
- TelnetとSSHの例え:
- Telnetは、はがきで遠くのPCに指示を出す(パスワードも丸見え)
- SSHは、鍵付きの封筒で指示を出す
- ディレクトリサービス:
- いろいろな情報資源(PCやユーザなど)を、すばやく見つけて使うための仕組み
- 例えば、会社の「社員名簿兼備品台帳」。誰がどこの部署で、どのPCを使えるかを調べられる
- 注意(新しい情報):
- NTP4の公開鍵による認証(Autokey)には弱点が見つかり、今はNTS(Network Time Security、2020年に標準化)という、TLSを使った新しい安全の仕組みが推奨されている
- 試験では「NTP4で公開鍵暗号を使った認証機能が入った」と覚えておけばよい
インターネット上の電話サービス:声を運ぶ(★)
- インターネット上で電話サービスをするのに必要なもの:
- 音声を伝送するための技術
- 呼制御(通信路を確保したり、転送、切断したりすること)
① VoIP
- VoIP(Voice over Internet Protocol):
- IPネットワークで音声をやりとりするための技術
- データの伝送には、リアルタイム性に優れたUDPをベースにしたプロトコルRTP(Real-time Transport Protocol)を使う
- IP電話アダプタ:
- ふつうの電話機に付けると、VoIP対応機器にできる
- VoIPゲートウェイ:
- 作ったIP電話網を、従来の音声回線網とつなぐときに使う
- アナログの音声信号をデジタル信号に符号化したり、復号したりする装置
- 音声データとIPパケットの相互変換に使う
② SIP
- SIPサーバ:
- インターネット上で電話サービスをするには、電話回線網と同じサービスを提供できなければならない
- このうち、電話番号とIPアドレスの対応管理、帯域管理、セッションの開始と終了を担当するサーバ
- SIP(Session Initiation Protocol):
- SIPサーバが、セッションの開始と終了を制御するために使うプロトコル
- RSVP(Resource reSerVation Protocol):
- SIPサーバが、帯域管理のために使うプロトコル
- 通信をやりとりするノード間で、帯域を予約する
- ベストエフォート(できるだけ頑張るが保証はしない)な環境であるIPネットワークで、QoSを確保するために使う
- 主な用途は、リアルタイム性が求められる動画配信、音楽配信など
- QoS(Quality of Service):
- サービス品質
- RSVPとRTP:
- UDP上で動くプロトコル
VoIPで電話がつながる流れ
- 発呼をリクエスト:
- VoIP端末は、SIPで、VoIPゲートウェイに発呼(電話をかけること)をリクエストする
- 準備:
- VoIPゲートウェイは、アドレス解決、RSVPによる帯域確保などを行い、VoIP端末どうしにセッションを確立させる
- 通話:
- セッション確立後は、RTPを使った通話(音声パケットの伝送)が行われる
- SIP・RSVP・RTPの例え:
- SIPは、電話の「呼び出し音を鳴らして、つなぐ、切る」係
- RSVPは、通話中に道が混まないよう「専用レーンを予約する」係
- RTPは、実際に「声を運ぶ」係
- 注意(補足):
- RTPはUDP上で動くが、RSVPは、ふつうはUDPを使わずIPの上で直接動く(IPのプロトコル番号46)
- 試験では「RTPはUDPベース」を確実に押さえておけばよい
VoIPゲートウェイの設置位置(★試験で問われる)
- 並び:
- 電話機(企業内の内線網)→ PBX → VoIPゲートウェイ → ルータ → IPネットワーク
- PBXの役割:
- 内線電話機どうしの接続
- 内線電話と公衆電話網との接続
- VoIPゲートウェイの役割:
- 音声信号の符号化/復号
- 覚え方:
- 電話機側から「PBX(内線の交換)→ VoIPゲートウェイ(声をパケットに変換)→ ルータ(IPネットワークへ)」
- 例えば、社内の電話交換手(PBX)の後ろに、声を手紙(パケット)に書き直す係(VoIPゲートウェイ)がいて、郵便局(ルータ)に出す
混同しやすいペア
- DHCPディスカバ / DHCPオファー
- DHCPディスカバは、クライアントがサーバを探す(ブロードキャスト)
- DHCPオファーは、サーバが提供できる設定情報を知らせる
- DHCPリクエスト / DHCPアック
- DHCPリクエストは、クライアントが使用要求を伝える(ブロードキャスト)
- DHCPアックは、サーバが使用を認めたと知らせる
- DHCP / リレーエージェント
- DHCPは、IPアドレスを自動で割り当てる
- リレーエージェントは、ブロードキャストが届かないDHCPサーバまで、ディスカバを中継する
- DHCP / DNS
- DHCPは、IPアドレスを配る
- DNSは、ドメイン名とIPアドレスを対応させる
- ドメイン名 / FQDN
- ドメイン名は、IPアドレスの別名(example.co.jpなど)
- FQDNは、特定のホストまで指定したドメイン名(www.example.co.jp)
- Aレコード / AAAAレコード
- Aレコードは、IPv4のIPアドレス
- AAAAレコードは、IPv6のIPアドレス
- NSレコード / MXレコード
- NSレコードは、DNSサーバを指定する
- MXレコードは、メールサーバを指定する(プリファレンス値が小さいほど優先)
- CNAMEレコード / PTRレコード
- CNAMEレコードは、ホストの別名を指定する
- PTRレコードは、IPアドレスからホスト名を調べる(逆引き)
- 正引き / 逆引き
- 正引きは、ドメイン名からIPアドレスを調べる
- 逆引きは、IPアドレスからドメイン名を調べる(PTR)
- プライマリサーバ / セカンダリサーバ
- プライマリサーバは、主に使うDNSサーバ
- セカンダリサーバは、可用性のために置く2台目のDNSサーバ
- DNSラウンドロビン / チーミング
- DNSラウンドロビンは、1つのドメイン名に複数のIPアドレスを登録し、順番に答えて複数のサーバに負荷を分散する
- チーミングは、1台のサーバの複数のNICに同じIPアドレスを割り当て、1つに束ねる
- コンテンツサーバ(権威サーバ) / キャッシュサーバ
- コンテンツサーバは、自分のゾーンのDNSレコードを持つ
- キャッシュサーバは、リゾルバの代わりに問い合わせ、結果を一定期間覚えておく
- リゾルバ / キャッシュサーバ
- リゾルバは、DNSクライアント(問い合わせる側)
- キャッシュサーバは、リゾルバからの再帰的な問合せに答える
- 再帰的な問合せ / キャッシュサーバからの問合せ
- 再帰的な問合せは、リゾルバからキャッシュサーバへの問合せ。最終的な結果を答える必要がある
- キャッシュサーバは、ルートDNSサーバから順に、コンテンツサーバまでたどって問い合わせる
- SOAP / HTTP
- SOAPは、ソフトウェアどうしがXMLでメッセージを交換するプロトコル
- HTTPは、SOAPのメッセージを運ぶのにも使われる
- SNMPマネージャ / SNMPエージェント
- SNMPマネージャは、監視する側
- SNMPエージェントは、監視される側(MIBを持つ)
- Get-Request / Trap
- Get-Requestは、マネージャがエージェントから情報を引き出す
- Trapは、エージェントからマネージャに自分から知らせる(UDP 162)
- Set-Request / Get-Response
- Set-Requestは、管理オブジェクトの設定値を変える
- Get-Responseは、マネージャからの要求に答える
- FTPの20番 / 21番
- 20番は、データコネクション(ファイルの転送)
- 21番は、制御コネクション(コマンドの送受信)
- Telnet / SSH
- Telnetは、遠隔操作のプロトコル。暗号化しない(TCP 23)
- SSHは、暗号化と認証で安全に遠隔操作する(TCP 22)
- NTP / SNTP
- NTPは、時刻を同期するプロトコル(UDP 123)。NTP4で公開鍵による認証が入った
- SNTPは、時刻同期だけに特化した簡易版
- LDAP / DNS
- LDAPは、ディレクトリサービス(ユーザやPCなどの情報資源)にアクセスする
- DNSは、ドメイン名とIPアドレスを対応させる
- VoIP / RTP
- VoIPは、IPネットワークで音声をやりとりする技術の総称
- RTPは、その音声データを運ぶ、UDPベースのプロトコル
- SIP / RSVP
- SIPは、セッションの開始と終了を制御する
- RSVPは、帯域を予約してQoSを確保する
- PBX / VoIPゲートウェイ
- PBXは、内線電話機どうし、内線と公衆電話網をつなぐ
- VoIPゲートウェイは、音声信号を符号化・復号し、IPパケットと変換する(PBXとルータの間に置く)
- ベストエフォート / QoS
- ベストエフォートは、できるだけ頑張るが品質は保証しない
- QoSは、サービス品質を確保すること(RSVPで帯域を予約する)