自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

tcp四種定時器

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
定時器在TCP可靠傳輸?shù)倪^程中起著舉足輕重的作用。TCP在建立連接之后可能(?;頺eep-alive定時器是可選的)會 啟動四個定時器。

定時器在TCP可靠傳輸?shù)倪^程中起著舉足輕重的作用。TCP在建立連接之后可能(?;頺eep-alive定時器是可選的)會 啟動四個定時器。

TCP使用四種定時器(Timer,也稱為“計時器”):

重傳計時器:Retransmission Timer

堅持計時器:Persistent Timer

?;钣嫊r器:Keeplive Timer

時間等待計時器:Time_Wait Timer。

(1)重傳計時器:Retransmission Timer

重傳定時器:為了控制丟失的報文段或丟棄的報文段,也就是對報文段確認(rèn)的等待時間。當(dāng)TCP發(fā)送報文段時,就創(chuàng)建這個特定報文段的重傳計時器,可能發(fā)生兩種情況:若在計時器超時之前收到對報文段的確認(rèn),則撤銷計時器;若在收到對特定報文段的確認(rèn)之前計時器超時,則重傳該報文,并把計時器復(fù)位;

重傳時間=2*RTT;

RTT的值應(yīng)該動態(tài)計算。常用的公式是:RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上當(dāng)前RTT值的10%.

Karn算法:對重傳報文,在計算新的RTT時,不考慮重傳報文的RTT。因為無法推理出:發(fā)送端所收到的確認(rèn)是對上一次報文段的確認(rèn)還是對重傳報文段的確認(rèn)。干脆不計入。

(2)堅持計時器:persistent timer

專門為對付零窗口通知而設(shè)立的。

當(dāng)發(fā)送端收到零窗口的確認(rèn)時,就啟動堅持計時器,當(dāng)堅持計時器截止期到時,發(fā)送端TCP就發(fā)送一個特殊的報文段,叫探測報文段,這個報文段只有一個字節(jié)的數(shù)據(jù)。探測報文段有序號,但序號永遠不需要確認(rèn),甚至在計算對其他部分?jǐn)?shù)據(jù)的確認(rèn)時這個序號也被忽略。探測報文段提醒接收端TCP,確認(rèn)已丟失,必須重傳。

堅持計時器的截止期設(shè)置為重傳時間的值,但若沒有收到從接收端來的響應(yīng),則發(fā)送另一個探測報文段,并將堅持計時器的值加倍和并復(fù)位,發(fā)送端繼續(xù)發(fā)送探測報文段,將堅持計時器的值加倍和復(fù)位,知道這個值增大到閾值為止(通常為60秒)。之后,發(fā)送端每隔60s就發(fā)送一個報文段,直到窗口重新打開為止;

補充:

堅持定時器的原理是簡單的,當(dāng)TCP服務(wù)器收到了客戶端的0滑動窗口報文的時候,就啟動一個定時器來計時,并在定時器溢出的時候向向客戶端查詢窗口是否已經(jīng)增大,如果得到非零的窗口就重新開始發(fā)送數(shù)據(jù),如果得到0窗口就再開一個新的定時器準(zhǔn)備下一次查詢。通過觀察可以得知,TCP的堅持定時器使用1,2,4,8,16……64秒這樣的普通指數(shù)退避序列來作為每一次的溢出時間。

糊涂窗口綜合癥

TCP的窗口協(xié)議,會引起一種通常叫做糊涂窗口綜合癥的問題,具體表現(xiàn)為,當(dāng)客戶端通告一個小的非零窗口時,服務(wù)器立刻發(fā)送小數(shù)據(jù)給客戶端并充滿其緩沖區(qū),一來二去就會讓網(wǎng)絡(luò)中充滿小TCP數(shù)據(jù)報,從而影響網(wǎng)絡(luò)利用率。對于發(fā)送方和接收端的這種糊涂行為。

再次補充:

TCP通過讓接收方指明希望從發(fā)送方接收的數(shù)據(jù)字節(jié)數(shù)(即窗口大小)來進行流量控制。如果窗口大小為 0會發(fā)生什么情況呢?這將有效地阻止發(fā)送方傳送數(shù)據(jù),直到窗口變?yōu)榉?為止。

TCP不對ACK報文段進行確認(rèn), TCP只確認(rèn)那些包含有數(shù)據(jù)的ACK報文段。

