アプリケーション層のプロトコル
トランスポート層のプロトコルまでの機能で、アプリケーション間でデータを送受信できるようになります。TCP/IPの最上位の階層のプロトコルは、それぞれのアプリケーションの動作の決まりごとです。しかし、前回も触れたようにアプリケーション層のプロトコルだからといって、普段、私たちが利用しているアプリケーションそのもので利用しているわけではありません。そのようなプロトコルの代表例が「DNS」と「DHCP」です。逆に、私たちが普段利用するアプリケーションそのもので利用するプロトコルもあります。その代表例が「HTTP」です。
DNS
TCP/IPの通信では必ずIPアドレスを指定しなければいけません。しかし、IPアドレスは数字の羅列ですから、アプリケーションを利用するユーザにはあまりにも不便です。そこで、クライアントPCなどのホストに、ユーザにも分かりやすい「ホスト名」を付けておくというアイデアが生まれました。
ただし、実際に通信するときには、ホスト名をIPアドレスに変換する必要があります。TCP/IPでは、必ずIPアドレスを指定しなければいけないからです。DNS(Domain Name System)はそのためのプロトコルで、ホスト名からIPアドレスを求めます。ホスト名からIPアドレスを求めることを名前解決と呼びます。DNSは最もよく利用されている名前解決の方法です[7]。
DNSを利用するにはDNSサーバが必要です。DNSサーバには、あらかじめホスト名とIPアドレスの対応を登録しておきます。アプリケーションが動作するホストには、DNSサーバのIPアドレスを登録しておきます。アプリケーションを利用するユーザがホスト名を指定すると、アプリケーションが動作するホストはDNSサーバに対し、対応するIPアドレスは何かと問い合わせます。問い合わせを受けたDNSサーバは、ホスト名を名前解決してIPアドレスを返します[8]。アプリケーションが動作するホストは、返ってきたIPアドレスを使って通信を行います。
CCENT/CCNA試験ではDNSの詳しい仕組みまでは必要ありません。しかし、DNSはネットワークの通信を支える非常に重要な仕組みです。本連載では詳しく触れませんが、ぜひ、詳しい仕組みを勉強してみてください。
注
[7]: 名前解決は、DNSを使用する以外に、ホスト名とIPアドレスの対応を登録した「hosts」という名前の特別なテキストファイルを、アプリケーションが動作するホストに置くことでも行うことができます。ただし、この方法は拡張性に問題があるので、一般的には名前解決の手段としてDNSが利用されています。
[8]: 分かりやすく図示するため、図6では、アプリケーションが動作するホストの近くのDNSサーバに、名前解決したいホスト名に対応するIPアドレスが登録されているようにしていますが、そのようなケースは稀です。ホスト名とIPアドレスの管理はドメインという単位でさまざまな組織が分散して行っています。
DHCP
DHCP(Dynamic Host Configuration Protocol)は、IPアドレスといったTCP/IPの通信に必要な設定を自動的に行うためのプロトコルです。
TCP/IPで通信を行うためには、TCP/IPの設定が正しく行われていることが大前提です。具体的な設定内容としては、以下が挙げられます[9]。
- IPアドレスとサブネットマスク
- デフォルトゲートウェイのIPアドレス
- DNSサーバのIPアドレス
注
[9]: これらの設定については、本連載の後の回で詳しく取り上げます。
IT技術に慣れているユーザであれば、こうした設定を難なく行えるでしょう。しかし、不慣れなユーザにとっては敷居の高い作業です。また、慣れているユーザであっても、設定ミスをしてしまうことはよくあります。DHCPによってホストをネットワークに接続すれば、TCP/IPの設定を自動的に行うことができますから、IT技術に不慣れなユーザでも正しく設定できますし、単純な設定ミスも防げます。
DHCPを利用するには、あらかじめDHCPサーバを用意し、配布するIPアドレスなどのTCP/IPの設定を登録しておきます。ホストがネットワークに接続すると、DHCPサーバとの間で以下の4つのメッセージをやり取りして、自動的にDHCPクライアントのTCP/IPの設定を行います[10]。
- ① DHCP DISCOVER
- ② DHCP OFFER
- ③ DHCP REQUEST
- ④ DHCP ACK
注
[10]: DHCPで設定情報を取得すると、ホストのIPアドレスがコロコロと変わってしまう場合があります。IPアドレスが変わってしまうと、ホストを特定するのに手間がかかることになります。DHCPでIPアドレスを自動的に設定する際、決まったIPアドレスを配布することもできます。
HTTP
HTTPは、普段、私たちがWebブラウザでWebサイトにアクセスする際に利用するプロトコルです。HTTPによってWebサーバアプリケーションとWebブラウザの間で、ファイルを送受信します。
HTTPはHyper Text Transfer Protocolの略で、直訳すると「ハイパーテキストを転送するプロトコル」です。ハイパーテキストとはWebページを記述するHTMLファイルのことです。もともと、HTTPはHTMLファイルを転送することを目的としたプロトコルなのですが、HTMLファイル以外のWordやExcelなどの形式のファイルもHTTPで転送できます。現在では、汎用のファイル転送プロトコルとしても広く利用されています。
Webサイトにアクセスするときには、WebブラウザでURLを入力します。URLの例として、以下のものを考えましょう。
http://www.n-study.com/network/index.html
「www.n-study.com」という部分は、Webサーバのホスト名を表します。それ以降の「/network/index.html」は、Webサーバが公開しているファイルです。このURLは、Webサーバ「www.n-study.com」が公開している「/network」フォルダ内の「index.html」ファイルを「http」プロトコルで転送してください、という意味です。
WebブラウザでURLを入力すると、URLで示しているファイルをWebサーバに要求していることになります。Webサーバはその要求に応じて、指定されたファイルをWebブラウザに返信します。Webブラウザが返信されてきたファイルの内容を画面上に表示することで、ユーザはWebページを見ることができます。HTTPではWebブラウザからのリクエストのフォーマットや、その返事となるWebサーバアプリケーションからのレスポンスのフォーマットなどを定義しています。これにより、WebブラウザとWebサーバアプリケーション間のファイル転送ができるようにしています。
なお、前述のDNSの説明でも触れましたが、TCP/IPの通信ではIPアドレスが必要です。WebブラウザでURLを指定すると、DNSによって自動的にホスト名がIPアドレスへ名前解決されます。