可靠資料傳輸的原理 位元差錯

2021-06-14 06:27:28 字數 1408 閱讀 3042

讀完《計算機網路自頂向下設計方法》第三章可靠資料傳輸的原理,有些明白為什麼tcp報文要這樣設計。

第一種情況:僅考慮通訊通道上不會丟包,只會有位元差錯產生。

通過校驗和機制(checksum)和重傳機制,在雙方保證資料報可靠性。傳送方/接收方狀態機如下所示。

資料報傳送後,傳送方等待接收方的nak(否定)/ack(肯定)資料報。如果接收方返回nak,那麼說明資料報在傳輸過程中產生位元差錯,傳送方重新傳送資料報;如果收到ack,說明資料報成功被接收。

接收方接收資料報,檢視checksum。如果資料報校驗和成功,那麼將資料報資料取出,構造ack資料報給傳送方;否則構造nak資料報給傳送方。

接收方與傳送方通過checksum和nak/ack完成資料的可靠傳遞。但是這裡面有個問題:如果nak/ack資料報在傳輸時發生位元差錯,該如何處理?

需要採用新的辦法:序號(sequence number),接收方只需要檢查序號即可確認收到的資料報是否是一次重傳。如果接收到的ack/nak資料報校驗和失敗,那麼將剛才的資料報重傳。接收方收到重傳的資料報後,檢查其序號與原來的一致(與期望的不一致),那麼再次傳送ack/nak。

需要2個序號即可滿足重傳的場景,狀態機如下所示:

傳送方傳送序號為0的資料報,如果接收到nak且校驗和成功,那麼與上面處理類似,重傳資料報。如果接收的資料報校驗和失敗,說明ack/nak在傳輸中出現位元差錯,重傳資料報。

接收方收到序號為0的資料報後,校驗和成功,傳送ack資料報,並且期待下乙個序號為1的資料報。如果下乙個資料報序號為0,那麼說明ack傳輸過程中出現位元差錯,那麼再次傳送ack資料報。

通過checksum/ack/nak/sequence number即可保證位元位差錯情況下的可靠資料傳輸。

通過冗餘ack技術,可以簡化上面的流程。冗餘ack:即不傳送nak而傳送上個資料報的ack,傳送方收到對同乙個資料報的兩個ack後,就知道接收方沒有收到其後面的資料報。簡化後的狀態機如下圖所示。

傳送方:

接收方:

可靠資料傳輸原理

概述 可靠資料傳輸原理 tcp的可靠資料傳輸 tcp可靠資料傳輸的滑動視窗既不是純粹的gbn,也不是純粹的sr,在這兩個協議之外又引入了新的東西。資料傳輸發生錯誤怎麼辦?傳送方的有限狀態機 圓圈代表當前所處的狀態,帶箭頭的線代表狀態的轉換,橫線上方指示引起狀態變遷的事件,橫線下方指示狀態轉換中採取的...

可靠資料傳輸原理(下)

上篇筆記中,我們主要討論了可靠資料傳輸協議的作用,以及如何從零開始一步一步構建乙個可靠的資料傳輸協議,在最後,我們構建出了 rdt 3.0 協議,它可以很好的在現實世界的底層通道上面工作。但問題是它是乙個停等協議,傳送端必須確認接收端已經接收到了正確的分組資料後才能傳送下乙個分組資料,這在現實生活中...

TCP中的可靠資料傳輸

前面我們講到了可靠資料傳輸的實現,而tcp就是一種可靠資料傳輸,因此我們有必要了解一下tcp中的可靠資料傳輸跟前面的回退n步和選擇重傳有什麼區別 首先,我們明確乙個概念,累積確認 累計確認跟前面的ack不太一樣,在tcp報文段中有乙個確認號字段,該欄位表示接收方希望接收到的下乙個報文段的序號,而tc...