如果一個確認(rèn)丟失了(這個確認(rèn)是”接收方“向”發(fā)送方“發(fā)送的ACK,通知”發(fā)送方“自己的窗口已經(jīng)非0了),則雙方就有可能因為等待對方而使連接終止:接收方等待接收數(shù)據(jù)(因為它已經(jīng)向發(fā)送方通告了一個非 0的窗口),而發(fā)送方在等待允許它繼續(xù)發(fā)送數(shù)據(jù)的窗口更新。為防止這種死鎖情況的發(fā)生,發(fā)送方使用一個堅持定時器 (persist timer)來周期性地向接收方查詢,以便發(fā)現(xiàn)窗口是否已增大。這些從發(fā)送方發(fā)出的報文段稱為窗口探查 (window probe)。

(3)?;钣嫊r器:keeplive timer

每當(dāng)服務(wù)器收到客戶的信息,就將keeplive timer復(fù)位,超時通常設(shè)置2小時,若服務(wù)器超過2小時還沒有收到來自客戶的信息,就發(fā)送探測報文段,若發(fā)送了10個探測報文段(沒75秒發(fā)送一個)還沒收到響應(yīng),則終止連接。

補充:

?;疃〞r器更加的簡單,還記得FTP或者Http服務(wù)器都有Sesstion Time機制么?因為TCP是面向連接的,所以就會出現(xiàn)只連接不傳送數(shù)據(jù)的“半開放連接”,服務(wù)器當(dāng)然要檢測到這種連接并且在某些情況下釋放這種連接,這就是?;疃〞r器的作用。其時限根據(jù)服務(wù)器的實現(xiàn)不同而不通。另外要提到的是,當(dāng)其中一端如果崩潰并重新啟動的情況下,如果收到該端“前生”的?;钐讲欤瑒t要發(fā)送一個RST數(shù)據(jù)報文幫助另一端結(jié)束連接。

(4)時間等待計時器:Time_Wait Timer

在連接終止期使用,當(dāng)TCP關(guān)閉連接時,并不認(rèn)為這個連接就真正關(guān)閉了,在時間等待期間,連接還處于一種中間過度狀態(tài)。這樣就可以時重復(fù)的fin報文段在到達終點后被丟棄,這個計時器的值通常設(shè)置為一格報文段壽命期望值的兩倍。

補充:

2MSL定時器:MSL是報文段做大生存時間(Maximum Segment Lifetime),設(shè)置這個定時器有兩個目的:

其一是為了測量連接處于TIME_WAIT狀態(tài)的時間.這樣可以讓TCP再次發(fā)送最后的ACK以防止這個ACK丟失(如果丟失,另一端會重傳FIN)。

其二,為允許老的重復(fù)分節(jié)在網(wǎng)絡(luò)中消逝。具體可以解釋為,如果一個TCP連接在斷開之前有迷途分節(jié)尚未消逝,在斷開該TCP連接之后立刻重啟一個同樣的連接(雙方的IP地址和端口port相同),這時之前的迷途的老分節(jié)可能對新的新的TCP連接接收,從而造成未定義的錯誤。為了避免這種情況,TCP規(guī)定在TIME_WAIT狀態(tài),不能啟動一個連接的化身。既然TIME_WAIT狀態(tài)維持2MSL,這就保證了一個連接上的分組及其應(yīng)該在 2MSL內(nèi)都會消失。

責(zé)任編輯:張存 來源: 中國it實驗室
相關(guān)推薦

2014-12-09 16:30:18

TCP定時器

2015-10-15 09:38:48

TCP網(wǎng)絡(luò)協(xié)議定時器

2023-08-02 09:26:03

軟件定時器鴻蒙

2025-03-12 09:54:02

2018-12-03 12:20:52

Systemd定時器Linux

2009-06-15 15:02:48

Spring定時器

2010-07-28 15:56:22

FlexTimer定時

2009-11-11 10:14:10

linux定時器操作系統(tǒng)

2021-10-24 08:37:18

網(wǎng)絡(luò)監(jiān)控網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)

2009-12-10 14:16:24

2016-09-12 14:07:14

Android 定時器

2011-02-23 10:20:45

2009-04-12 08:51:50

Symbian諾基亞移動OS

2021-03-31 08:33:17

SysTick定時器SysTick定時器

2023-01-10 13:53:21

Linux定時器

2022-11-02 11:40:16

Flowable定時器流程

2012-06-14 09:37:52

2020-08-03 15:41:02

JavaScript開發(fā)技術(shù)

2010-08-05 13:44:12

Flex布局

2011-11-24 16:34:39

Java
點贊
收藏

51CTO技術(shù)棧公眾號