0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UDPヘッダをかんたんに説明してみる

Posted at

勉強前の理解度

  • UDPヘッダというものが存在する

UDPヘッダの概要

送信元ポート番号(16bit)

 送信元のポート番号
 返答を必要としない場合、この値を0にして送信することがある。

宛先ポート番号(16bit)

 宛先のポート番号

パケット長(16bit)

 UDPヘッダとデータの長さの合計値をオクテット単位で示す。

チェックサム(16bit)

 UDPヘッダとデータが破損していないかを示す。初期値は0。対象範囲の1の補数の和の合計値を16bit単位で求め、その1の補数を保持している。対象となる範囲は、UDPヘッダとUDPペイロード、UDP疑似ヘッダである、UDP疑似ヘッダはチェックサムの計算のためにUDPヘッダの前に疑似的に用意されるヘッダで、実際の通信には含まれない。

1の補数の和の1の補数をとる理由

 チェックサムの計算で「1の補数」ではなく「1の補数の和の1の補数」を利用する理由の一つに、受信者側のチェックサムの確認が簡略化されることがあるらしい。受信者側が対象範囲の合計値の1の補数を計算して、それが0になるかを確かめるだけでよいからだ。

 例えば、チェックサムが初期値の0の状態でチェックサムを計算して、その1の補数の和が「1001」であったとする。当然チェックサムは「0110」となる。(チェックサムとその計算単位を4bitに簡略化した)
 そして、受信側が計算する1の補数は1001(チェックサム以外)+0110(チェックサム)=1111となり、チェックサムは「0000」となる。「1の補数の和の1の補数」を利用する場合は、チェックサムが0であることを確認するだけで良いのだ。
 ※受信者側が求めるチェックサムは、「16bitごとの合計値の1の補数」である(送信側と計算方法が異なる)。

 一方、「1の補数」を利用する場合は、送信者側が計算してチェックサムを一旦保管して、受信者が計算したチェックサムと比較しなければならない。これだと受信者側の手間が増えてしまう。(みたいな感じだと思う)

参考

第13回 データグラム通信を実現するUDPプロトコル:基礎から学ぶWindowsネットワーク(3/4 ページ) - @IT
IP チェックサムの秘密
マスタリングTCCP/IP

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?