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