• 追加された行はこの色です。
  • 削除された行はこの色です。
  • プロトコル4階層 へ行く。

*目次 [#ze32f2e1]

#contents


*プロトコル4階層 [#cf2af9fe]

 TCP/IPプロトコルアーキテクチャはケーキのスポンジの層(レイヤー)のように、4つの基本層に分かれている。各層はその下の層に依存している。コンピュータからデータが送られるとデータが層を移動する。このプロトコル4階層の形態を''DARPAモデル''という。

|4|アプリケーション層(Application Layer)|ネットワークを使うプログラムやサービス|
|3|トランスポート層(Transport Layer)|両端のデータ配送サービス|
|2|インターネット層(Internet Layer)|データの経路制御とデータプログラムの種類の決定|
|1|ネットワーク層(Network Interface Layer)|物理ネットワークへのインターフェース|


*カプセル化 [#xdf23c29]

 各層は上の位置からデータを受け取ると、ヘッダと呼ばれる制御用のデータを加える。データの前に付けるのでヘッダ(header)と呼ばれる所以である。

 そして、この作業プロセスを''カプセル化''と呼ぶ。イメージとしては、荷物にどんどんヘッダという小物を加えていき、全体をひとまとめにするようなものだ。

 ひとたび情報が届いたら、反対の作業が行われ、それぞれの層がヘッダを読み、残りの情報を上位の層に渡す前にヘッダを削除する。

#img(http://s-akademeia.sakura.ne.jp/main/image3/protocol_4kaisouJPG.JPG)
#img(,clear)

 イメージの助けとして電話通信の2階層プロトコルを次に示します。ただし、電話通信は下にいくにつれてヘッダが付加はされない。単に音声データが電気信号に変換されるだけである。

|2|音声による電話のプロトコル|
|1|電気信号による電話のプロトコル|


*各種レイヤー [#l5c82540]

**ネットワークアクセス層 [#hb8f55ac]

 コンピュータはMACアドレスとIPアドレスの対応表を照らし合わせてネットワーク上のコンピュータを探すためにARP(プロトコルの一種)を用いる。
 コンピュータは[[MACアドレス]]と[[IPアドレス]]の対応表を照らし合わせてネットワーク上のコンピュータを探すためにARP(プロトコルの一種)を用いる。

 この対応表は正しいMACアドレスをローレベル(物理レベル)IPパケットに埋め込むことでリモートのコンピュータとコミュニケーションが取れるようになる。もしARPソフトウェアがARPキャッシュにデータがないIPアドレスを持ったコンピュータへの接続依頼を受けると、ARPはLAN上の全てのホストに見つからないコンピュータを探すために相手のIPアドレスを尋ねるメッセージをブロードキャストする。そして該当するリモートのコンピュータがARPリクエストを受信したら、見つからなかったMACアドレスを含むパケットを送り返す。そうすることによって、ARPキャッシュはIPアドレスが見つからなかったコンピュータのMACアドレスの両方を把握できる。

 ネットワークアナライザを使っているならば、ネットワーク上のARPトラフィックを見分けることができる。試しにLinux上のARPキャッシュを空にしてから、ネットワークトラフィックを観察してみると、ARPパケットがキャッシュを再構築するためにネット上を飛び交うのが観察できるはずだ。
 ネットワークアナライザ([[Sniffer]])を使っているならば、ネットワーク上のARPトラフィックを見分けることができる。試しにLinux上のARPキャッシュを空にしてから、[[ネットワークトラフィック]]を観察してみると、ARPパケットがキャッシュを再構築するためにネット上を飛び交うのが観察できるはずだ。


**インターネット層 [#g01d36f8]

 インターネット層はネットワークの上位に位置する層である。情報をデータグラムと言われるパケットにカプセル化して、その上位にある層が使う基本的なパケット伝送サービスを提供する。

 IP(Internet Protocol)はコネクション不要のプロトコルである。IPのパケット構造を見るとわかるが、IPはデータグラムの再構築や[[ルーティング]]などを担当している。

**トランスポート層 [#deb9d9e0]

 プロセス間あるいはアプリケーションプログラム間の通信をサポートする層である。

 TCP/UDP/ICMPといったプロトコルが使われる。ちなみに、これらのプロトコルを各ホスト上で実行するプログラムあるいはモジュールのことを''トランスポートプロバイダ''という。

 このトランスポート層において、ソケットはアプリケーションを作成する際のインタフェースとなる。ソケットは(OS側の)サービスアクセスポイント([[ポート番号]]のこと)とプロセスを繋ぐアダプタの役目を果たす。

[補講]UNIXのプロセスはファイルディスクリプタというものを通じて、すべての入出力を行う。ここではアダプタ=ファイルディスクリプタと思ってもらって構わない。
[補講]UNIXのプロセスはファイルディスクリプタというものを通じて、すべての入出力を行う。ここではアダプタ=ファイルディスクリプタと思ってもらって構わない。 ◇


**アプリケーション層 [#p7fd5ba3]

 OSI7階層のセッション、プレゼンテーション、アプリケーションの層を担当する。
 [[OSI7階層]]のセッション、プレゼンテーション、アプリケーションの層を担当する。