Computer Network 3 Document 07
通信ネットワーク実習3第7回補足資料

2.5 TCP/IP の階層モデルと通信例(続き)

2.5.2 パケットの送信処理

電子メールで「おはようございます」という文字列を 電子メールで送る例を考える. ここではAさんのホストからBさんのホストへ直接メールが 届けられるとしている(実際のインターネットではメールサーバーを 仲介に使うのがふつう).

階層の上位下位は,人間が最上位で物理的な通信ケーブルなどの媒体が 最下位になる.メールのアプリケーションに,宛先や 「おはようございます」の本文を人間が入力し,送信ボタンを押すことで アプリケーション層にデータの処理を依頼することで一連の 処理が始まる.

OSI参照モデルでいうアプリケーション層,プレゼンテーション層, セッション層は TCP/IP では一つのアプリケーション層だが, アプリケーションプログラム内部で文字コードや符号化の処理を行う プレゼンテーション層,いつ通信コネクションを確立するかを 決めるセッション層の機能が働いている.アプリケーションプログラムは 伝送に必要なデータをOSの機能であるトランスポート層に渡し,処理を 依頼する.トランスポート層とネットワーク層はアプリケーションプログラム ではなくOSの仕事である.

メールアプリケーションの場合は信頼性を確保するためにトランスポート層の プロトコルとして TCP を使用する.

階層の中をデータが流れてゆく様子が教科書p.85図2.18に描かれている. 送信側ではデータは上位層から下位層に流れる. 上位層から下位層に行くに従ってヘッダが追加されてゆくことがポイントである. 各階層では上位層のヘッダ+データをデータとして自分の階層のヘッダを付加する.

アプリケーション層,プレゼンテーション層,セッション層

この例では図2.18で「上位層」と書かれているTCP/IPでいう アプリケーション層にあたる階層はメールアプリケーションプログラムである. メールアプリケーションプログラムはトランスポート層のプロトコルとしてTCP を選んで「おはようございます」というデータをトランスポート層に渡す.

トランスポート層

トランスポート層ではTCPに必要なヘッダを上位層から受け取ったデータに 付加する.TCPヘッダには通信先のアプリケーションソフトウェアを示す ポート番号,分割されたパケットを受信者が順番どおり組み直すために つけられるシーケンス番号,データの破損を検知するチェックサムなどが 含まれる.これをネットワーク層のプロトコルであるIPに渡す.

TCP のヘッダの構造は教科書表紙裏に書かれている.

ネットワーク層

ネットワーク層のIPではトランスポート層のヘッダとデータをあわせてデータとみなし, IP のヘッダを付加する.IP ヘッダには通信先のIPアドレスと,データの 中身がTCPであることを示す情報が書かれている.これは受信者がわが 受け取ったIPパケットを開いたあと,トランスポート層で どのプロトコルで処理をすればいいかを知るために必要な情報である. 経路制御はIPの機能なので経路制御表を使って次にデータを渡すべき ルータやホストを決定してデータリンク層に渡す.

IP パケットのヘッダの構造も教科書表紙裏に書かれている.

データリンク層

データリンク層ではネットワーク層のヘッダとデータをデータとみなす. 教科書図2.18のようにこの中には上位層であるIP,TCPのヘッダが含まれる. データリンク層は直接通信できる同じネットワーク内の通信を担当するので 宛先のネットワークインターフェースのMACアドレスなどの情報を ヘッダとして付加してネットワークインターフェースに送る.

データリンク層ではデータの前に付加するヘッダだけでなく, データが壊れていないかどうかを 検出するためのFCSと呼ばれるチェック情報をデータの後ろに付加する.

Ethernet フレームのフォーマットは教科書p.112 図3.20 に書かれている.

2.5.3 データリンクを流れるパケットの様子

いろいろな階層でヘッダがつけられたデータの様子が教科書p.87図2.19に 示されている.上位層のヘッダとデータを下位層が「包んで」新たに ヘッダ(データリンク層ではトレイラも)を付加している.

各階層の機能を理解するにはヘッダに書かれている情報を知ることが 重要である.ヘッダには正確には表紙裏のような多くの情報が書かれているが, 特に重要なのは「宛先(と発信元)のアドレス」と 「上位層のプロトコルを示す情報」である.「アドレス」とは 通信相手を一意に示す識別子で,階層によって違うものが使われる. 階層と使われるアドレスの対応を覚えておくことは重要である. 第3回表3.1 にまとめている.

「上位層のプロトコルを示す情報」はデータ受信側の処理を考えると 必要性がわかりやすい.受信側は教科書p.85図2.18のように 下位層から受け取る.データリンク層でp.87図2.19の パケット(この階層ではフレームと呼ぶ)全体を受け取ると データリンク層は一番外側のイーサネットヘッダとトレイラを確認し, 「イーサネットタイプ」をみて上位層のプロトコルがIP であることを 知る.上位層の IP へデータリンク層のヘッダとトレイラを外して データを渡す.この中には IP のヘッダが入っているので IP はそれをみて処理を行う.IP ヘッダには上位層で TCP を使うことが指示されているので IP ヘッダを外して TCP に渡す,というように処理を行う.

2.5.4 パケットの受信処理

送信側とは逆に下位層から上位層に処理が渡される.教科書をよく読んで理解してほしい. 下位層で教科書p.87図2.19の全体のフレームを受け取り, 自分の階層のヘッダをはずして上位層に送る.

ネットワーク層の機器であるルータは他のネットワーク宛のIPを 中継する処理が多い.このようなパケットは自分宛ではないので トランスポート層以上の処理は行わず, 経路制御表から次に送るアドレスを調べてIPパケットの状態で 転送を行う.


Updated in June 2, 2022, Yamamoto Hirosh