預備知識:TCP報文格式字段
???????? 1、分為首部和數(shù)據(jù)兩部分,二十個字節(jié)固定首部;
???????? 2、分析:
????????????1)兩個字節(jié)源端口、兩個字節(jié)目的端口;
????????????2)四個字節(jié)序號(報文段序號)、四個字節(jié)確認號(期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號);
????????????3)四位數(shù)據(jù)偏移、六位保留、六位控制位:緊急URG、確認ACK、推送PSH、復位RST、同步SYN、終止FIN;
????????????4)兩字節(jié)窗口(窗口值作為接收方讓發(fā)送方設置其發(fā)送窗口的依據(jù));
????????????5)兩字節(jié)檢驗和(檢驗方法類似UDP,加偽首部)、兩字節(jié)緊急指針(結合緊急控制位URG);
????????????6)最大四十個字節(jié)選項,包括MSS(最大報文段長度,默認536)、十字節(jié)時間戳(時間戳值、時間戳回送回答,計算RTT,防止序號繞回)等
一、理想條件:
????????傳輸信道不產(chǎn)生差錯;與速度無關,接收方總能及時處理收到的數(shù)據(jù)。
二、簡單的可靠傳輸:
???????? 停止等待協(xié)議:每發(fā)送完一個分組就停止發(fā)送,等待對方確認。收到確認再發(fā)送下一個分組。
????????1、無差錯情況;
????????2、出現(xiàn)差錯:設置超時計時器。? ?
????????????注意三點:1)發(fā)送方保留分組副本;2)分組和確認分組進行編號;3)超時計時器比平均往返時間長一些。
????????3、確認丟失和確認遲到:
????????????超時。重新發(fā)送分組,接收方兩個個操作:1)丟棄重復分組;2)向A發(fā)送確認;
???????? 這種可靠傳輸機制也稱ARQ(自動重傳請求)
???????? 特點:接收方不用請求發(fā)送方重傳某個出錯分組;信道利用率低。
???????? 改進:連續(xù)ARQ協(xié)議(流水線傳輸)與滑動窗口協(xié)議
三、實際中的可靠傳輸:
????????1、滑動窗口協(xié)議:
????????????1)發(fā)送窗口與接收窗口不總是一樣大;發(fā)送方和接收方各自維護一個發(fā)送窗口和接收窗口,單位是字節(jié)
????????????2)對于不按序到達的數(shù)據(jù)不丟棄,臨時存放在接收窗口中;
????????????3)接收方必須有累計確認功能;
????????2、超時重傳時間的選擇:TCP中記錄發(fā)送時間和接收到的時間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
如果收到的報文段無差錯,只是未按序號,中間缺少一些序號數(shù)據(jù)。可以在首部添加選項“選擇確認”記錄缺少序號段的邊界,在建立連接時協(xié)商。
? ?以上為一些要點記錄,詳細請參考《計算機網(wǎng)絡(第七版)》謝希仁