回覆列表
  • 1 # 使用者1788891571714

    個人理解如下:

    首先,資料鏈路層的校驗應該是必須的。

    其次,考慮只有資料鏈路層的情況。如果只有資料鏈路層的校驗,我們接收到的資料可以理解為近似無差錯的傳輸,但還是可能存在差錯。後面兩種校驗可能進一步減小這種差錯的可能。

    接下來看看其他兩層校驗的情況。

    先確認前提,一是資料鏈路層存在校驗,二是已知透過資料鏈路層的校驗,(沒透過的話,直接丟包,後面兩層有無校驗都不影響),三是出現那種極小可能出現的情況,也就是透過資料鏈路層校驗,但是包存在問題。

    如果只有IP層校驗,無法校驗段的正確,拋棄。

    如果只有運輸層校驗,無法校驗IP首部的全部資訊。

    另外,在接收端解封裝包的時候,都可能出錯,在IP層與運輸層增加校驗可以防止這種出錯。(當然,這種情況也是很少見)。

    最後,如果3層校驗都有,接收到的資料包就一定是正確的?個人覺得:不是(未考證)。

    PS:

    -----------------

    另外說說哲學:

    首先每層加入校驗和,不得不說還有分層、對稱、透明的思想。

    說說IPv6:

    IPv6的報文頭,已經看不見校驗和。是不是20-80法則在校驗和上面的應用呢?

    IPv6包的校驗是透過上下的校驗實現的。資料鏈路層對幀的校驗以及TCP/UDP對偽首部的校驗,不是說IPv6包沒有校驗機制!

    參考資料:

    why there is separate checksum in TCP and IP headers?

  • 中秋節和大豐收的關聯?
  • 挖掘機裝車方法?