UDPのヘッダーに長さフィールドがあり、TCPにはないのはなぜですか?
TCPのセグメントの長さはIPヘッダーから推測されると思いますが、UDPデータグラムでも同じことができるはずです。
UDPのヘッダーに長さフィールドがあり、TCPにはないのはなぜですか?
TCPのセグメントの長さはIPヘッダーから推測されると思いますが、UDPデータグラムでも同じことができるはずです。
TCP/IP Illustrated Volume 1によると、長さフィールドは冗長です。この件に関してスティーブンスが言っているのはそれだけです。
個人的には、UDPヘッダーの長さ(ビット単位)を32で割り切れるようにするためだったと思います:)
すでに情報が含まれているTCPヘッダーの前に概念的に接頭辞が付けられた96ビットの疑似ヘッダーがあります。
このソースからのチェックサムフィールドの説明は答えを与えます:
チェックサム:16ビット
チェックサムフィールドは、ヘッダーとテキスト内のすべての16ビットワードの1の補数の合計の16ビットの1の補数です。セグメントにチェックサムされる奇数のヘッダーオクテットとテキストオクテットが含まれている場合、チェックサムの目的で、最後のオクテットの右側にゼロが埋め込まれ、16ビットワードが形成されます。パッドはセグメントの一部として送信されません。チェックサムの計算中に、チェックサムフィールド自体がゼロに置き換えられます。
チェックサムは、TCPヘッダーの前に概念的にプレフィックスが付けられた96ビットの疑似ヘッダーもカバーします。この疑似ヘッダーには、送信元アドレス、宛先アドレス、プロトコル、およびTCPの長さが含まれます。これにより、誤ってルーティングされたセグメントに対するTCP保護が提供されます。この情報はインターネットプロトコルで伝送され、IP上のTCPによる呼び出しの引数または結果でTCP/ネットワークインターフェイスを介して転送されます。
+--------+--------+--------+--------+ | Source Address | +--------+--------+--------+--------+ | Destination Address | +--------+--------+--------+--------+ | zero | PTCL | TCP Length | +--------+--------+--------+--------+
TCPはストリームベースのプロトコルであるため、TCPレベルでは情報は必要ありません。