精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

動手學習TCP系列之4種定時器

網絡 網絡管理
堅持定時器(persist)使窗口大小信息保持不斷流動,即使另一端關閉了其接收窗口。?;疃〞r器(keepalive)可檢測到一個空閑連接的另一端何時崩潰或重啟。

上一篇中介紹了TCP數據傳輸中涉及的一些基本知識點。本文讓我們看看TCP中的4種定時器。

TCP定時器

對于每個TCP連接,TCP管理4個不同的定時器,下面看看對4種定時器的簡單介紹。

重傳定時器使用于當希望收到另一端的確認。

該定時器是用來決定超時和重傳的。

由于網絡環境的易變性,該定時器時間長度肯定不是固定值;該定時器時間長度的設置依據是RTT(Round Trip Time),根據網絡環境的變化,TCP會根據這些變化并相應地改變超時時間。

堅持定時器(persist)使窗口大小信息保持不斷流動,即使另一端關閉了其接收窗口。

保活定時器(keepalive)可檢測到一個空閑連接的另一端何時崩潰或重啟。

2MSL定時器測量一個連接處于TIME_WAIT狀態的時間。

參見"動手學習TCP:TCP特殊狀態"中對TIME_WAIT的介紹

下面就介紹一下堅持定時器和?;疃〞r器。

堅持定時器

TCP通過讓接收方指明希望從發送方接收的數據字節數(即窗口大小)來進行流量控制。

如果窗口大小為 0會發生什么情況呢?這將有效地阻止發送方傳送數據,直到窗口變為非0為止。

 

但是,由于TCP不對ACK報文段進行確認(TCP只確認那些包含有數據的ACK報文段),如果上圖中通知發送方窗口大于0的[ACK]丟失了,則雙方就有可能因為等待對方而使連接死鎖。接收方等待接收數據(因為它已經向發送方通告了一個非0的窗口),而發送方在等待允許它繼續發送數據的窗口更新。

為防止這種死鎖情況的發生,發送方使用一個堅持定時器 (persist timer)來周期性地向接收方查詢,以便發現窗口是否已增大。這些從發送方發出的報文段稱為窗口探查(window probe)。

實驗代碼

下面通過Python socket實現一個快的發送端和慢的接收端,然后通過Wireshark抓包來看看窗口更新通知和窗口探查。

客戶端代碼如下,用戶輸入字符,客戶端將用戶輸入重復1000次然后發送給服務端,通過這種簡單的重復來模擬一個快的發送端: 

from socket import *
import time
HOST = "192.168.56.102"
PORT = 8081
ADDR = (HOST, PORT)
client = socket(AF_INET, SOCK_STREAM)
client.connect(ADDR)
while True:
input = raw_input()
if input:
client.send(input*1000)
else:
client.close()
break

對于服務端,通過制定一個小的接收BUFFER,以及一個延時來模擬一個慢的接收端:

import sys
from socket import *
import time
HOST = "192.168.56.102"
PORT = 8081
BUFSIZ = 100
ADDR = (HOST, PORT)
server = socket(AF_INET, SOCK_STREAM)
print "Socket created"
try:
server.bind(ADDR)
except error, msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
server.listen(1)
print 'Socket now listening'
conn, addr = server.accept()
while True:
time.sleep(3)
try:
data = conn.recv(BUFSIZ)
if data:
print data
else:
conn.close()
break
except Exception, e:
print e
break

#p#

在開始運行代碼之前還需要進行一些設置,默認情況下接收端的window size很大,實驗中很難耗盡。

所以,為了看到實驗效果,需要對系統進行一些設置。打開虛擬機中的注冊表設置"regedit",然后找到選項"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters",設置"TcpWindowSize"為4096Bytes。

注意,實驗結束后,一定要恢復"TcpWindowSize"的原始設置,不然可能會影響正常的網絡訪問。

關于更多TCP相關的注冊表設置,可以參考這個鏈接。

 

運行效果

下面運行代碼,分別輸入兩個字符"a"和"b",通過Wireshark可以看到,在進行連接確認的時候,接收端已經給出了我們跟新后的可用窗口4096Bytes。

