1.TCP/IPとは…
インターネットで採用されているコンピュータネットワークを実現している通信プロトコル群のことです。現在全世界共通の通信プロトコルとして使用されています。通信プロトコルとはコンピュータどうしが円滑にデータのやり取りを行うためのルールのような物です。TCP/IPは特定の機器に依存しないことや、データの伝達速度、信頼性において大変優れた仕組みとなっています。インターネットサーバーを設置したり、ソフトウェア開発を行っていくうえで避けて通ることのできない項目のようです。
[expand title=”Trigger Text”]
2.5つの階層について…
TCP/IPは5つの階層で構成されています。送受信に関わる一連の作業をいくつかの階層に分けて行い、その各段階をレイヤーと言います。5つのレイヤーはそれぞれアプリケーション層、トランスポート層、ネットワーク層、データリンク層、物理層に階層化されています。
受信側と送信側の各層どうしが情報を交換するために、送信側の各層でヘッダ(データよりも前に付加した情報)やトレーラ(後ろに付加した情報)を付加しています。
3.アプリケーション層
アプリケーション層には、通信サービスにおけるサーバーとクライアントのやり取りを定めたプロトコル(アプリケーションプロトコル)があります。その一例であるwwwサービスを支えているプロトコルであるHTTPプロトコルについてみていきます。HTTPプロトコルは「要求」と「応答」という2種類のパケットを使って、1つの要求に対して1つの応答を返す非常にシンプルなプロトコルです。
パケットはヘッダとボディ(データ)に分かれています。要求パケットのヘッダ部分には要求の種類を示すメソッドと要求ヘッダと呼ばれるサーバーへ伝えるクライアント情報(対応しているファイルの種類や文字コード、言語など)が記述されています。項目名と情報はコロンで区切られています。ボディには要求時に必要なデータが入りますが、メソッドがGETの場合は空になります。以下要求パケットの例です。ヘッダとボディの間には空行が入ります。
GET/home/index.html HTTP/1.1 (メソッド:GETの他にPUTなどがある) ——————————————————————————————————————- Host:www.○○○.○○○.co.jp Accept:text/html, text/plain, text.sgml */*;u=0.01 Accept-encoding:gzip, compress Accept-Language:ja, en If-modified-Since:Wed, 31 Aug 2013 12:00:00 GMT User-Agent:Internet Exploer7.0 |
空行——————————————————————————————————————————— ●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●● |
サーバーがクライアントに送る応答パケットのヘッダは処理結果を示すステータス行とクライアントに渡すデータに関する情報を記述する応答ヘッダに分かれています。ボディにはクライアントに渡すデータが入っています。
HTTP/1.1 200 OK (ステータス行:正常に処理できた場合は200番台の数字が入る) ————————————————————————————————————— Date:Wed, 31 Aug 2013 23:59:59 GMT Server:NCSA/1.5.2 Last-modified:Wed, 31 Aug 2013 12:00:00 GMT content-Type:home/gif Content-length:334 |
空行—————————————————————————————————————- <html>●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●● |
HTTPプロトコルはもともと要求されたデータを返すことだけを目的に作られています。そのため一回の要求と応答で通信は完結し、過去に行った通信と関係づけられることはありません。このような一回完結のプロトコルをステートレスプロトコルと言います。
アプリケーションプロトコルにはほかにも電子メールの送信に関わるSMTPプロトコルと受信に関わるPOP3プロトコルなどがあります。
[/expand]