原理:client/server傳送某個資料以後就開啟乙個計時器,在一定時間內如果沒有得到傳送資料報的ack報文,
那麼就重新傳送資料,知道傳送成功為止
超時和重傳要做到的幾點:(擁塞視窗記做cwnd,慢啟動門限記做ssthresh)
1.rtt 發包往返時間測量
首先tcp必須測量在傳送乙個帶有特別序號的位元組和接受到包含該位元組的確認之間的時間
2.rto 重傳超時時間
rto的初始化是由公式決定的,例如最初的公式,初始的值應該是1。而修正公式,初始rto應該是a+4d。
當資料正常傳輸的情況下,就會用上面的公式來更新各個資料,並重開定時器,來保證下乙個資料被順利傳輸。
要注意的是:重傳的情況下,rto不用上面的公式計算,而採用一種叫做「指數退避」的方式。
例如:當rto為1s的情況下,發生了資料重傳,就用rto=2s的定時器來重新傳輸資料,下一次用4s。
一直增加到64s為止。
3.擁塞視窗和擁塞避免演算法
擁塞視窗即為:傳送方初始化乙個報文段,隨後調整為最大報文段,而不會導致網路擁塞
接受方:通告視窗,接受資料報快取
實現過程:
1.)對乙個給定的連線,初始化cwnd(擁塞視窗)為1個報文段,通告視窗為65535個位元組
2.)tcp輸出資料的輸出不能超過cwnd和通告視窗的大小,擁塞避免是傳送方的流量控制,通告視窗是接受方快取大小
3.)當擁塞傳送時,ssthresh被設定為當前視窗大小的一半(cwnd和接受方通告視窗大小的最小值,最小為2個報文段)
如果是超時引起的擁塞,則cwnd被設定為1個報文段,執行慢啟動
4.)當新的資料被對方確認時,就增加cwnd,當cwnd小於或等於ssthresh,則進行慢啟動,否則進行擁塞避免
4.慢啟動
傳送發第一次傳送1個報文段,等待接受ack確認包,如果未超時,在傳送2個報文段,繼續等待ack確認,第3次傳送
4個報文段,第4次傳送8個報文段,第5次傳送16個報文段,此後每次線性增加1個報文段,依次類推,知道ack確認
超時5.快速重傳和快速恢復演算法
當傳送報文丟失,我們就要重傳丟失的資料文段,不用等待超時定時器的溢位,直接重傳,即為快速重傳
接下來執行的不是慢啟動演算法,而是擁塞避免演算法,這就是快速恢復演算法
6.icmp的差錯
源站抑制,主機不可達或網路不可達,造成icmp出錯
當乙個系統(路由器或主機)接收資料報的速度比其處理速度快時,可能產生這個差錯。
注意限定詞「可能」。即使乙個系統已經沒有快取並丟棄資料報,也不要求它一定要傳送源站抑制報文。
TCP超時與重傳
對每個連線,tcp管理4個不同的定時器。1.重傳定時器適用於當希望收到另一端的確認。2.堅持 persist 定時器使視窗大小資訊保持不斷流動,即使另一端關閉了其接收視窗。3.保活 keepalive 定時器可檢測到乙個空閒連線的另一端何時崩潰或重啟。4.2msl定時器測量乙個連線處於time wa...
TCP的超時與重傳
tcp提供可靠的傳輸層,使用的方法就是確認從另一端收到資料,但資料和確認可能會丟失,在傳送時設定乙個定時器解決了此問題,如果當定時器溢位時還沒有收到確認就衝傳資料。對於現實而言,關鍵在於超時和重傳的策略,如何限制超時間隔和重傳頻率。對於每個連線,tcp管理4個不同的定時器 1.重傳定時器,使用於當希...
TCP的超時與重傳
超時重傳是tcp協議保證資料可靠性的乙個重要機制,其原理是在傳送某乙個資料之後就開啟乙個計時器,在一定時間內如果沒有得到傳送的資料報的ack報文,那麼就重新傳送資料,直到傳送成功為止。超時間隔長度的設計是超時 重傳機制的核心部分,顯然,超時間隔必須大於tcp連線的往返時延 rtt 即從乙個報文段發出...