經過***輪發送后,接收方的window size減少了1000;當兩個數據包都處理完成后,window size又恢復到了4096。

 

第二輪測試中,發送端發送"1234567890"十個字符,從接收端的***一個[ACK]包可以看到,***接收端window size為1393,此次傳輸到此結束。

過了一段時間,當慢接收端處理完數據之后,接收端會發送窗口更新,通知發送端可以窗口為4096Bytes。

 

第三輪測試中,發送端發送更多的字符"1234567890987654321",這次接收端的可用窗口就被耗盡了,然后接收端發送一個[TCP ZeroWindow]的通知;這時,發送端停止發送,然后通過發送窗口探查。

當接收端有可用窗口的時候,接收端會發送窗口更新,數據傳輸繼續。

注意,[TCP ZeroWindowProbe]和[TCP ZeroWindowProbeAck]的Seq和Ack號。

 

糊涂窗口綜合癥

基于窗口的流量控制方案,會導致一種"糊涂窗口綜合癥SWS(Silly Window Syndrome)"的狀況。

當發送端應用進程產生數據很慢、或接收端應用進程處理接收緩沖區數據很慢,或二者兼而有之;就會使應用進程間傳送的報文段很小,特別是有效載荷很小。 極端情況下,有效載荷可能只有1個字節;而傳輸開銷有40字節(20字節的IP頭+20字節的TCP頭),加上物理幀頭后,有效的數據傳輸比例就更小了,這就浪費了網絡帶寬,表現為糊涂窗口綜合癥。

糊涂窗口綜合癥可能由接收端或者發送端引起,不同的起因需要不同的解決方案,更多內容可以參考此處。

保活定時器

跟據TCP協議,當發送端和接收端都不主動釋放一個TCP連接的時候,該連接將一直保持。即使一端出現了故障,由于另一端沒有收到任何通知,TCP連接也會一直保持,這樣就會造成TCP連接資源的浪費。

TCP keepalive

為了解決這個問題,大多數的實現中都是使服務器設置?;钣嫊r器。

保活計時器通常設置為2小時。若服務器過了2小時還沒有收到客戶的信息,它就發送探測報文段。若發送了10個探測報文段(每一個相隔75秒)還沒有響應,就假定客戶出了故障,因而就終止該連接。

在Linux系統中,有三個跟TCP keepalive相關的參數:

tcp_keepalive_intvl (integer; default: 75; since Linux 2.4)
The number of seconds between TCP keep-alive probes.
tcp_keepalive_probes (integer; default: 9; since Linux 2.2)
The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no
response is obtained from the other end.
tcp_keepalive_time (integer; default: 7200; since Linux 2.2)
The number of seconds a connection needs to be idle before TCP begins sending out keep-alive probes. Keep-
alives are sent only when the SO_KEEPALIVE socket option is enabled. The default value is 7200 seconds (2
hours). An idle connection is terminated after approximately an additional 11 minutes (9 probes an interval
of 75 seconds apart) when keep-alive is enabled.

在Socket編程中,可以通過設置"TCP_KEEPCNT","TCP_KEEPIDLE"和"TCP_KEEPINTVL"選項來更改上述的三個系統參數:

from socket import *
import time
HOST = "192.168.56.102"
PORT = 8081
ADDR = (HOST, PORT)
client = socket(AF_INET, SOCK_STREAM)
#TCP_KEEPCNT overwrite tcp_keepalive_probes,默認9(次)
#TCP_KEEPIDLE overwrite tcp_keepalive_time,默認7200(秒)
#TCP_KEEPINTVL overwrite tcp_keepalive_intvl,默認75(秒)
client.setsockopt(SOL_SOCKET, SO_KEEPALIVE, 1)
client.setsockopt(SOL_TCP, TCP_KEEPCNT, 5)
client.setsockopt(SOL_TCP, TCP_KEEPINTVL, 5)
client.setsockopt(SOL_TCP, TCP_KEEPIDLE, 10)
client.connect(ADDR)
while True:
input = raw_input()
if input:
client.send(input*1000)
else:
client.close()
break

