TCP可靠傳輸實現原理

預備知識:TCP報文格式字段
1、分爲首部和數據兩部分,二十個字節固定首部;

     2、分析:

        1)兩個字節源端口、兩個字節目的端口;

        2)四個字節序號(報文段序號)、四個字節確認號(期望收到對方下一個報文段的第一個數據字節的序號);

        3)四位數據偏移、六位保留、六位控制位:緊急URG、確認ACK、推送PSH、復位RST、同步SYN、終止FIN;

        4)兩字節窗口(窗口值作爲接收方讓發送方設置其發送窗口的依據);

        5)兩字節檢驗和(檢驗方法類似UDP,加僞首部)、兩字節緊急指針(結合緊急控制位URG);

        6)最大四十個字節選項,包括MSS(最大報文段長度,默認536)、十字節時間戳(時間戳值、時間戳回送回答,計算RTT,防止序號繞回)等

一、理想條件:
傳輸信道不產生差錯;與速度無關,接收方總能及時處理收到的數據。

二、簡單的可靠傳輸:
停止等待協議:每發送完一個分組就停止發送,等待對方確認。收到確認再發送下一個分組。

    1、無差錯情況;

    2、出現差錯:設置超時計時器。   

        注意三點:1)發送方保留分組副本;2)分組和確認分組進行編號;3)超時計時器比平均往返時間長一些。

    3、確認丟失和確認遲到:

        超時。重新發送分組,接收方兩個個操作:1)丟棄重複分組;2)向A發送確認;

     這種可靠傳輸機制也稱ARQ(自動重傳請求)

     特點:接收方不用請求發送方重傳某個出錯分組;信道利用率低。

     改進:連續ARQ協議(流水線傳輸)與滑動窗口協議

三、實際中的可靠傳輸:
1、滑動窗口協議:

        1)發送窗口與接收窗口不總是一樣大;發送方和接收方各自維護一個發送窗口和接收窗口,單位是字節

        2)對於不按序到達的數據不丟棄,臨時存放在接收窗口中;

        3)接收方必須有累計確認功能;

    2、超時重傳時間的選擇:TCP中記錄發送時間和接收到的時間RTT

     平均往返時間RTT,加權平均往返時間RTTs

               新RTTs =(1 - a)*(舊的RTTs)+ a *(新的RTT樣本)(0 <= a < 1,推薦0.125)

     超時重傳時間RTO,RTT偏差的加權平均值RTTd

               RTO = RTTs + 4 x RTTd

               新的RTTd =(1 - y)*(舊的RTTd)+ y * |RTTs –新的RTT樣本| (y推薦0.25)

     在計算平均加權RTTs時,只要報文段重傳了,就不採用其往返時間樣本。這樣RTTs和RTO比較精確;

      3、選擇確認SACK

如果收到的報文段無差錯,只是未按序號,中間缺少一些序號數據。可以在首部添加選項“選擇確認”記錄缺少序號段的邊界,在建立連接時協商。

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