TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
TCP一共有四個(gè)主要的定時(shí)器,前面已經(jīng)講到了一個(gè)--超時(shí)定時(shí)器--是TCP里面最復(fù)雜的一個(gè),另外的三個(gè)是:
其中堅(jiān)持定時(shí)器用于防止通告窗口為0以后雙方互相等待死鎖的情況;而保活定時(shí)器則用于處理半開放連接
1.堅(jiān)持定時(shí)器
堅(jiān)持定時(shí)器的原理是簡單的,當(dāng)TCP服務(wù)器收到了客戶端的0滑動(dòng)窗口報(bào)文的時(shí)候,就啟動(dòng)一個(gè)定時(shí)器來計(jì)時(shí),并在定時(shí)器溢出的時(shí)候向向客戶端查詢窗口是否已經(jīng)增大,如果得到非零的窗口就重新開始發(fā)送數(shù)據(jù),如果得到0窗口就再開一個(gè)新的定時(shí)器準(zhǔn)備下一次查詢。通過觀察可以得知,TCP的堅(jiān)持定時(shí)器使用1,2,4,8,16……64秒這樣的普通指數(shù)退避序列來作為每一次的溢出時(shí)間。
糊涂窗口綜合癥
TCP的窗口協(xié)議,會(huì)引起一種通常叫做糊涂窗口綜合癥的問題,具體表現(xiàn)為,當(dāng)客戶端通告一個(gè)小的非零窗口時(shí),服務(wù)器立刻發(fā)送小數(shù)據(jù)給客戶端并充滿其緩沖區(qū),一來二去就會(huì)讓網(wǎng)絡(luò)中充滿小TCP數(shù)據(jù)報(bào),從而影響網(wǎng)絡(luò)利用率。對于發(fā)送方和接收端的這種糊涂行為。TCP給出了一些建議(或者是規(guī)定)。
除非窗口可以增加一個(gè)報(bào)文段大小(也就是將要接收的MSS)或者可以增加接收方緩存空間
的一半,不論實(shí)際有多少。
以發(fā)送一個(gè)滿長度的報(bào)文段; ( b )可以發(fā)送至少是接收方通告窗口大小一半的報(bào)文段; ( c )可以
發(fā)送任何數(shù)據(jù)并且不希望接收ACK(也就是說,我們沒有還未被確認(rèn)的數(shù)據(jù))或者該連接上
不能使用Nagle算法。
ok,現(xiàn)在我們回憶一下,可以發(fā)現(xiàn)TCP的很多規(guī)定都是為了在一次傳送中發(fā)送盡量多的數(shù)據(jù),例如捎帶ACK數(shù)據(jù)報(bào)文的策略,Nagle算法,重傳時(shí)發(fā)送包含原數(shù)據(jù)報(bào)文的策略,等等。
2.?;疃〞r(shí)器
?;疃〞r(shí)器更加的簡單,還記得FTP或者Http服務(wù)器都有Sesstion Time機(jī)制么?因?yàn)門CP是面向連接的,所以就會(huì)出現(xiàn)只連接不傳送數(shù)據(jù)的“半開放連接”,服務(wù)器當(dāng)然要檢測到這種連接并且在某些情況下釋放這種連接,這就是保活定時(shí)器的作用。其時(shí)限根據(jù)服務(wù)器的實(shí)現(xiàn)不同而不通。另外要提到的是,當(dāng)其中一端如果崩潰并重新啟動(dòng)的情況下,如果收到該端“前生”的?;钐讲?#xff0c;則要發(fā)送一個(gè)RST數(shù)據(jù)報(bào)文幫助另一端結(jié)束連接。
轉(zhuǎn)載于:https://www.cnblogs.com/android-blogs/p/5477786.html
總結(jié)
以上是生活随笔為你收集整理的TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: batch 批处理获取系统时间
- 下一篇: POJ 1118 求平面上最多x点共线