TCP協議(可靠傳輸),滑動窗口機制,擁塞機制,避免丟包機制,快速重傳機制,回退n步協議等等

上篇bolg中我們介紹了TCP協議的“面向連接”,仔細分析了其中“三次握手建立連接,四次揮手斷開連接”,着重介紹了標識符和各個階段的狀態:這裏附上鍊接:TCP協議(面向連接)基礎概念詳解
討論完面向連接後,我們進入下個知識點
可靠傳輸
1,TCP協議中,可靠傳輸:確保數據可以安全的達到對端,並且可以有序交付
爲了滿足“傳輸數據可靠”,首先從數據簡單的收發過程中,設置瞭如下“”功能“(設計思想)”
(1)面向連接——確保通信雙方都具有數據傳輸的能力,即均具有數據的收,發功能
(2)確認應答機制:每一條發送的數據都需要接收方確認收到進行回覆,發送端收到回覆後認爲數據安全到達
(3)超時重傳機制:當等待一定的時間後都沒有收到接收端的回覆,發送端認爲數據可能丟失了,對這條數據進行重新發送
(4)對數據進行包序管理:
$.實現:基於協議字段中的序號和確認序號實現
$.在三次握手過程中,雙方告訴對方自己的起始序號
$.協議字段中的序號:告知對端本條數據的起始序號
$.確認序號:接收方告訴發送方,確認序號之前的數據都已經收到了,下次就從這個確認序號開始發送新數據
數據不一定會有序到達,但是接收方會根據“序號”進行數據排序,保證有序交付
(5)數據一致性校驗:基於協議字段中的校驗和字段時間,倘若不一致則要求重傳(確保數據的收發是一條數據)
————————————————————————————
同樣,爲了更好的保證數據傳輸可靠,也設計了多種機制來輔助實現:
(1)避免丟包機制:
問題:發送方發送數據過快,接受方來不及處理,TCP接受數據緩衝區產生溢出,數據沒有存放的空間直接丟包,造成數據丟失。
解決方法:滑動窗口機制 + 流量控制
(2)滑動窗口機制
滑動窗口機制:接收方每次收到數據後,就會根據協議字段中的窗口大小字段來告訴發送方最多繼續發送多少數據,當窗口大小爲0時表示不需要再發送數據了
必要條件:保證協議字段中的窗口大小值 <= 當前緩衝區中的剩餘空間大小
注:在三次握手過程中會協商一個MSS(代表最大數據段大小,即一條報文中的最大數據大小),每次發送數據時,會告訴接收方自己的win(窗口大小)
注:我們需要發送的信息量被MSS分開發送,期間使用了包序管理等等確認數據傳輸過程無誤,爲了數據傳輸儘量不產生數據丟失,匹配接收方的數據處理能力,引入滑動窗口機制
注:滑動窗口的移動:通過序號管理,基於發送窗口的後沿序號和發送窗口的前沿序號(差值爲窗口大小),接收窗口的前沿序號和後沿序號(差值爲接收窗口大小)
必要條件二:發送窗口大小 <= 接收窗口大小 | 接收窗口大小 <= 緩衝區剩餘空間大小
發送窗口後沿序號:先發送的數據序號,發送後被回覆將像後移動
發送窗口的前沿序號:後發送的數據序號,根據必要條件二進行移動滿足條件
接收窗口的後沿序號:待先取出的數據序號,最開始爲緩衝區起始位置,取出數據後沿移動
接收窗口的前沿序號:最後要取出的數據序號,根據必要條件二進行移動
TCP協議(可靠傳輸),滑動窗口機制,擁塞機制,避免丟包機制,快速重傳機制,回退n步協議等等
滑動窗口機制中的協議
(1)停等協議:每一條數據收到回覆後才傳輸下一條數據(適用:網絡極差環境)
(2)回退n步協議:從丟包位置開始,往後的數據均進行重新傳輸(不管後面數據是否已經收到了響應的回覆)(適用:網絡環境一般的情況)
(3)選擇重傳協議:丟包數據單個重傳(適用:網絡情況較好的情況)
擁塞機制
處理問題:開始發送數據時,不能知道當前網絡環境,當網絡環境比較差的時候,依舊發送大量數據,造成數據丟失,要求重傳
機制作用:最開始緩慢發送數據,用於網絡探測,當網絡環境較好時,數據傳輸速度以近乎指數級進行傳輸,直到到達閾值(:窗口大小),傳輸過程中發現網絡變差立刻重新開始探測,數據再次以緩慢的傳輸速率傳輸
TCP協議(可靠傳輸),滑動窗口機制,擁塞機制,避免丟包機制,快速重傳機制,回退n步協議等等
————————————————————————————
到這裏我們發現,這麼多機制,好像都在耽擱着TCP數據的發送,看起來繁瑣複雜,
我們爲了在足夠安全的條件下儘量肯可能的挽回損失的性能,我們也提出了一些相應的機制:
(1)快速重傳機制:
問題:任意一條數據丟失,發送方通常會等到超時纔會重傳,效率不高(等待超時的時間比較長)
機制:當後面數據被回覆,確認接收端收到數據後,前面數據還沒有收到,則立即對前面數據進行重傳(這裏連續發送三次,發送方發送三次重傳請求,纔可以對數據進行重穿(這是爲了避免前面數據只是延遲到達而不是丟失))
捎帶應答機制
接收方會對每一次收到的數據進行確認回覆,但是每一條數據確認回覆都只是報頭中的一些信息(甚至可能回覆的就是一個單純的TCP報頭)
那麼我們如果在進行確認回覆的時候,正好有數據需要發送給對方,那麼將二者結合起來就可以節省時間了
延遲應答機制
問題:在前面的滑動窗口機制中,滑動窗口的大小可能是一直變化的,那麼對於緩衝區中的接收窗口來說,也是不斷變化的,這幾影響到對數據的吞吐量,並且由於數據大概率沒有從緩衝區取出,接收窗口隨着發送窗口大小調節變小,造成吞吐量變小,效率降低
機制:收到數據後,延遲一小會,多給上層取出數據的機會,上層取出,窗口大小可保持不變,就可以保證一個相對穩定的大的傳輸吞吐量
————————————————————————————
至此,關於“可靠傳輸解釋基本完畢”
感謝觀看,還有批評指正





















































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章