TCP/IP 之TCP協議(4):差錯控制

1、TCP必須保證數據:按序,沒有差錯,沒有部分丟失,沒有重複的交給應用層。方法就是:校驗和,確認,超時重傳

2、校驗和:和UDP的做法一樣,也要僞首部,和UDP不同的是這個功能在TCP中是必須的

3、確認:ACK的確認機制(下面是一些原則)

a、ACK報文不需要確認,也不消耗序號

b、當一端發送數據時,儘量包含捎帶確認。

c、收端推遲發送ACK報文段,如果僅有一個未確認的按序報文段;延遲到500ms,或者有第二個報文段接收時(轉d),或者有數據要發送時(轉b)

d、任何時候,不能有兩個(以上)未確認的報文段(就是說如果收端有兩個未確認的按序報文段,就馬上發送ACK報文段進行確認)

e、當收到一個序號比期望序號還大的報文段時,馬上發送ACK,讓發端進行快重傳

f、收到重複的報文段,就立即發送確認(解決ACK丟失問題)

g、丟失的報文段到達,發送確認,表示已經收到了丟失的報文

4、確認類型

累計確認:收端忽略掉所有失序報文,告知發端他期待下一個收到的序號,叫做肯定累計ACK。肯定是說:丟棄的,丟失的,重複的都不報告。

選擇確認(SACK):在某些新TCP實現裏面實現了這個東西,報告失序和重複的數據,作僞TCP首部選項字段的一部分。

5、重傳(兩種情況) : 重傳定時器時間到,或者 發端收到重複的三個ACK(快重傳)




發佈了54 篇原創文章 · 獲贊 16 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章