精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

999精品网站| 国产一区二区黄色| 国产精品久久久免费看| 久久免费福利| 精品国产91久久久| 日韩一区二区电影在线观看| 一区二区日韩在线观看| 亚洲第一精品影视| 中文字幕视频在线免费欧美日韩综合在线看 | 女主播福利一区| 日韩精品免费视频| 亚洲美女性囗交| 麻豆蜜桃在线观看| 亚洲欧洲美洲综合色网| 精品免费日产一区一区三区免费| 久久久久久无码精品大片| 欧美在线免费| 曰本色欧美视频在线| 欧美一级大片免费看| 视频精品导航| 午夜精品福利一区二区三区av| 先锋影音日韩| 日韩精品系列| 国精产品一区一区三区mba视频| 欧美一级成年大片在线观看| www.av成人| 国产亚洲一区| 日韩成人在线电影网| 古装做爰无遮挡三级聊斋艳谭| 欧美男体视频| 精品国产福利在线| 国产肉体ⅹxxx137大胆| 免费观看在线黄色网| 久久久电影一区二区三区| 国产精品一区二区欧美| 97人人爽人人爽人人爽 | 91精品999| 欧美天堂视频| 精品欧美一区二区三区| 人人妻人人澡人人爽欧美一区双 | 亚洲少妇屁股交4| 色噜噜狠狠一区二区三区| 五月婷中文字幕| 成人国产在线观看| 91免费在线观看网站| 一区二区三区亚洲视频| 日韩高清一区在线| 国产a∨精品一区二区三区不卡| 久久久久久久蜜桃| 欧美天天视频| 久久久久久久国产精品| 动漫性做爰视频| 亚洲国产一成人久久精品| 最新91在线视频| 青青草华人在线视频| 精品国产一区二区三区四区| 日韩麻豆第一页| 女~淫辱の触手3d动漫| 日韩免费视频网站| 日韩亚洲欧美成人| 成人性视频欧美一区二区三区| 日韩伦理av| 亚洲另类一区二区| 欧美一级中文字幕| 色婷婷av在线| 精品国产精品三级精品av网址| 亚洲理论电影在线观看| 福利在线导航136| 偷窥国产亚洲免费视频 | 亚洲国产影院| 久久久久久亚洲| 黄色片中文字幕| 视频一区国产视频| 国产在线日韩在线| 国产强伦人妻毛片| 国产久卡久卡久卡久卡视频精品| 91亚洲国产成人精品性色| a在线观看免费| 成人国产视频在线观看| 奇米视频888战线精品播放| 成人网视频在线观看| 国产精品久久久久久久久免费丝袜 | 日本久久一区二区三区| 天天干天天干天天干天天干天天干| 欧美激情不卡| 精品精品欲导航| 国产毛片久久久久久久| 日韩精品网站| 欧美激情xxxxx| 亚洲大片免费观看| 国产在线视频不卡二| 成人毛片网站| 国产在线小视频| 亚洲精品欧美专区| 免费在线观看毛片网站| 涩涩涩久久久成人精品| 精品久久久网站| 熟女少妇一区二区三区| 国产精品久久占久久| 久久久久久国产精品美女| 国产免费av一区| 国产呦萝稀缺另类资源| 国产一区二区免费电影| av电影在线观看| 亚洲国产精品视频| 天堂中文视频在线| 久久a爱视频| 日韩中文字幕av| 全部毛片永久免费看| 麻豆传媒一区二区三区| 精品一区二区三区国产| 欧美13一16娇小xxxx| 亚洲国产成人porn| 久久久久xxxx| 国产一区二区三区四区五区| 久久久久久久久久久免费精品 | 色女人在线视频| 欧美无砖砖区免费| 日韩精品一区二区三区高清免费| 国产精品成久久久久| 清纯唯美亚洲综合| 手机看片福利在线| 悠悠色在线精品| 久久久精品高清| 精品久久电影| 日本精品va在线观看| 精品人妻一区二区三区三区四区| 欧美激情一二三区| 男人操女人免费| 老司机精品视频在线播放| 久久成人国产精品| 亚洲一级片免费看| 久久精品欧美日韩精品| 黄色动漫在线免费看| 天堂久久av| 欧美成人免费一级人片100| 亚洲一区二区三区高清视频| 91视频免费看| 无码aⅴ精品一区二区三区浪潮 | 免费久久99精品国产| 麻豆亚洲一区| 碰碰在线视频| 日韩成人在线播放| 国产精品老女人| www.av亚洲| 91黄色在线看| 国产精品久久久网站| 久久久久久久999精品视频| 成人福利小视频| 亚洲最大色网站| 91传媒理伦片在线观看| 亚洲网站在线| 狠狠色伊人亚洲综合网站色| av电影在线免费| 综合精品一区| 国产成人精品一区二区| 天天在线女人的天堂视频| 亚洲国产成人av网| 国产极品一区二区| 一区二区高清| 免费精品视频一区| 欧美精品总汇| 色吧影院999| 国产又粗又猛又黄又爽无遮挡| 中文字幕在线观看不卡视频| 四季av一区二区三区| 91精品国产调教在线观看| 成人免费视频网址| 牛牛在线精品视频| 精品视频在线播放免| 久久久久久久久黄色| 国产日韩av一区二区| 亚洲免费看av| 欧美ab在线视频| 韩国一区二区三区美女美女秀 | 国产高清av在线| 在线观看免费亚洲| 卡通动漫亚洲综合| 成人av片在线观看| www.欧美日本| 欧美激情第10页| 九九九九精品九九九九| av在线一区不卡| 欧美精品在线视频观看| 亚洲 另类 春色 国产| 欧美天堂亚洲电影院在线播放| 神马久久精品综合| 91亚洲男人天堂| 国产一区二区在线观看免费视频| 国产精品啊v在线| 日产精品高清视频免费| 欧美第一在线视频| 国产91色在线播放| 伊人222成人综合网| 亚洲男人天堂久| 亚洲无码精品在线观看| 一色屋精品亚洲香蕉网站| 亚洲麻豆一区二区三区| 美女日韩在线中文字幕| 肉大捧一出免费观看网站在线播放| www.丝袜精品| 国产精品久久久久久av下载红粉| 免费av网站在线看| 国产亚洲精品一区二555| 国产精品久久777777换脸| 亚洲高清免费一级二级三级| 性欧美成人播放77777| 国产黄色成人av| 成人免费观看视频在线观看| 香蕉久久网站| 蜜桃导航-精品导航| 日韩一级淫片| 国产精品国语对白| 激情图片在线观看高清国产| 精品视频www| 人妻与黑人一区二区三区| 91高清视频免费看| 国产真实夫妇交换视频| 1000精品久久久久久久久| 亚洲 欧美 日韩在线| 蜜桃一区二区三区在线观看| 久久久久久人妻一区二区三区| 1024精品久久久久久久久| 欧美日韩大片一区二区三区| 欧洲一区在线| 国产精品自拍偷拍视频| 伊伊综合在线| 欧美疯狂性受xxxxx另类| av电影在线观看| 亚洲精品一区av在线播放| 刘亦菲久久免费一区二区| 欧美人xxxx| 日本黄色一级视频| 玉米视频成人免费看| 永久免费看mv网站入口| 欧美激情一区在线观看| 右手影院亚洲欧美| 久久在线免费观看| 麻豆短视频在线观看| 国产在线视视频有精品| 15—17女人毛片| 免费av网站大全久久| 国产偷人视频免费| 一本一本久久| 黄色一级片黄色| 欧美激情综合色综合啪啪| 在线观看福利一区| 欧美三级情趣内衣| 日本免费高清一区| 最新国产一区| 狠狠综合久久av| 粉嫩av一区二区| 精品福利影视| 日韩av中文字幕一区| 国产精品美女黄网| 午夜欧洲一区| 好吊色欧美一区二区三区四区| 91蝌蚪精品视频| 春色成人在线视频| 女一区二区三区| 欧美精品v日韩精品v国产精品| 久久影视三级福利片| 91一区二区三区| 国产精品18hdxxxⅹ在线| 国产a一区二区| www.久久东京| 久热国产精品视频一区二区三区| 国产一区丝袜| 久久精品第九区免费观看| 538任你躁精品视频网免费| 狠狠爱一区二区三区| 一个色免费成人影院| 欧美日韩精品综合| 四虎国产精品免费观看| 天天做天天爱天天高潮| 先锋资源久久| 综合国产精品久久久| 国内精品久久久久国产盗摄免费观看完整版 | 在线视频观看一区二区| 国产成人综合自拍| 一级少妇精品久久久久久久| caoporn国产一区二区| 国产传媒第一页| 中文字幕第一页久久| 国产免费一区二区三区四区| 亚洲图片一区二区| 日本视频在线观看免费| 欧美日韩一区三区| 国模人体一区二区| 亚洲欧美日韩爽爽影院| 在线观看的av| 欧美极品在线视频| 一本大道色婷婷在线| 国产精品丝袜视频| 女人抽搐喷水高潮国产精品| 日韩久久不卡| 在线一区电影| 韩国中文字幕av| 国产呦萝稀缺另类资源| 国产精品无码永久免费不卡| 1区2区3区国产精品| 成人精品免费在线观看| 欧美三级视频在线| 精品人妻一区二区三区麻豆91| 亚洲人成电影在线观看天堂色| 免费a在线看| 欧洲成人午夜免费大片| 日本一区精品视频| 日本午夜精品一区二区| 欧美/亚洲一区| 婷婷激情四射五月天| 成人国产精品免费观看动漫| 欧美激情亚洲色图| 亚洲精品成人天堂一二三| 中文字幕超碰在线| 日韩午夜在线影院| 亚洲欧美日韩综合在线| 欧美日韩成人免费| 精品176极品一区| www.成人av.com| 99热在线成人| 日本999视频| 成人黄色大片在线观看 | 亚洲性图第一页| 国产精品剧情在线亚洲| 极品国产91在线网站| 亚洲成人精品久久久| 在线视频三区| 国产精品久久久久久久久久久久 | 影音先锋中文字幕一区二区| 九九热精品在线播放| 91天堂素人约啪| 久久久综合久久久| 日韩免费高清视频| 色欧美激情视频在线| 欧美最猛性xxxx| 亚洲日产av中文字幕| 久久亚洲精品无码va白人极品| 老司机午夜精品| 国产精品69久久久久孕妇欧美| 欧美日韩国产综合视频在线观看中文| 99精品视频在线播放免费| 日韩视频免费中文字幕| 日本久久免费| 免费成人在线观看av| 香蕉国产精品偷在线观看不卡| 亚洲女则毛耸耸bbw| 亚洲综合免费观看高清完整版 | 日本不卡视频一二三区| 久久偷拍免费视频| 亚洲成人自拍一区| 天堂成人在线视频| 国内精品久久久久| 日韩中文字幕无砖| 欧美一级欧美一级| 国产91富婆露脸刺激对白| 日韩一级片av| 精品美女一区二区三区| 日本在线视频www鲁啊鲁| 亚洲free性xxxx护士hd| 你懂的国产精品| 深夜视频在线观看| 亚洲国产成人精品视频| 无码国产伦一区二区三区视频| 97精品国产aⅴ7777| 97视频一区| 国产在线青青草| 久久久亚洲午夜电影| 香蕉影院在线观看| 色偷偷88888欧美精品久久久 | 国产精品99久久久久久白浆小说| 国产探花在线精品| 亚欧美在线观看| 国产精品久久二区二区| 99热这里只有精品5| 大胆欧美人体视频| 少妇精品在线| 国产成人无码a区在线观看视频| 91视频.com| 91丨porny丨在线中文 | 国产在线国偷精品免费看| 成人免费视频网站入口::| 日韩一区二区三区电影| 伊人网在线播放| 日韩精品欧美专区| 国产酒店精品激情| 国产成人在线视频观看| 一区二区在线免费视频| 免费毛片b在线观看| 五月天亚洲综合| 国产精品影视在线观看| 99久久久久久久久| 久久国产一区二区三区| 久久国产精品美女| 国产成人久久婷婷精品流白浆| 国产精品成人在线观看| 亚洲黄色在线免费观看| 国产精品成人播放| 欧美日韩国产成人精品| 亚洲av无码一区二区三区观看 |