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

深入理解Linux下的Socket異常

系統 Linux
在各種網絡異常情況的背后,TCP是怎么處理的?又是怎樣把處理結果反饋給上層應用的?本文就來討論這個問題,分為兩個場景來討論。

在各種網絡異常情況的背后,TCP是怎么處理的?又是怎樣把處理結果反饋給上層應用的?本文就來討論這個問題,分為兩個場景來討論。

建立連接時的異常情況

1.正常情況下

經過三次握手,客戶端連接成功,服務端有一個新連接到來。

 

經過三次握手,客戶端連接成功,服務端有一個新連接到來 

2.客戶端連接了服務端未監聽的端口

在這種情況下,服務端會對收到的SYN回應一個RST(RFC 793 3.4),客戶端收到RST之后,終止連接,并進入CLOSED狀態。

客戶端的connect返回ECONNREFUSED 111 /* Connection refused */。 

 

 

[[181485]] 

3.客戶端與服務器之間的網絡不通,這又分兩種情況:

connect返回主機不可達。具體信息在不同系統上不一樣,比如linux上的定義是EHOSTUNREACH 113 /* No route to host */。明顯給出了一個不可訪問的地址(例如,訪問一個不存在的本地網絡地址,或者DNS解析失敗會導致這種情況。

connect返回連接超時。這種情況下,客戶端發送的SYN丟失在網絡中,沒有得到確認,客戶端的TCP會超時重發SYN。以Ubuntu 12.04為例,重發SYN的時間,系列是:0,1,3,7,15,31,63(2n-1-1)。即發送7個SYN后等待一個超時時間(例如:127秒),如果在這段時間內仍然沒有收到ACK,則connect返回超時。

在這兩種情況下, 服務端的狀態沒有變化,對服務端來講什么也沒發生。

4.建立連接的過程中包丟失

三次握手發送的包系列是SYN > SYN-ACK > ACK

SYN丟失。這種情況就是3種的第2種情況。

SYN-ACK丟失。從客戶端的角度來講以前面一種情況類似。從服務端的角度來講,由LISTEN狀態進入SYN_REVD狀態。服務端的TCP會重發SYN-ACK,直到超時。SYN攻擊正是利用這一原理,攻擊方偽造大量的SYN包發送到服務器,服務器對收到的SYN包不斷回應SYN-ACK,直到超時。這會浪費服務器大量的資源,甚至導致奔潰。對服務端的應用層來講,什么也沒有發生。因為TCP只有在經過3次握手之后才回通知應用層,有新的連接到來。 

 

 

 

ACK丟失。這對服務端來講與2相同。對于客戶端來講,由SYN_SENT狀態進入了ESTABLISED狀態,即連接成功了。連接成功后客戶端就可以發送數據了。

但實際上數據是發送不到服務端的(我們假設客戶端收到SYN-ACK之后,客戶端與服務端之間的網絡就斷開了),客戶端發送出去的數據得不到確認,一般重發3次左右就會處于等待ACK的狀態(win7)。而ubuntu 12.10下,調用send會返回成功,直到TCP的緩沖被填滿(測試環境:局域網,感覺這個不是很合理,按照書上所說:應該是使用“指數退避”進行重傳 -- TCP/IP協議詳解, 大概是我的測試環境中有NAT所致吧)。最終,客戶端產生一個復位信號并終止連接。返回給應用程序的結果是Connection time out(errno: 110)

連接建立成功后出現的異常情況

1.客戶端與服務器的網絡斷開,雙方不再發送數據

這樣,雙方都不知道網絡已經不通,會一直保持ESTABLISHDED狀態,除非打開了SO_KEEPALIVE選項。

2.網絡斷開,一方給另一方發送數據

這種情況下,接收一方不知道網絡出問題,會一直等待數據到來。對于發送方,理論上的情況是,重傳一定次數后,返回連接超時。不過實際,很可能是這樣的情況,發送方顯示發送數據成功(send返回發送的數據長度),但實際接收方還沒有接收到數據。

對于已經發送成功的數據有3種可能情況:

  • 在本機的TCP緩存中
  • 在網絡上的某個NAT的緩存中
  • 對方已經成功接收到

在實驗的過程中發現,即使網絡斷開了,發送方仍然收到了對數據的ACK(在有NAT的情況下),猜測是NAT把數據緩存起來并發送了ACK。

當網絡恢復時,那些被緩存的數據會被發送到接收方。鑒于這樣的結果,給我們一個提示:不能依賴于TCP的可靠性,認為我發送成功的數據,對方一定能收到。TCP可以保證可靠、有序的傳輸,這意思是說保證收到的數據時有序正確的,并沒有說已經發送成功的數據,對方一定就收到了。

在ubuntu 12.10上,發送方一直在發送數據,直到緩沖區滿。而在win7下,重發3次就會停止,進入等待ACK狀態。

解決的辦法是:應用層對數據是否接收完成進行確認(需要的時候)。

3.網絡斷開,一方等待著另一方發送數據

這種情況下,等待數據的一方將一直等待下去。接收方無法直接知道網絡已經斷開,一般是設置一個超時時間,超時時間到就判斷為網絡已斷開。發送數據的一方的反應如2所述。

4.一方crash,另一方繼續發送/接收數據

這依賴于TCP協議棧對crash的反應。與系統相關性很大,例如:

在windows下:按ctrl+c結束程序,會發送RST段。而在linux下,按ctrl+c結束程序,會調用close。

在wind7下,如果沒有調用close而結束程序,TCP會發送RST。而Ubuntu12.10上,則會發送FIN段。

1).crash的一端發送FIN,相當于調用了close

