質問
通信用プロトコルのチェックサムはどのようなプロトコルに存在しますか? またどのように使われますか? |
解答
良い質問です。 通信用プロトコルにおけるチェックサムは、データが送受信中に破損していないかを確認するための誤り検出機構です。 どのレイヤーでも使われますが、プロトコルごとに目的や計算方法が違います。 1. チェックサムが使われる代表的なプロトコル ネットワーク層(OSI第3層) * IPv4 * ヘッダチェックサムが存在(データ部分ではなくヘッダのみ対象) * パケットが中継されるたびにTTLなどが変化するので、そのたびに再計算される * IPv6 * ヘッダチェックサムを廃止(効率化のため)。 下位層や上位層で誤り検出が行われる前提。 トランスポート層(OSI第4層) * TCP * セグメント全体(ヘッダ+データ)に対してチェックサムを計算 * IPv4/IPv6ヘッダ情報も含む「疑似ヘッダ(pseudo header)」を使う → 宛先IPなども保護対象になる * UDP * チェックサムあり(必須ではないが、IPv6では必須) * TCP同様に疑似ヘッダを含めて計算 データリンク層(OSI第2層) * Ethernet * **FCS(Frame Check Sequence)**と呼ばれるCRC(巡回冗長検査)を利用 * フレーム末尾に付与され、受信側で再計算して照合 アプリケーション層(OSI第7層) * HTTP, SMTP, FTPなど多くのアプリ層プロトコル自体にはチェックサムはない * 信頼性は下位層(TCPなど)に依存 * 独自プロトコルやバイナリ転送プロトコルではアプリケーション独自のチェックサム/CRCを持つ場合がある 2. チェックサムの使われ方 * 送信側:データを一定の方式(単純加算、CRC、多項式演算など)で計算し、結果をパケットに付与する * 受信側:同じ方式で受信データを計算し、送信側が付けたチェックサムと一致するか確認する * 一致 → 正常と判断 * 不一致 → データ破損と判断、破棄や再送要求(TCPの場合) 3. チェックサムの役割の違い * Ethernet (L2):物理伝送エラー検出(ノイズや信号劣化) * IP (L3):パケット転送中のヘッダ破損検出 * TCP/UDP (L4):データ全体の破損検出、IPヘッダの一部も保護 * アプリ層独自:ファイル転送や圧縮形式でデータ完全性確認 4. 補足 近年では、暗号学的ハッシュ(SHA, MD5など)やデジタル署名がセキュリティも兼ねて用いられるケースが増えています。 チェックサムは軽量で高速ですが「誤り検出専用」であり、改ざん検出やセキュリティには弱いという制約があります |
|
|
この記事へのコメント