看板 b99902HW 關於我們 聯絡資訊
checksum ------------------------------------------------------------- checksum是在封包中,用來確認傳送過來的封包有沒有bit error的機制 其作法是將整個封包切成兩個byte一組,然後加總 如果算出來的值跟checksum一樣,那就可以說封包沒有bit error (當然也有極低的機率checksum與bit error同時發生,且算出來還是相等 但是就~無法XD) 沒有checksum的設計 ------------------------------------------------------------- 那如果我們不要使用checksum時,要怎麼辦呢? 利用另外一個byte來當作要不要使用的紀錄? 這樣太麻煩了 於是直接使用checksum自己來決定 定義checksum = 0000 0000 0000 0000時為不使用checksum 可是這樣一來整個packet加起來的值等於0的狀況要怎麼辦? 於是令checksum = 1111 1111 1111 1111時為packet加起來的值等於0的狀況 這種做法是使用1's complement的數字表示法 _ _ (-x = x,而不是-x = x+1 //要+1的是2's complement的數字表示法) 而這種表示法,在做加減時,溢位的1要加回去(wrap around) EX: 1's complement 表示法 | 10進位表示法 1111 1111 1111 1111 | 0 +)0000 0000 0000 0001 | +) 1 --------------------- | ---- 10000000000000000000 | 1 加回去: 0000000000000000001 | 為何最後還要再取1's complement? ------------------------------------------------------------- 在整個packet加總時不會加到checksum的值(因為還沒算出來啊~) _ 假設加總出來的值是x,那麼令checksum = x 則receiver在收到packet時,假設沒有bit error的情況下 把所有的2byte的組合加起來時算式為: _ x + x = 1111 1111 1111 1111 故receiver只要把所有2byte的組合加起來,然後看是不是等於1111 1111 1111 1111 就可以知道packet有沒有發生bit error P.S.順便問一下,因為老師叫我記錄上課問過的問題,然後寄給她 好像會做為考試的參考~ 想問大家要每次上完課就PO,還是考試前一次PO? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.143 ※ 編輯: raychin4563 來自: 140.112.30.143 (11/27 22:12) ※ 編輯: raychin4563 來自: 140.112.30.143 (11/27 22:13)
cmy1027:我才不會推呢 亨 11/27 22:26
q22554647:推~ 11/27 23:14
bztfir:秦睿喪 11/28 10:52
a123zyx:看你方便吧 11/29 20:16
chiang9804:推 都可以~感謝! 12/02 10:19