📓
マスタリングTCP/IP 入門編 2章
TCP/IPプロトコルの階層モデル
OSI参照モデルとそれぞれの役割
階層 | 役割 |
---|---|
上位層(アプリケーション層・プレゼンテーション層・セッション層) | アプリケーションの処理を実施 |
トランスポート層 | プログラム間(ポート間)のデータ転送を実施(TCPやUDPを利用) |
ネットワーク層 | IPプロトコル等を利用し最終目的のホストまでのデータ転送を実施 |
データリンク層 | OSとハードウェアを橋渡しするソフトウェア (NICを動かすためのデバイスドライバ) |
物理層 | データ転送に利用する物理機器(ケーブルや無線機器など) |
TCP/IPの通信例
送信側
- | 概要 | 詳細 |
---|---|---|
1 | アプリケーションの処理 | アプリケーションによるデータ送信処理 (メールの場合には符号化処理も必要) |
2 | TCPモジュールの処理 | TCPヘッダ(送信元先ポート番号・シーケンス番号・チェックサム等) を付与 しデータをIPに送る |
3 | IPモジュールの処理 | IPヘッダ(送信元先IPアドレス・トランスポート層のプロトコルタイプ等)を付与。ルーティングテーブルを参照し、次に受け渡す機器のイーサネットドライバにデータを送る(送信先のMACアドレスがわからない場合にはARPで解決する) |
4 | ネットワークインターフェース(イーサネットドライバ)の処理 | イーサネットヘッダ(送信元先のMACアドレス・ネットワーク層のプロトコルタイプ等)を付与し物理層を通して送信を行う。送信処理中にFCSがハードウェアで計算されパケットの最後に付与される |
受信側
- | 概要 | 詳細 |
---|---|---|
5 | ネットワークインターフェース(イーサネットドライバ)の処理 | イーサネットヘッダを確認し、自分宛でなければイーサネットヘッダを捨てる。自分宛であった場合にはヘッダから次データのプロトコルを確認し、そのデータタイプを処理できるルーチンにデータを送る(この場合はIPルーチン) |
6 | IPモジュールの処理 | IPヘッダを確認し、自分のホストIP宛であるかどうかを確認する。自分のホストIP宛でない場合はルーティングテーブルから次に送る機器を調べて転送処理を行う。自分のホストIP宛であった場合にはそのまま受信し、次データのプロトコルを確認し、そのデータタイプを処理できるルーチンにデータを送る(この場合はTCPの処理ルーチン) |
7 | TCPモジュールの処理 | チェックサムによるデータ破損確認・データの順序確認・ポート番号からの処理アプリケーション特定を行い、正しくデータ受信できている場合にはアプリケーションにデータを送る。この時送信ホストにデータが届いたことを示す「確認応答」を返す(これを受け取らない場合送信ホストはデータを繰り返し送信する) |
8 | アプリケーションの処理 | アプリケーションでの受信処理を実施し、正常終了・異常終了などの結果を送信元に返却する |
Discussion