沒有crash的一端接收數據,具體的反應與系統有關,例如

linux 3.8.0-29-generic調用recv返回-1,errno被設置為22,Invalid argument,而linux3.3.6-030306-generic調用recv返回0.在TCP內部,調用recv時,發送FIN,終止連接(Linux)。

windows情況以此不同,recv返回0,表示對方調用了shutdown。TCP內部發送一個RST。

但共同點是recv都會立即返回失敗。

沒有crash的一端發送數據

第一次調用send返回成功,數據會被發送到crash的一端,crash的一端會回應一個RST,再次調用send返回-1, errno被設置為32, Broken pipe。 注意:這會向應用程序發送SIGPIPE信號,你的程序會莫名其妙退出。這是因為程序對SIGPIPE的默認處理就是結束程序。

這是編寫服務器程序是最需要注意的一個問題。最簡單的處理方法是忽略該信號 -- signal(SIGPIPE,SIG_IGN);

windows下行為是一樣的, 不同的是返回的錯誤是10053 - WSAECONNABORTED, 由于軟件錯誤,造成一個已經建立的連接被取消。

共同點第一次send成功,之后就出錯。

2).crash的一端發送RST

沒有crash的一端接收數據

調用recv返回-1,errno被設置為104, Connection reset by peer。在TCP內部,當收到RST時,把錯誤號設為ECONNRESET。

沒有crash的一端發送數據

調用send返回-1,errno被設置為104, Connection reset by peer。在TCP內部,當收到RST時,把錯誤號設為ECONNRESET

3).crash的一端即沒發送FIN也沒發送RST

沒有crash的一端接收數據

調用recv會一直阻塞等待數據到來

沒有crash的一端發送數據

重傳一定次數后,返回connection time out。

5.一端關閉連接

這種情況與一端crash并發送FIN 的情況相同,參看4.1

總結

上面分析的目的是:當程序出現網絡異常時,能夠知道問題的原因在哪?

作為開發者,我們主要關心應用層面的返回狀態。一般出錯的地方是調用connect, recv, send的時候。

下面做一個總結

connect函數返回狀態及其原因 

 

 

 

recv函數返回狀態及其原因 

 

 

 

send函數返回狀態及其原因 

 

 

 

各種不同步的狀態,都是通過發送RST來恢復的,理解這些狀況的關鍵在于理解何時產生RST,以及在各種狀態下,對RST段如何處理。

責任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關推薦

2021-07-26 07:47:36

數據庫

2021-08-31 10:32:11

LinuxPage Cache命令

2015-09-17 10:51:35

修改hostnameLinux

2023-02-10 08:11:43

Linux系統調用

2022-11-09 08:12:07

2025-10-28 04:25:00

2021-07-05 06:51:45

Linux內核調度器

2025-04-22 08:21:10

2025-04-28 02:00:00

2016-11-07 21:59:52

threadpython

2013-06-20 10:25:56

2016-12-08 15:36:59

HashMap數據結構hash函數

2020-07-21 08:26:08

