【網絡】tcp流控制和擁塞控制

名詞解釋

MTU:最大傳輸單元(硬件規定),指的是ip頭+data的最大字節數(數據包超過該值會分片,主要爲UDP協議)
TTL:數據報的壽命(通過一個路由器減1,工做在ip層)
RTO:重傳超時時間
cwnd:發送窗口
rwnd:接受窗口

流控制

目的:
    防止發送方速率太快,接受端承受不了(點對點流空)

原理:
    a. 經過滑動窗口實現(滑動窗口協議工做在傳輸層)
    b. 發送方根據收到ack中下一字節的序號n和接受方窗口大小m,以及目前發送字節序號x,算出還能夠發送的字節數
    發送窗口的第一個字節序號 = ack中指望的下一個字節序號

總結:
    a. 發送窗口只有收到接受端的確認,纔會移動發送窗口的左邊界
    b. 接受窗口只有在前面全部數據報都確認,纔會移動接受窗口的左邊界
    c. 應用程序能夠經過api接口更改rwnd大小;tcp協議棧在下次發送時將新窗口大小發給發送方,對端按照新窗口大小設置發送窗口大小,減緩發送速率

擁塞控制

目的:
    防止過分哦的數據流入網絡,引發路由器和鏈路的不可用

擁塞控制方式:
    慢開始
        過程:發送端初始擁塞窗口 cwnd =1,若是沒有網絡擁塞,cwnd成倍數增加(慢開始的慢指的是初始擁塞窗口=1)

        爲了防止滿開始增加速率太快,須要設置慢開始門限(ssthresh)
        a. cwnd < ssthresh 慢開始算法
        b. cwnd > ssthresh 擁塞避免算法
        c. cwnd = ssthresh 二者便可 通常爲擁塞避免算法
    擁塞避免
        過程:擁塞窗口緩慢增加,沒收到一個確認信息,cwnd + 1

        ****
        慢開始和擁塞避免:
            只要發送方判斷出現網絡擁塞(沒有收到數據報確認信息),ssthresh減半,執行慢開始算法,當cwnd = ssthresh,執行擁塞避免算法
        ****
    快重傳和快恢復
        原理:接受方收到失序的數據報立馬發出確認信息給到發哦是那個段,不用等到下次發送數據攜帶進行確認
        過程:
            a. 發送方連續收到3個失序數據報的確認信息,sshthresh立馬減半
            b. 不執行慢開始算法,cwnd= ssthresh(初始擁塞窗口大小設置爲ssthresh一半)(由於網絡有可能沒有出現擁塞),執行擁塞避免算法(加法增加),使擁塞窗口緩慢增加
相關文章
相關標籤/搜索