📓

マスタリングTCP/IP 入門編 2章

2022/09/08に公開

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