#p#

TCP keepalive 包

下面是一段網絡上抓取的TCP keepalive包,接下來看看TCP keepalive包的內容。

 

根據規范,TCP keepalive?;畎粦摪瑪祿?,但也可以包含1個無意義的字節,比如0x0。

TCP保活探測包Seq號是將前一個TCP包的Seq號減去1。

當然,也有人認為保活定時器不合理,給出了不使用?;疃〞r器的理由:

在出現短暫差錯的情況下,這可能會使一個非常好的連接釋放掉

耗費了不必要的帶寬

在按分組計費的情況下會在互聯網上花掉更多的錢

HTTP Keep-Alive

在HTTP早期 ,每個HTTP請求都要求打開一個TCP連接,并且使用一次之后就斷開這個TCP連接。

這種方式會帶來一些問題,尤其是包含圖片,JS,CSS的復雜網頁,一個完整的頁面需要很多個請求才能完成,如果每一個HTTP請求都需要新建并斷開一個TCP,這樣就會消耗很多服務器的TCP連接資源。

為了緩解這個問題,HTTP 1.1中出現了Keep-Alive這個特性,開啟HTTP Keep-Alive之后,能復用已有的TCP鏈接,當前一個請求已經響應完畢,服務器端沒有立即關閉TCP鏈接,而是等待一段時間接收瀏覽器端可能發送過來的第二個請求,開啟Keep-Alive能節省的TCP建立和關閉的消耗。

 

下面看看我訪問一個網頁后,通過Wireshark抓取的數據包。

HTTP/1.1之后默認開啟Keep-Alive, 在HTTP的頭域中增加Connection選項。當設置為"Connection:keep-alive"表示開啟,設置為"Connection:close"表示關閉。

在上圖中,服務器經過了大概2分鐘的時間,然后發出關閉TCP連接的請求。

現在,基本所有的應用服務器都支持設置打開Keep-Alive,以及Keep-Alive timeout的設置。

總結

本文介紹了TCP中的4種定時器,并詳細的介紹了堅持定時器和保活定時器。

在?;疃〞r器的介紹中,對比介紹了HTTP的Keep-Alive特性。HTTP協議的Keep-Alive意圖在于連接復用;TCP的keepalive機制在于?;?、心跳,檢測連接錯誤,兩者的作用完全不同。

因為TCP keepalive不能滿足實時性的要求,很多應用程序會在應用層實現heart beat(心跳包)來確認TCP連接的可用性。

責任編輯:何妍 來源: 博客園
相關推薦

2013-07-29 10:10:40

TCP協議TCP定時器TCP

2015-10-08 14:03:01

TCP網絡協議

2014-12-09 16:30:18

TCP定時器

2015-10-13 15:09:31

2015-10-09 13:15:03

TCP網絡協議

2015-10-14 09:44:55

TCP網絡協議數據傳輸

2015-10-12 08:33:06

TCP網絡協議服務端

2015-10-10 09:51:51

TCP網絡協議客戶端

2009-04-12 08:51:50

Symbian諾基亞移動OS

2023-08-02 09:26:03

軟件定時器鴻蒙

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定時器操作系統

2025-09-30 01:20:00

PHPGo定時器

2016-09-12 14:07:14

Android 定時器

2011-02-23 10:20:45

2021-03-31 08:33:17

SysTick定時器SysTick定時器

2023-01-10 13:53:21

Linux定時器

2022-11-02 11:40:16

Flowable定時器流程
點贊
收藏

51CTO技術棧公眾號

