關於TCP重傳 亂序和重複的問題

2021-09-12 17:59:41 字數 651 閱讀 2614

tcp是一種巨複雜的協議,本篇文章旨在簡單說明一些資料傳輸過程中常見的問題,對於涉及的演算法目前並不會詳細闡述(主要是個人能力原因)。

tcp提供兩種重傳的機制,一種是基於時間的超時重傳,一種是基於接收端反饋訊息的快速重傳。相比之下前者占用更少的網路頻寬,但是效率很低。而後者則相反。下面我們來具體看一下這兩種機制的實現方式。

tcp會將自己的資料報傳遞給ip層,但是ip層並不提供解決資料報重複、丟失和亂序問題的功能。它只負責規劃主機之間具體的ip路徑。tcp是一種可靠的位元組流協議,所以它絕不會將次序混亂的資料段交給上層應用程式,所以tcp的實現就會考慮各種細節問題。

資料報重複

對於資料報的重複,tcp的做法難免有些簡單粗暴。首先我們知道每個資料報經由傳輸層的資料都會被打上相應的頭,一般情況下,在固定20位元組的tcp的頭部中,有乙個 4 位元組的序列號段來表示資料在位元組流中的偏移,對於接收端而言,該欄位可以幫助自己直接將重複的資料報扔掉或者是對資料報進行重新組裝,進而傳遞給上層

都說一圖勝千言,但是我實在想不到除了那幾個協議頭外該放哪些圖,但是所說的這些內容與協議頭又感覺關係不大所以索性一張圖不放顯得語言更加純真些,如果你覺得內容很水,好吧,我承認它確實挺水的。。。。

12 tcp的超時和重傳

超時重傳是tcp協議保證資料可靠性的另乙個重要機制,其原理是在傳送某乙個資料以後就開啟乙個計時器,在一定時間內如果沒有得到傳送的資料報的ack報文,那麼就重新傳送資料,直到傳送成功為止。超時時間的計算是超時的核心部分,tcp要求這個演算法能大致估計出當前的網路狀況,雖然這確實很困難。要求精確的原因有...

TCP的超時重傳和累積確認

面試問題 tcp的可靠性,超時重傳怎麼實現,m1,m2,m3,m4,m5,丟失m2 怎麼重傳m2?為什麼不用重傳m4,m5?因為每個tcp報文被傳送時,都會設定乙個重傳定時器,若定時期到了還沒收到ack包,則應重傳。為什麼不用重傳m4,m5?則可由此文回答 因為採用了累積確認。有例如下 server...

TCP超時和重傳的簡單介紹

本人剛學不久水平有限,如有錯誤,萬望指出。1.tcp為什麼需要超時和重傳 這是因為tcp協議是一種可靠資料傳輸服務,而實現這一點的正是tcp的超時和重傳功能。也是因為網路層和鏈路層不實現可靠資料傳輸服務,只能依靠傳輸層或應用層來實現可靠資料傳輸服務。2.超時重傳和快速重傳 tcp在傳送資料時會設定乙...