文章来自: http://irw.ncut.edu.tw/peterju/internet.html#udp
udp checksum的計算
提示:
1.UDP的Pseudo Header會用到 IP 封包中的 Sorurce Address, Destination Address, 與 Protocol。
2.UDP Length會在Pseudo Header與UDP Header中各出現1次,也就是說會被計算2次。《== (注意 )
3.若Data的長度若非Word(2 Bytes)的倍數,則必須在最後面補一個 byte的padding「0」。
假設有一封包資料如下
-
- 00 09 5b 4f 64 72
- 00 07 95 e7 79 2d
- 08 00
-
- 45
- 00
- 00 38
- 5d 02
- 00 00
- 80
- 11
- 33 d6
- c0 a8 00 02
- c0 f6 28 3c
-
- 6d 38
- 6d 2e
- 00 24
- 29 b5
- ff ff ff ff
- 67 65 74 73 65 72 76 65 72 73 20 38 32 20 66 75 6c 6c 20 65 6d 70 74 79
將上述資料以2byte為一組(16 bits)予以加總(Pseudo Header, UDP Header, UDP Data)
- c0a8 + 0002 + c0f6 + 283c +
- 0011 +
- 0024 +
- 6d38 + 6d2e +
- 0024 +
- 0000 +
- ffff + ffff + 6765 + 7473 + 6572 + 7665 + 7273 + 2038 + 3220 + 6675 + 6c6c + 2065 + 6d70 + 7479
- = 8d642