TCP協議如何保證資料的順序傳輸

Raysync鐳速發表於2019-08-05

TCP是一種面向連線的、可靠的基於位元組流服務。“面向連線”意味著使用TCP協議的應用在建立聯絡之前,彼此需要先建立TCP聯絡;而TCP協議確保傳輸過程中資料的順序性則體現其“可靠”的特性,具體如下:

 

TCP協議將資料切分為多個小片段(資料被劃分為合理長度),小片段由頭部(header)和資料(payload)組成,為了確保抵達資料的順序,TCP協議給每個片段的頭部(header)都分配了 序列號 ,方便後期按照序列號排序。


  • 當某個片段按照順序傳送後,傳送方會將已傳送的資料片段暫時儲存在 緩衝區 內,併為每個已傳送的資料設定一個 時間區間

  • 當接收方收到正確的符合順序的資料片段後,會優先對資料片段做完整檢驗,如確認無誤,再把資料片段交給上層協議,並給傳送方一個 TCP片段反饋資訊用來告知(ACK acknowledge)傳送方:我已經接收到這個片段了。這個TCP片段被稱為 ACK回覆 。舉個例子:傳送的第一個片段序列號為 T,其對應的ACK回覆則為T+1,也就是接收方要接收的下一個傳送片段的序列號。


假設在規定的時間區間之內傳送方收到接收方的 TCP片段反饋資訊,則傳送方可以釋放緩衝區的資料,如若超時未收到應答,傳送方則重新傳送資料,直到收到應答,或者重發資料次數達到上限為止。

 

TCP協議的種種機制保證了資料傳輸的順序,然而TCP報文段作為IP資料來傳輸,在IP資料包的到達可能會失序,因此TCP報文段的到達也存在失序的可能。特殊情況下,TCP將對收到的資料進行重新排列,確保順序正確後再交給應用層。




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69925049/viewspace-2652755/,如需轉載,請註明出處,否則將追究法律責任。

相關文章