計算機網路(三)傳輸層—TCP四種定時器
TCP四種定時器
1) 重傳定時器
作用:保證可靠性傳輸
解決:每傳送一個報文段就會啟動重傳定時器,如果在定時器時間到後還沒收到對該報文段的確認,就重傳該報文段,並將重傳定時器復位。如果在定時器時間內收到確認則撤銷該報文段的重傳定時器。
2) 堅持定時器
作用:主要用來解決零視窗大小通知可能導致的死鎖問題。
死鎖問題:如果接收端在向傳送端傳送了零視窗報文段後不久,接收端的接收快取有了一定的儲存空間,則向傳送端傳送一個非零視窗大小的報文段,然而這個報文段在傳送過程中丟失了,傳送端沒有收到該報文段,就一直等待接收端傳送非零視窗的報文通知,而接收端並不知道報文段丟失,而是一直等待發送端傳送資料,這樣就會發生死鎖問題。
解決:TCP為每一個連線設定一個堅持定時器(持續計數器)只要TCP連線的一方收到對方的零視窗報文段,就啟動堅持定時器。若堅持定時器設定的時間到期,就傳送一個零視窗控測報文段。會有以下3種情況
1、對方收到探測報文段後,給出確認(現視窗值)如果視窗仍為零,則收到這個報文段的一方將堅持定時器值加倍並重啟。(堅持定時器最大為60s)
2、對方接收到探測報文後,給出確認,此時視窗不為零,則跳出死鎖
3、該探測報文發出後,會同時啟動 重傳定時器,如果重傳定時器時間超時,還沒收到響應,則重傳探測報文。
3) 保活定時器
作用:應對TCP連線期間,客戶端和服務端長時間無資料傳輸的情況。
問題:當建立TCP連線後,若客戶端發生故障,則伺服器不能再接收客戶端傳送的資料,而服務端不能永久的等待下去,則需要保活定時器來解決。
原理:服務端沒收一次客戶端的資料,就重新設定保活定時器,通常為2小時,如果2小時沒有收到客戶端的資料,服務端就傳送一個探測報文,以後沒間隔76秒傳送一次,連續傳送10次探測報文後仍沒有收到客戶端的相應,伺服器就認為客戶端出現故障,終止連線。
4) 2MSL定時器
2MSL定時器用來計算一個連線處於Time_wait狀態的時間,通常為2MSL(報文段壽命的兩倍)。
作用:在TCP釋放連線時,確認傳送的最後一個ACK報文能夠到達對方,並防止之前與本連線有關的由於延遲等原因而導致已失效的報文被誤判為有效。