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

欧美亚洲一级| 中文字幕在线直播| 国产成a人无v码亚洲福利| 欧美黑人性生活视频| 国产亚洲精品成人a| free性护士videos欧美| 久久亚洲影视婷婷| 成人黄色午夜影院| 日韩欧美视频在线免费观看| 在线日韩网站| 51精品秘密在线观看| 久久99精品久久久久久久青青日本| 九九九视频在线观看| 久久综合偷偷噜噜噜色| 欧美日韩免费区域视频在线观看| 99国产在线视频| 特级毛片www| 香蕉综合视频| 精品视频在线播放免| 精品久久久久久久久久中文字幕| а√中文在线资源库| 中文字幕一区二区三区在线视频| 欧美精品国产精品| 日韩国产欧美亚洲| 黄色网在线播放| 久久综合色鬼综合色| 亚洲最大福利视频网| 91精品国产高清一区二区三密臀| 亚洲欧洲av| 日韩欧美一二三四区| 爱情岛论坛vip永久入口| 五月花成人网| 国产精品进线69影院| 久久av一区二区三区亚洲| 国产精品久久久久久免费免熟 | 性猛交ⅹ×××乱大交| 网爆门在线观看| 成人性生交大片免费看中文视频| 国产精品国产三级国产普通话三级| 国产精品久久久久久久午夜| 国产精品无码无卡无需播放器| 欧美在线一级| 欧美色片在线观看| 亚洲国产婷婷综合在线精品| 黄频视频在线观看| 91最新在线| 国产亚洲一区二区在线观看| 国产精品人成电影在线观看| 青青草成人av| 91久久视频| 欧美激情精品久久久久久黑人| 人妻丰满熟妇av无码久久洗澡| 国产麻豆久久| 色综合久久88色综合天天免费| 亚洲综合网中心| jizz在线观看视频| 国产亚洲欧美在线| 91在线精品观看| 国产精品一品二区三区的使用体验| 欧美日韩专区| 美女999久久久精品视频| 亚洲女同二女同志奶水| 国产影视精品一区二区三区| 精品夜色国产国偷在线| 国产福利短视频| 欧美天堂影院| 亚洲国产精品网站| 中文在线一区二区三区| 日韩高清影视在线观看| 日韩高清免费在线| 亚洲一区二区三区蜜桃| 国产精品一区二区av交换| 尤物yw午夜国产精品视频明星| 四川一级毛毛片| 亚洲精品观看| 欧美精品一区二区高清在线观看 | 亚洲v日韩v综合v精品v| 国产精品久久久久久久免费看 | 97不卡在线视频| 欧美特黄aaaaaa| 久久久久国产精品一区二区| 国产精品99久久久久久久久| 亚洲天堂2021av| 国产一区二区电影| 国产精品久久久久久搜索| 亚洲中文一区二区三区| 国产毛片一区| 国产精欧美一区二区三区| 91国内精品久久久| 国产aⅴ综合色| 麻豆成人在线播放| 日本在线观看免费| 亚洲成人动漫精品| 国产日韩成人内射视频| www久久久| 精品国产乱码久久久久久影片| 天堂av8在线| av不卡一区二区| 亚洲视频一区二区| 综合五月激情网| 久久国产精品成人免费观看的软件| 日韩电影中文字幕在线观看| 青青青视频在线播放| 欧美午夜电影在线观看| 日本韩国在线不卡| 91在线精品入口| 不卡的av中国片| 亚洲在线观看一区| 嗯啊主人调教在线播放视频 | 国产欧美亚洲一区| 国产精品亚洲视频在线观看| 久久影视中文字幕| 国产成人久久精品77777最新版本| 成人网在线免费观看| 无码精品在线观看| 99久久亚洲一区二区三区青草| 俄罗斯精品一区二区三区| 日韩综合小视频| 色偷偷91综合久久噜噜| 久久久国产成人| 在线国产一区二区| 国产精品av在线播放| 精品人妻一区二区三区换脸明星 | 国内不卡的二区三区中文字幕| 午夜久久电影网| 免费成人深夜夜行网站视频| 91资源在线观看| 欧美日韩精品三区| 波多野结衣先锋影音| 91精品推荐| 偷拍日韩校园综合在线| 亚洲免费999| 最新国产精品视频| 国产69精品久久久久9| 国产精品国产精品国产专区| 国产午夜精品在线观看| 免费在线a视频| 涩涩屋成人免费视频软件| 中文字幕欧美日韩在线| 国产精品白丝喷水在线观看| 亚洲综合二区| 国产一区二区三区四区五区在线 | 日韩一区二区免费在线电影 | 91视频亚洲| 亚洲欧美日韩中文视频| 三级黄色录像视频| 亚洲国产激情| 成人蜜桃视频| 日本动漫同人动漫在线观看| 欧美一区在线视频| 无码h肉动漫在线观看| 亚洲高清在线| 国产午夜精品在线| 久久亚洲导航| 精品欧美一区二区在线观看| 日韩人妻无码一区二区三区| 9色精品在线| 九9re精品视频在线观看re6| 麻豆成全视频免费观看在线看| 欧美日韩aaaaaa| 日日操免费视频| 影音先锋国产精品| 国产综合第一页| 免费v片在线观看| 亚洲精品网址在线观看| 精品人妻一区二区三区潮喷在线| 国产精品18久久久久| 九九久久九九久久| 成人免费黄色| 日韩综合视频在线观看| 国产精品一级视频| 国产肉丝袜一区二区| 色综合天天色综合| 卡一精品卡二卡三网站乱码| 456国产精品| 成人全视频高清免费观看| 欧美视频你懂的| 久久精品一区二区三区四区五区| 巨乳诱惑日韩免费av| 先锋影音一区二区三区| 国产精品18| 久久噜噜噜精品国产亚洲综合 | 日韩免费看网站| 日韩黄色在线视频| 国产日本一区二区| 久久久久久久久久毛片| 亚洲激情另类| 亚洲不卡1区| 国产美女亚洲精品7777| 一本到三区不卡视频| 中文字幕在线观看网址| 日本不卡在线视频| 大桥未久一区二区三区| 久久夜色电影| 国产精品久久久久久久av电影| 国产三级小视频| 亚洲国产色一区| 亚欧洲乱码视频| 国产真实乱子伦精品视频| 台湾成人av| 中文字幕人成乱码在线观看| 亚洲欧美一区二区三区久久| 日本妇乱大交xxxxx| 99九九热只有国产精品| 国产精品一久久香蕉国产线看观看| 手机看片福利永久| 欧美影院一区二区三区| 朝桐光av在线| 国产高清精品在线| 日韩av在线第一页| 97精品一区二区| 国产精品12| 欧美videos粗暴| 在线观看亚洲视频| 国产在线观看免费视频今夜| 久久夜色精品一区| 91在线第一页| 黄色国产精品| 三年中文高清在线观看第6集| 欧美视频免费看| 日韩中文理论片| 亚洲一区中文字幕永久在线| 国产精品国模大尺度视频| 91高清国产视频| 日韩午夜在线电影| 亚洲开发第一视频在线播放| 久本草在线中文字幕亚洲| 国产精品美女午夜av| sm性调教片在线观看| 中文字幕欧美在线| 午夜小视频免费| 欧美综合一区二区| 日韩欧美视频免费观看| 麻豆成人综合网| 91专区在线观看| 欧美1区免费| gogogo免费高清日本写真| 最新精品国偷自产在线| 国产精品久久精品国产| 免费成人高清在线视频| 欧美中文在线视频| 国产深夜视频在线观看| 久久精品一区中文字幕| 在线视频自拍| 一区二区三区视频观看| 亚洲色图另类小说| 337p亚洲精品色噜噜噜| 91资源在线视频| 欧美三级视频在线| 少妇久久久久久久| 亚洲国产精品久久久久婷婷884| 女人被狂躁c到高潮| 懂色一区二区三区免费观看| 久久精品视频在线观看免费| 精品一区二区三区欧美| 成人午夜激情av| 老司机精品久久| 天天综合中文字幕| 亚洲精品99| 中文字幕一区二区三区四区五区人| 中文字幕av一区二区三区四区| 亚洲91精品在线| 男人的天堂在线视频| 亚洲国产欧美一区| 十八禁一区二区三区| 亚洲国产精品999| 污视频网站免费观看| 日韩欧美一级在线播放| 成人av免费播放| 日韩欧美一区二区视频| 中文字幕欧美人妻精品一区蜜臀| 亚洲激情第一区| 久久久久99精品成人片毛片| 国产三级精品视频| 成人黄色短视频| 中文字幕日韩欧美一区二区三区| 中文字幕av观看| 2021久久国产精品不只是精品| 国产精品果冻传媒| 99久久免费视频.com| 黄色国产在线观看| 亚洲欧美在线另类| 青草影院在线观看| 亚洲国产精品一区二区尤物区| 一级特黄曰皮片视频| 亚洲日本电影在线| 久操视频在线观看免费| 国产精品日日摸夜夜摸av| www在线观看免费视频| 国产成人av在线影院| 色婷婷精品久久二区二区密 | 亚洲爆乳无码精品aaa片蜜桃| 国产精品免费不| 欧美精品亚洲| 国产高清第一页| 欧美猛男男男激情videos| 日韩免费在线观看| 国产精品久久婷婷| 日韩欧美一区在线| 日韩精品123| 国产亚洲精品综合一区91| 日韩美女一级视频| 一区二区欧美久久| 中文字幕中文字幕在线十八区| 久久久精品在线| 最新日本在线观看| 欧美美最猛性xxxxxx| 欧美一级大黄| 91深夜福利视频| 清纯唯美亚洲经典中文字幕| 日本高清一区| 在线观看视频免费一区二区三区| 国产乱子伦精品视频| 久久久精品午夜少妇| 一区二区三区人妻| 高清视频一区二区| 高潮毛片无遮挡| 国产精品欧美久久久久一区二区| 一级肉体全黄裸片| 一区二区三区四区不卡视频| 日韩高清免费av| 日韩欧美一区在线| 91看片在线观看| 久久人91精品久久久久久不卡| 乱馆动漫1~6集在线观看| 91老司机精品视频| 国产精品一区二区99| 久草资源站在线观看| 国产精品91一区二区| 亚洲精品国产精品国自| 亚洲男人的天堂av| 国产无遮挡呻吟娇喘视频| 日韩一区二区中文字幕| 亚洲欧美日韩免费| 亚洲欧美日韩直播| 国产区美女在线| 91最新国产视频| 一区二区三区午夜视频| 国产一级做a爰片久久| 成人不卡免费av| 国产精品第一页在线观看| 在线成人高清不卡| 你懂的好爽在线观看| 国语自产精品视频在线看| 日韩成人久久| 吴梦梦av在线| 黑人巨大精品欧美黑白配亚洲| 韩国三级与黑人| 国产精品嫩草99a| 天堂资源在线播放| 日韩欧美一区二区视频| 成人看片免费| 99国产视频| 激情欧美日韩一区| 在线播放av网址| 图片区小说区区亚洲影院| 人妻中文字幕一区| 欧美激情久久久久| 欧美挤奶吃奶水xxxxx| www插插插无码视频网站 | 精品亚洲国产成av人片传媒 | 久久视频国产精品免费视频在线| 午夜av在线播放| 97se亚洲综合| 欧美xxav| 久热精品在线播放| 中文字幕五月欧美| 波多野结衣毛片| 在线播放日韩av| 精品久久久网| 亚洲最新免费视频| 国产成a人无v码亚洲福利| 老司机福利在线观看| 4438x成人网最大色成网站| 二区三区四区高清视频在线观看| 欧美一级大片在线免费观看| 国产毛片一区二区三区 | 成人在线免费视频观看| 国产欧美久久久久| 久久99国内精品| www深夜成人a√在线| 日本韩国精品在线| 亚洲三区在线观看无套内射| 日韩av手机在线| 日本精品三区| 亚洲av无一区二区三区久久| 亚洲成人精品影院| 成人在线二区| 91夜夜未满十八勿入爽爽影院| 国产一区二区三区天码| 成人免费播放视频| 欧美日韩国产精品一区| 亚洲国产精品久久人人爱潘金莲| 美女999久久久精品视频 | 久久91精品国产| 日韩福利在线观看| 欧美视频在线观看视频| 久久久噜噜噜久久中文字幕色伊伊| 国产一级久久久| 搡老女人一区二区三区视频tv|