「計算機基礎知識是咱們面試時必跨的一道坎,其中又以HTTP,TCP等基礎知識居多,TCP的擁塞機制是熱門問題,下面跟你們一塊兒分享一下 TCP擁塞機制 以及 TCP如何保證包的順序傳輸面試
」
TCP的擁塞機制解決的是網絡延時忽然增長,觸發大量的數據重傳,致使網絡負擔加劇問題算法
TCP的擁塞控制主要依賴於一個 擁塞窗口(cwnd) 來控制markdown
窗口值的大小表明着可以發送出去的但尚未收到ACK(Acknowledgement確認字符)的最大數據報文段,顯然窗口越大那麼數據發送的速度也就越快,可是也越可能使得網絡出現擁塞網絡
一、慢啓動ssh
當新建鏈接時,cwnd 初始化爲1個最大 報文段(MSS) 大小,發送端開始按照擁塞窗口大小發送數據,每當有一個報文段被確認,cwnd 就增長1個MSS大小。這樣 cwnd 的值就隨着網絡往返時間(Round Trip Time,RTT)呈指數級增加。 開始 ---> cwnd = 1大數據
通過1個RTT後 ---> cwnd = 2*1 = 2spa
通過2個RTT後 ---> cwnd = 2*2= 4code
通過3個RTT後 ---> cwnd = 4*2 = 8orm
二、擁塞避免ip
TCP是如何避免網絡擁塞的呢?
當 擁塞窗口cwnd 達到一個閾值(慢啓動門限(ssthresh))時,窗口大小再也不呈指數上升,而是以線性上升。
此時當窗口中全部的報文段都被確認時,cwnd的大小加1,cwnd的值就隨着RTT(往返時延) 開始線性增長,這樣就能夠避免增加過快致使網絡擁塞。並由此慢慢地增長調整到網絡的最佳值
TCP認爲網絡擁塞的主要依據是它重傳了一個報文段
三、快速重傳
當發送方收到3個duplicate ACK(冗餘ACK)時就開啓重傳,而不用等到 RTO(重傳定時器) 超時,具體重傳操做以下:
實際上,當 重傳定時器(RTO) 超時,且尚未獲得數據確認,TCP就會對該報文段進行重傳,具體重傳操做以下:
四、快速恢復
當發送方至少收到了3個Duplicated Acks,TCP認爲網絡也不那麼糟糕,能夠快速恢復。
以上就是TCP擁塞機制總體核心內容
發送主機每次發送數據時,TCP就給每一個數據包分配一個序列號而且在一個特定的時間內等待接收主機對分配的這個序列號進行確認,
若是發送主機在一個特定時間內沒有收到接收主機的確認,則發送主機會重傳此數據包。
接收主機利用序列號對接收的數據進行確認,以便檢測對方發送的數據是否有丟失或者亂序等,接收主機一旦收到已經順序化的數據,它就將這些數據按正確的順序重組成數據流並傳遞到高層進行處理。
歡迎你們關注公衆號 「大叔說碼」 獲取更多幹貨