SpringSecurity過濾器

2010-06-01 15:25:27

JavaCLASSPATH

2021-09-10 06:50:03

Node.jsSocket端口

2015-12-28 11:25:51

C++異常處理機制

2025-01-09 12:01:53

2022-08-21 16:52:27

Linux虛擬內存

2012-11-22 10:11:16

LispLisp教程

2023-11-08 07:39:42

點贊
收藏

51CTO技術棧公眾號

国产在线精品自拍| 日韩激情视频在线| 日本久久高清视频| av免费在线观看不卡| 国产一区清纯| 亚洲九九九在线观看| 国产精品v日韩精品v在线观看| 麻豆免费在线观看| 成人中文字幕电影| 国产精品69精品一区二区三区| 日韩av网站在线播放| jizz国产精品| 欧美少妇一区二区| 国产日韩亚洲欧美在线| 国产高清视频在线| 国产成a人亚洲| 国产精品精品一区二区三区午夜版| 国产黄在线免费观看| 偷拍一区二区| 日韩一级二级三级| 亚洲激情在线观看视频| rebdb初裸写真在线观看| 国产日产精品一区| 国产伦精品一区二区| 最新中文字幕在线观看视频| 国色天香一区二区| 三级精品视频久久久久| 欧美深性狂猛ⅹxxx深喉| 国产午夜久久av| 色狠狠色狠狠综合| 国自产拍偷拍精品啪啪一区二区 | 英国三级经典在线观看| 最好看的中文字幕久久| 欧美日韩天天操| 手机在线观看毛片| 成人免费福利片| 亚洲一区久久久| 在线观看免费观看在线| 久久精品女人| 欧美一级视频免费在线观看| 九九视频免费在线观看| 天天射天天综合网| 在线观看日韩av| 亚洲精品国产一区黑色丝袜| 国产伦精品一区二区三区免费优势| 91精品国产入口在线| 中文字幕网av| 欧洲国内综合视频| 91午夜在线播放| 中文在线字幕免费观| 亚洲欧美不卡| 青青在线视频一区二区三区| 福利一区二区三区四区| 伊人久久久大香线蕉综合直播| 久久精品一区中文字幕| 国产精品国产三级国产传播| 日韩电影免费在线观看| 亚洲色图av在线| 波多野结衣 在线| 人妖一区二区三区| 亚洲精品白浆高清久久久久久| 最新国产精品自拍| 亚洲一区二区三区中文字幕在线观看| 在线综合亚洲欧美在线视频| 手机av在线免费| 六九午夜精品视频| 91麻豆精品久久久久蜜臀| 色啦啦av综合| 国产精品美女久久久久人| 91精品国产综合久久香蕉麻豆 | 蜜臀精品久久久久久蜜臀| 国产精品激情av在线播放| 日批视频免费观看| 久久国产精品99精品国产| 国产精品青青在线观看爽香蕉| 男操女视频网站| 久久66热偷产精品| 99久久无色码| 无码精品视频一区二区三区| 91麻豆国产自产在线观看| 欧美日韩国产不卡在线看| 国产在线小视频| 中文字幕亚洲一区二区av在线| 午夜啪啪免费视频| 日本伦理一区二区| 亚洲1区2区3区视频| 国产精品丝袜久久久久久消防器材| 亚洲精品88| 欧美日韩高清在线| 亚洲少妇一区二区三区| 亚洲人成网77777色在线播放 | 精品熟女一区二区三区| 亚洲图片久久| 日韩午夜在线视频| 国产精品成人久久| 日韩和欧美一区二区| 91精品视频在线| 五月婷婷六月丁香综合| 亚洲国产精品成人综合| 久久久99精品视频| 亚洲最大成人| 欧美一区二区播放| 永久免费成人代码| 欧美另类视频| 国产成人精品视| 精品女同一区二区三区| 久久综合国产精品| 欧美xxxx吸乳| 欧美黑人疯狂性受xxxxx野外| 欧美一区二区三区啪啪| 性少妇bbw张开| 一区二区三区四区在线观看国产日韩| 97视频国产在线| 国产口爆吞精一区二区| 久久久久久久av麻豆果冻| 色哟哟免费网站| 欧美在线va视频| 亚洲精品不卡在线| 日韩女优一区二区| 免费在线看一区| 久久99精品久久久久子伦| 黄色一级片在线观看| 色综合夜色一区| 亚洲欧美日韩中文字幕在线观看| 欧美伦理在线视频| 韩国v欧美v日本v亚洲| 国产又粗又黄又爽| 91色porny在线视频| 99er在线视频| 成人在线观看免费播放| 精品香蕉在线观看视频一| 69av视频在线| 理论电影国产精品| 欧美一二三四五区| 国产网站在线| 亚洲国产精品悠悠久久琪琪| 日韩黄色免费观看| 精东粉嫩av免费一区二区三区| 日本不卡一区二区三区视频| 日韩另类在线| 日韩一级片在线观看| 五月天色婷婷丁香| 精品一区二区三区免费观看 | 艳妇乳肉豪妇荡乳xxx| 中文字幕乱码亚洲无线精品一区 | 天堂资源在线亚洲| 久久久久亚洲精品成人网小说| 国产精品爽爽久久| 亚洲人精品午夜| www.亚洲自拍| 中文无码久久精品| 91久久偷偷做嫩草影院| 宅男在线观看免费高清网站| 欧美一二三在线| 欧美日韩激情在线观看| 高清视频一区二区| 国产玉足脚交久久欧美| 北条麻妃一区二区三区在线观看| 免费91在线视频| www.久久成人| 亚洲成人www| 中文字幕一区二区三区人妻不卡| 国产亚洲在线| 日韩精品欧美在线| 日本免费一区二区三区等视频| 深夜福利91大全| 国产又粗又猛又黄| 一区二区三区四区激情| aaa黄色大片| 国产日本精品| 日本不卡免费新一二三区| jvid一区二区三区| 久久天天躁日日躁| www.蜜臀av.com| 无码av免费一区二区三区试看| 中出视频在线观看| 老司机午夜精品视频| 伊人久久大香线蕉成人综合网| www.久久99| 97精品国产91久久久久久| 久久久久久女乱国产| 欧美日韩午夜影院| 欧美精品一区二区成人| 久久这里只有精品6| 欧美黄色性生活| 欧美伊人影院| 久久久精品动漫| 9999在线精品视频| 午夜美女久久久久爽久久| 国产中文字幕在线观看| 欧美一区午夜视频在线观看| 自拍偷拍欧美亚洲| 中文字幕一区二区三区不卡 | 久草热视频在线观看| 欧美三级情趣内衣| 999国产视频| 欧美黑人巨大xxxxx| 久久福利视频网| 欧洲亚洲在线| 欧美一区二区免费视频| 日韩美一区二区| 一区二区三区产品免费精品久久75| 亚洲专区区免费| 国产大陆a不卡| 在线视频日韩一区 | 国产精品欧美激情在线| 天天亚洲美女在线视频| 熟女av一区二区| 国产色一区二区| 在线xxxxx| 韩国午夜理伦三级不卡影院| 少妇人妻在线视频| 中文av一区| 亚洲一卡二卡三卡四卡无卡网站在线看| 超碰成人在线观看| 亚洲精品免费网站| 久久亚洲人体| 日本欧美国产在线| heyzo高清在线| 久久久91精品| 川上优的av在线一区二区| 亚洲国产成人在线播放| 国产喷水福利在线视频| 色成人在线视频| 日韩av男人天堂| 亚洲精品一卡二卡| 国产在视频线精品视频| 久久综合成人精品亚洲另类欧美| aaa黄色大片| 国产成人啪午夜精品网站男同| 五月婷婷六月丁香激情| 秋霞电影一区二区| 欧美黄色一级片视频| 国产欧美在线| 久久综合色视频| 亚洲大胆视频| 国产二区视频在线| 激情丁香综合| 99er在线视频| 亚洲一级一区| 国产精彩视频一区二区| 激情婷婷欧美| 婷婷无套内射影院| 亚洲精品日本| 久久精品视频16| 亚洲在线观看| 欧美日韩亚洲第一| 香蕉久久夜色精品国产| 国产精品丝袜久久久久久消防器材| 日韩香蕉视频| 国产成人精品视频免费看| 国产亚洲激情| 丁香啪啪综合成人亚洲| 乱码第一页成人| 三年中国国语在线播放免费| 免费不卡在线观看| caoporm在线视频| 国产精品996| 国产+高潮+白浆+无码| 91丝袜美腿高跟国产极品老师 | 天天操天天干天天操| 亚洲的天堂在线中文字幕| 日韩中文字幕免费观看| 亚洲精品aⅴ中文字幕乱码| 污视频在线免费观看| 精品亚洲精品福利线在观看| 免费国产在线观看| 色妞欧美日韩在线| 免费电影视频在线看| 97精品一区二区三区| 亚洲成人人体| 91久久国产精品| 国产精品美女在线观看直播| 欧美精品欧美精品| 久久影视一区| 久久亚洲国产成人精品无码区| 一本色道久久精品| 三上悠亚在线一区二区| 国产99久久久国产精品| 狠狠人妻久久久久久综合蜜桃| 久久精品亚洲精品国产欧美| 亚洲波多野结衣| 亚洲va欧美va人人爽午夜| 精品国产xxx| 日韩一区和二区| 亚洲av成人精品一区二区三区在线播放 | 国产精品无码一本二本三本色| 美女视频免费一区| 久久久久国产免费| 欧美激情中文不卡| 久久久91视频| 在线观看亚洲精品| av男人天堂网| 国产午夜一区二区| www在线视频| 国产成人精品免高潮费视频| 视频一区中文字幕精品| 欧美综合激情| 亚洲一级影院| 人人爽人人爽av| 2021国产精品久久精品| wwwav国产| 色94色欧美sute亚洲线路一ni| 国产视频一二三四区| 亚洲精品一区在线观看香蕉| 超碰免费在线播放| 国产成人涩涩涩视频在线观看| 日本免费一区二区三区视频| 欧美极品一区| 亚洲激情社区| 中文字幕在线视频一区二区| 久久精品一级爱片| 97免费在线观看视频| 91精品国产品国语在线不卡| 精品影院一区| 97精品国产97久久久久久免费| 国产亚洲字幕| 无遮挡亚洲一区| 男女精品网站| 香港三级日本三级| 一区二区三区美女| 国产又粗又猛又爽又黄视频| 亚洲人高潮女人毛茸茸| 国产精品国精产品一二| 91免费看片在线| 日韩欧美1区| 久久婷婷国产91天堂综合精品| youjizz久久| 国产一级理论片| 欧美一级片在线| 好了av在线| 国产在线视频2019最新视频| 欧美三级情趣内衣| 亚洲性生活网站| 久久久久久久久99精品| 超碰中文字幕在线| 精品视频在线播放| 国产传媒av在线| 精品人伦一区二区三区| 狠狠入ady亚洲精品经典电影| 911av视频| 亚洲视频在线一区观看| 国产又大又黑又粗| 日韩视频免费看| 成人精品视频在线观看| 致1999电视剧免费观看策驰影院| 美国毛片一区二区| 三级黄色在线观看| 欧美日本不卡视频| 蜜桃视频网站在线| 亚洲精品欧美日韩专区| 欧美福利影院| 亚洲色偷偷色噜噜狠狠99网| 亚洲福利电影网| 神马久久高清| 国产成人高清激情视频在线观看| 视频精品在线观看| 欧美伦理片在线观看| 国产精品美日韩| 97在线播放免费观看| 麻豆一区二区在线观看| av日韩在线播放| 18岁网站在线观看| 久久久久久久久久美女| а中文在线天堂| 日韩有码在线视频| 亚洲专区**| 波多野结衣家庭教师在线播放| 久久天天做天天爱综合色| 超碰在线免费97| 久久国产精彩视频| 老司机精品在线| 欧美成人黄色网址| 樱花草国产18久久久久| 天天干天天爱天天操| 国产成人亚洲综合91| 91精品秘密在线观看| 国产精品亚洲一区二区无码| 欧美日韩一区二区在线| 成年人在线看| 成人免费在线看片| 久久综合影音| 日韩在线观看视频一区二区| 亚洲国产日韩精品在线| 素人一区二区三区| 国产xxxx振车| 国产日产欧美一区| 亚洲第一成年人网站| 日韩美女视频免费看| 亚洲国产日韩欧美在线| 大乳护士喂奶hd| 欧美午夜精品一区二区三区| 色在线视频网| 日韩久久精品一区二区三区| 国产成人精品网址| 亚洲 国产 日韩 欧美| 久久99精品视频一区97| 欧美日韩在线网站| 一本加勒比波多野结衣| 欧美精品久久久久久久久老牛影院 |