版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1TCP連接中可能出現(xiàn)的異常斷開情況假設存在這樣一種情況:在兩個不同的主機Machine1、Machine2系統(tǒng)上分別運行兩個應用程序Application1、Application2,在Application1與Application2的進程中存在一個TCP鏈接TCPLink。它們的實際傳輸取決于物理鏈路的溝通PhysiLink。圖一:TCP通信情況模擬圖1.1程序進程異常如果TCPLink異常而Application1正常,TCPL
2、ink會被關掉并且告訴Application2,Application2也就關閉了該異常的TCPLink。這種情況會在TCPLink異常后的一次Socket調(diào)用中通過返回值(CC)或者異常代碼(C#)得知。因此在做程序開發(fā)的時候比較容易處理。1.2物理鏈路異常如果出現(xiàn)Machine1或者Machine2任何一個系統(tǒng)死機:假設Machine1系統(tǒng)異常此時Machine2無法知道此TCP連接的失效,并一直認為連接正常。如果網(wǎng)絡硬件故障(如網(wǎng)
3、線拔掉、交換機斷電):Machine1與Machine2都無法知道此TCP連接的失效,并一直認為連接正常。以上這兩種情況在編程時會變的非常糟糕,因為TCP連接將一直被認為有效,所有對此TCPSocket的調(diào)用都會正確返回,這顯然是錯誤的。并且這種錯誤情況通常會持續(xù)很久。2異常斷開情況影響分析對于程序進程異常,由于Socket調(diào)用中可以得到返回值。因此在做程序開發(fā)的時候比較容易處理。對于物理鏈路異常,如果Machine1系統(tǒng)異常,如果Ap
4、plication2是FTP之類的服務器程序倒也無妨(一個連接存在時間比較長對它沒有多大影響),如果是需要實時知道連接用戶狀態(tài)的即時通訊類服務器或者Application2是客戶端則就會產(chǎn)生一系列的問題了。如果Machine1與Machine2都異常,Application1和Application2都會一直等下去,兩端需要進行相似的處理。3異常斷開情況的判斷與處理對于這種情況在MSDN里面是這樣處理的,原文如下:如果您需要確定連接的當
5、前狀態(tài),請進行非阻止、零字節(jié)的Send調(diào)用。如果該調(diào)用成功返回或引發(fā)WAEWOULDBLOCK錯誤代碼(10035),則該套接字仍然處于連接狀態(tài);計算機中對應的網(wǎng)絡接口卡。它們一起處理傳輸媒介(如網(wǎng)線)的物理接口細節(jié)。網(wǎng)絡層,處理分組在網(wǎng)絡中的活動。運輸層主,要為兩臺主機上的應用程序提供端到端的通信。在TCPIP協(xié)議族中,有兩個互不相同的傳輸協(xié)議:TCP和UDP。TCP為兩臺主機提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應用程序交給它的
6、數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡層,確認接收到的分組,設置發(fā)送最后確認分組的超時時鐘等。由于運輸層提供了高可靠性的端到端的通信,因此應用層可以忽略所有這些細節(jié)。應用層,負責處理特定的應用程序細節(jié)。關鍵點:應用程序位于應用層,TCP協(xié)議在運輸層,在數(shù)據(jù)流從運輸層傳遞到鏈路層的過程中,TCP協(xié)議本身的底層實現(xiàn)正是我們要利用的所在。TCP協(xié)議在實現(xiàn)的時候為每條連接建立了七個定時器。按照它們在一條連接生存期內(nèi)出現(xiàn)的次序,分別為:connecti
7、onestablishmenttimer(連接建立定時器)、retransmissiontimer(重傳定時器)、delayedACKtimer(延遲ACK定時器)、persisttimer(持續(xù)定時器)、keepalivetimer(?;疃〞r器)、FIN_WAIT_2timer、TIME_WAITtimer。4.2KeepAliveTimer(?;疃〞r器)在《TCPIP協(xié)議詳解卷2:實現(xiàn)》中,這樣描述KeepAliveTmer:Kee
8、pAliveTmer在應用進程選取了Socket的SO_KEEPALIVE選項時生效。如果連接的連續(xù)空閑時間超過2小時,?;疃〞r器超時,向?qū)Χ税l(fā)送連接探測報文段,強迫對端響應。如果收到了期待的響應,TCP可確定對端主機工作正常,在該連接再次空閑超過2小時之前,TCP不會再進行?;顪y試。如果收到的是其他響應,TCP可確定對端主機已重啟。如果連續(xù)若干次?;顪y試都未收到響應,TCP就假定對端主機已崩潰,盡管它無法區(qū)分是主機故障(例如,系統(tǒng)崩潰
9、而尚未重啟),還是連接故障(例如,中間的路由器發(fā)生故障或電話線斷了)。4.3KeepAliveTimer工作機理分析123455.15.25.35.3.1?;疃〞r器在2小時空閑后超時收到一個報文段后,將復位連接的?;疃〞r器,重設為2小時,并清零連接的空閑計數(shù)器。如果?;疃〞r器超時(收到最后一個報文段2小時后),并且置位了Socket的保活選項,則TCP將向?qū)Χ税l(fā)送連接探測報文段。如果定時器超時,且未置位Socket的?;钸x項,則TCP將
10、只復位定時器,重設為2小時,不向?qū)Χ税l(fā)送連接探測報文段。當然,如果應用進程調(diào)用了close,即使連接已空閑了2小時,TCP也不會發(fā)送連接探測報文段。5.3.2進行?;顪y試當?;疃〞r器發(fā)送連接探測報文后,如果對端無響應,TCP最多以75秒的間隔發(fā)送9個連接探測報文段。TCP在確認連接已死亡之前必須發(fā)送多個連接探測報文段的一個原因是,對端的響應很可能是不帶數(shù)據(jù)的純ACK報文段,TCP無法保證此類報文段的可靠傳輸,因此,連接探測報文段的響應有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 異常情況處理方案
- 班組異常情況處理方案
- 條形碼異常情況處理辦法
- 異常情況報告制度
- [教育]針灸異常情況的處理及預防
- 針灸會出現(xiàn)的異常情況及處理方法
- 消弧線圈的結(jié)構(gòu)與異常情況處理
- 倉庫管理異常情況記錄表
- 異常情況說明書.pdf
- 康復理療科異常情況的預防和處理
- 縣公共資源交易異常情況應急處理辦法
- 淺談鉆孔灌注樁施工及異常情況問題處理
- 體檢報告主要陽性結(jié)果及異常情況
- 3.2.3針灸推拿異常情況的處理和預防規(guī)范
- 學生成績錄入異常情況登記表
- 家庭異常情況智能監(jiān)控系統(tǒng)設計與實現(xiàn).pdf
- fr-aq0107監(jiān)控中心視頻異常情況記錄
- 反應釜出現(xiàn)異常情況的應急預案
- 1030mw機組#5瓦振動異常情況分析
- 反應釜出現(xiàn)異常情況的應急預案
評論
0/150
提交評論