国产精品无码在线| 9191国产视频| 97精品人妻一区二区三区| 亚洲视频在线免费| 亚洲国产成人久久| 欧美私人情侣网站| 麻豆视频网站在线观看| 成人精品高清在线| 国产精品久久久久久久久久三级| 中日韩一级黄色片| 欧美深夜视频| 在线观看视频欧美| 日韩欧美精品免费| 3p在线观看| a美女胸又www黄视频久久| 国产精品视频白浆免费视频| 懂色av.com| 久久影院一区| 日韩精品丝袜在线| 九九热视频免费| 蜜臀国产一区| 亚洲国产欧美另类丝袜| 色噜噜色狠狠狠狠狠综合色一| 精品国产av鲁一鲁一区| 男人的天堂亚洲一区| 欧美国产视频日韩| 中文字幕第24页| 琪琪久久久久日韩精品| 日韩欧美在线网站| 国产 porn| 波多野结衣久久精品| 亚洲最新视频在线观看| 宅男在线精品国产免费观看| 欧美在线一卡| 成人激情小说乱人伦| 成人免费午夜电影| 中文在线观看av| 久久久久国产精品午夜一区| 亚洲 日韩 国产第一| 欧美日韩中文字幕在线观看| 99久久久久国产精品| 一区二区三区四区视频| 久久只有这里有精品| 成人高潮a毛片免费观看网站| 91精品一区二区三区久久久久久 | 久久亚洲色图| 97涩涩爰在线观看亚洲| 久久久精品99| 亚洲国产精品日韩专区av有中文| 91麻豆精品国产91久久久更新时间 | 日韩中文欧美| 亚洲精品视频免费在线观看| 国偷自产av一区二区三区麻豆| 高清欧美日韩| 在线中文字幕一区| 欧美性大战久久久久xxx| 黄页网站在线| 亚洲一区二三区| 少妇高潮流白浆| 91.xxx.高清在线| 国产午夜精品理论片a级大结局 | 欧美激情va永久在线播放| 亚洲aaa视频| 久久中文视频| 中文字幕成人精品久久不卡| 国产精品探花一区二区在线观看| 久久久免费毛片| 日韩美女视频在线| 久久久久亚洲av无码麻豆| 国产一区精品福利| 制服.丝袜.亚洲.另类.中文| 亚洲 欧美 另类人妖| 嫩草伊人久久精品少妇av杨幂| 欧美性xxxx极品hd欧美风情| 免费看又黄又无码的网站| mm视频在线视频| 亚洲va国产天堂va久久en| 国产精品一线二线三线| 福利小视频在线| 亚洲va欧美va人人爽午夜| www污在线观看| sm性调教片在线观看| 偷拍一区二区三区四区| 美女av免费在线观看| 成人勉费视频| 欧洲精品一区二区三区在线观看| 午夜免费精品视频| 99精品美女视频在线观看热舞| 91精品国产综合久久婷婷香蕉 | 人妻av无码专区| 岛国在线视频网站| 色域天天综合网| 青青草原av在线播放| 成人国产激情在线| 91精品国产欧美一区二区18| 无码人妻一区二区三区免费n鬼沢| 岛国精品一区| 一本色道久久综合狠狠躁篇的优点| 美国黑人一级大黄| 欧美在线1区| 97婷婷大伊香蕉精品视频| 日韩av大片在线观看| 免费精品99久久国产综合精品| 91精品免费看| 香蕉视频网站在线| 久久久久久久综合日本| 日本一区二区免费高清视频| 高清视频在线观看三级| 在线免费观看日本一区| 99久久99精品| 欧美电影完整版在线观看| 亚洲一区二区久久久| 人人澡人人澡人人看| 亚洲美女啪啪| 国产欧美va欧美va香蕉在| av免费在线不卡| 99re这里只有精品视频首页| 水蜜桃一区二区| 欧美高清另类hdvideosexjaⅴ| 精品美女永久免费视频| 亚洲精品免费一区亚洲精品免费精品一区 | 一区二区三区视频播放| 一区二区三区视频免费| 日本熟伦人妇xxxx| 精品一区二区影视| 久久99蜜桃综合影院免费观看| 成人高清在线| 亚洲国产精品久久久久秋霞影院| 久久精品免费网站| **爰片久久毛片| 精品国偷自产在线| 国产精品国产三级国产专区52 | 国产伦精品一区二区三区精品| 成人影视亚洲图片在线| 97精品伊人久久久大香线蕉| 一区二区三区免费观看视频| 91视频一区二区三区| 影音先锋成人资源网站| 国产国产一区| 亚洲日本成人女熟在线观看| 国产午夜免费视频| 精品一区二区三区久久久| 欧美成人dvd在线视频| 欧美精品videossex少妇| 欧美日韩另类国产亚洲欧美一级| 中文字幕乱视频| 黄色免费成人| 96国产粉嫩美女| 亚洲成人影院麻豆| 色婷婷精品大在线视频| 中文字幕狠狠干| 夜夜嗨一区二区三区| www日韩av| 国产黄色小视频在线| 欧美日韩一区久久| 精品亚洲aⅴ无码一区二区三区| 99精品国产在热久久婷婷| av一区二区三区免费| 午夜不卡视频| 欧美日韩国产天堂| jizz18女人高潮| 免费黄网站欧美| 亚洲欧洲日本国产| 精品自拍视频| 精品国产一区久久久| 一级特黄aa大片| 日韩一区欧美一区| 人人爽人人爽av| 不卡一区2区| 91在线国产电影| 在线xxxx| 亚洲国产小视频在线观看| 国产成人精品片| 99国产欧美另类久久久精品| 国产v片免费观看| 欧美黑人巨大videos精品| 欧美亚洲另类制服自拍| 日韩av资源站| 欧美亚洲一区二区在线观看| 任我爽在线视频| 国产精品一级在线| 一卡二卡三卡视频| 人人精品视频| 国产精品96久久久久久又黄又硬| 成人网视频在线观看| 欧美在线观看一区| 波多野结衣不卡视频| 成人久久18免费网站麻豆| 男人日女人下面视频| 妖精一区二区三区精品视频 | 日本一区二区三区四区五区六区| 日韩不卡在线视频| 97色在线观看免费视频| 成人三级黄色免费网站| 日韩欧美在线综合网| 日韩精品久久久久久久| 欧美激情在线一区二区| 国产伦理在线观看| 美女爽到呻吟久久久久| 亚洲日本无吗高清不卡| 亚洲2区在线| 91成人免费观看网站| 成人在线观看黄色| 精品少妇一区二区三区在线播放| 欧美特黄aaaaaa| 亚洲国产成人在线| www.四虎在线| 麻豆精品在线播放| 男人添女人下部高潮视频在观看| 精品国产乱码久久久久久果冻传媒 | 少妇高潮一区二区三区喷水| 成人动漫av在线| 国产又大又黄又猛| 亚洲黄色三级| 正在播放亚洲| 日韩深夜福利| 91网在线免费观看| 四虎影视4hu4虎成人| 欧美精品亚州精品| 青青影院在线观看| 亚洲免费av网址| 精品欧美在线观看| 欧美日韩一区二区三区不卡| 日本少妇bbwbbw精品| 亚洲同性gay激情无套| 成年人在线观看av| 国产精品一区专区| av视屏在线播放| 国产精品久久国产愉拍| 成人手机在线播放| 久久国产成人精品| 久草一区二区| 综合中文字幕| 91午夜在线播放| 蜜桃精品在线| 555www成人网| av在线播放国产| 久久久av亚洲男天堂| 黄色电影免费在线看| 亚洲第一av网| 国产成人精品a视频| 欧美日韩一区二区电影| 日韩久久中文字幕| 亚洲大片精品永久免费| 青娱乐国产在线视频| 国产精品护士白丝一区av| 超碰97在线资源站| 91麻豆精品一区二区三区| 奇米777第四色| 粉嫩一区二区三区性色av| www.欧美激情.com| 久久99国产精品麻豆| 中文字幕在线导航| 久久精品盗摄| 黄色高清无遮挡| 亚洲专区欧美专区| 国产精品无码专区av在线播放| 国产精品免费看| 香港三级韩国三级日本三级| 亚洲精品麻豆| 91黄色在线看| 一区视频在线| 精品人妻少妇一区二区| 亚洲高清网站| 日韩人妻无码精品久久久不卡| 一本久道久久综合狠狠爱| 欧美黑人经典片免费观看| 亚洲激情女人| 妞干网在线视频观看| 亚洲一区二区毛片| 国产a视频免费观看| 日本视频一区二区三区| 欧美一级裸体视频| 青青草国产精品97视觉盛宴| 欧美一级黄色片视频| 免费观看成人鲁鲁鲁鲁鲁视频| 男女视频在线看| 国产在线一区观看| 国产chinesehd精品露脸| 成人美女视频在线观看| 久久久久亚洲AV成人无码国产| 91免费观看视频| 69视频在线观看免费| 国产三级一区二区| 校园春色 亚洲| 精品久久久免费| 久久这里只有精品9| 7777精品伊人久久久大香线蕉最新版| av中文字幕播放| 精品精品国产高清a毛片牛牛 | 国产福利电影一区二区三区| 欧美xxxx日本和非洲| 91视频.com| 青青青视频在线免费观看| 欧美国产禁国产网站cc| 黄色裸体一级片| 亚洲一区二区三区视频在线播放 | 好吊色视频一区二区三区| 久久久久久久久97黄色工厂| 久久午夜精品视频| 伊人色综合久久天天| 日韩不卡在线播放| 欧美精品一二三四| 亚洲精品97久久中文字幕| 一本色道久久综合狠狠躁篇的优点| 成人看av片| 日本不卡免费高清视频| 高清一区二区| 久久精品国产一区二区三区日韩 | 亚洲自啪免费| 中国特级黄色片| 国产拍揄自揄精品视频麻豆| 欧美精品一区二区成人| 在线国产亚洲欧美| 国产浮力第一页| 国产亚洲成精品久久| 四虎影院观看视频在线观看 | 免费观看一区二区三区毛片 | 日本高清久久久| www激情久久| 人妻少妇精品一区二区三区| 91福利精品视频| 熟妇高潮一区二区三区| 国产一区二区精品丝袜| 亚洲欧美一区二区三区| 91偷拍精品一区二区三区| 不卡在线一区| 99色精品视频| 成人国产视频在线观看| 97在线观看免费高| 欧美日韩国产a| 青青久草在线| 国内久久久精品| 看亚洲a级一级毛片| 亚洲成色最大综合在线| 一本久道久久综合狠狠爱| 天堂va欧美va亚洲va老司机| 久久综合久久99| 国产女同在线观看| 制服丝袜成人动漫| 免费a在线观看| 久久久视频在线| 日韩精品中文字幕一区二区 | 午夜精品影院| 超碰成人在线播放| 欧美韩国一区二区| av黄色在线播放| 日韩激情片免费| 牛牛精品在线视频| 国产欧美一区二区在线播放| 欧美三级网页| 手机看片国产精品| 亚洲男同性视频| 99热这里只有精品9| 久久久av亚洲男天堂| 久久91视频| 熟女熟妇伦久久影院毛片一区二区| 久久精品国产亚洲高清剧情介绍 | 怡红院成人在线| 国产乱码精品一区二区三区日韩精品| 欧美视频亚洲视频| 无码人妻少妇色欲av一区二区| 亚洲日本一区二区| 国产美女主播在线观看| 久久亚洲精品视频| 免费观看性欧美大片无片| 欧美大片免费播放| 国产99精品在线观看| 99久热在线精品996热是什么| 日韩成人网免费视频| 中文字幕资源网在线观看免费 | 亚洲欧美国产另类| 韩日一区二区| 中文字幕一区二区三区在线乱码| 精品一区二区三区视频在线观看| 国产精品 欧美激情| 日韩一区二区中文字幕| av在线小说| 欧美精品人人做人人爱视频| 国产欧美日本| www.久久av| 欧美日本国产视频| 1区2区3区在线视频| 国产一区二区免费电影| 羞羞答答国产精品www一本| 欧美人妻一区二区三区| 欧美色图免费看| 色的视频在线免费看| 福利视频久久| 国产精品久久久久久模特 | 久久99热精品| 久久aimee| 自拍偷拍 国产| 国产日本欧美一区二区| 国产xxxx在线观看| 国产综合在线视频| 精品国产一区二区三区噜噜噜| 手机在线视频一区| 天天做天天摸天天爽国产一区| 经典三级在线|