# Stanford Computer Network ## ICMP service model 全名 the Internet Control Message Protocol ### 用途 拿來回報 transport layer 的 errors or 訊號 ### 如何運作 它會把 information 塞在 payload 中並往下傳 ![](https://i.imgur.com/gDnLHa4.png) ### example 假設這有一台 A to B 的 end host,當 router 發現問題,假設是它沒有辦法往下傳資料,它就會把資料回傳,並通知 layer 錯誤的種類。 ![](https://i.imgur.com/R7LasKr.png) 以下就是大致上幾種重要的錯誤種類 ![](https://i.imgur.com/eAYPhA9.png) #### trace route 每個封包都有一個TTL,當TTL歸零時(通常代表這個封包在網路中死循環太久)要被刪掉,這個時候 router 就要負起責任來把使用 ICMP 把這份訊息傳回給原本的主機。 ![](https://i.imgur.com/rb1Qh7B.png) ## End to End principle 這條定律在講無論你的網路怎樣好,你都沒有辦法在沒有確定 client 跟 host 端的資料都是正確的情況下,去判斷中間的過程是否都是正確的。 ## Error Detection ### CheckSum * use for TCP/IP * cost low * 無法保證沒有錯誤 #### 原理 把 packet 中所有 16 bits field 的地方加起來 在加 1,如果超過 16bits 把 carry 丟掉,再對他取 1 補數再把 這個值 放到 Checksum 中。 送到 host 端之後,只要你把所有的 field(含 checksum) 加起來,然後加起來以後如果不是0xffff那就代表有錯誤。 ### CRC Q = 原始資料 (長度為 k) F = FCS (長度為n-k) J = Q 與 F 串接後的答案 P = CRC 生成多項式 J = Q xn-k + F,而 J 必須能被 P 整除 (這是生成多項式的定義)。 才算資訊沒有錯誤 ### MAC 在密碼學中,訊息鑑別碼(英語:Message authentication code,縮寫為MAC),又譯為訊息認證碼、檔案訊息鑑別碼、消息認證碼、資訊認證碼,是經過特定演算法後產生的一小段資訊,檢查某段訊息的完整性,以及作身分驗證。它可以用來檢查在訊息傳遞過程中,其內容是否被更改過,不管更改的原因是來自意外或是蓄意攻擊。同時可以作為訊息來源的身分驗證,確認訊息的來源 ![](https://i.imgur.com/pw4n1hC.png) FSM in Computer Network