音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

TCPIP協(xié)議怎樣診斷網(wǎng)絡(luò)已斷開?

作者:smartsheep 欄目:嵌入式系統(tǒng)
TCPIP協(xié)議怎樣診斷網(wǎng)絡(luò)已斷開?
我的目標(biāo)板和服務(wù)器通過以太網(wǎng)鏈接,第一次開啟連接能連上,但我把服務(wù)器斷開后再開啟時(shí)發(fā)現(xiàn)連不上了,查看我的代碼,應(yīng)該是目標(biāo)板根本不知道服務(wù)器曾經(jīng)斷開,也就沒有重新建立鏈接。

我想問問各位高手,TCPIP協(xié)議怎樣診斷網(wǎng)絡(luò)已斷開,服務(wù)器關(guān)閉服務(wù)和網(wǎng)線斷開這兩種軟件和物理的斷開對它來說有區(qū)別嗎。
我用的是RTL8018AS.

2樓: >>參與討論
sockit
-
ping

3樓: >>參與討論
smartsheep
再問
您的意思是在程序中定時(shí)去ping服務(wù)器,如果ping不通就通知網(wǎng)絡(luò)已斷開?

但這樣會(huì)不會(huì)效率太低了?我想應(yīng)該有類似中斷的方法吧?

4樓: >>參與討論
rockos
RTL8019AS.html">RTL8019AS有自己診斷網(wǎng)絡(luò)連接是否正常的功能.
RTL8019可以自己診斷網(wǎng)絡(luò)連接是否正常的, 建立一個(gè)周期的輪循, 在一秒內(nèi)無接收到的數(shù)據(jù)就去輪循一次, 可以立即發(fā)現(xiàn)網(wǎng)絡(luò)連接是否正常.



5樓: >>參與討論
gdtyy
《TCP/IP詳解》上有詳細(xì)說明
    當(dāng)“文明關(guān)閉”時(shí),主動(dòng)關(guān)閉一方發(fā)送FIN指示對端關(guān)閉鏈路,4次握手后,雙方關(guān)閉通道。當(dāng)拔掉網(wǎng)線后,雙方會(huì)根據(jù)發(fā)送超時(shí)判斷鏈路斷開,若恰好沒有發(fā)送,就要等比較長時(shí)間---2小時(shí)。
    當(dāng)你斷開服務(wù)器時(shí),你調(diào)用的讀寫函數(shù)會(huì)立即退出并返回-1,你只要重連即可。如果粗暴地?cái)嚅_網(wǎng)線,一般經(jīng)過一段時(shí)間后,協(xié)議棧就會(huì)識(shí)別出鏈路斷開,不過這需要一段反應(yīng)時(shí)間。
    你再查查你的代碼關(guān)于鏈路關(guān)閉的部分。另外,為避免判斷錯(cuò)誤,TCP棧會(huì)故意延遲2個(gè)MSS時(shí)間,這是有益的,但增加了重連時(shí)間。
    TCPIP協(xié)議診斷網(wǎng)絡(luò)已斷開與8019無關(guān)。
    (好象是這樣,再看看書吧)

* - 本貼最后修改時(shí)間:2006-7-23 21:36:05 修改者:gdtyy

6樓: >>參與討論
buaazy
這個(gè)問題我也想知道,
原來我就是用ping,不過太麻煩了,像windows就可以檢查出來,我想一定有接口的

7樓: >>參與討論
rockos
一般的NIC都有這個(gè)功能

查一下手冊就知道了,但不直接或間接地訪問設(shè)備, 單純依靠IP協(xié)議簇, 俺真不知道如何判斷.



8樓: >>參與討論
smartsheep
回gdtyy
嵌入式系統(tǒng)中的TCPIP協(xié)議棧是精簡過的,不具備你說的握手關(guān)閉鏈路的功能。

我也詳細(xì)查過8019as的手冊,沒看到有診斷網(wǎng)絡(luò)斷開的功能;據(jù)我向朋友了解,在嵌入式系統(tǒng)里一般是通過心跳包來保證網(wǎng)絡(luò)的鏈接的,如果過了心跳包間隔時(shí)間還沒收到心跳包的回復(fù)包,那么就認(rèn)為網(wǎng)絡(luò)已斷開。

9樓: >>參與討論
rockos
re smartsheep
心跳包用于檢測對端服務(wù)是否有效,是一種點(diǎn)對點(diǎn)的應(yīng)用算法,與網(wǎng)絡(luò)是否中斷無關(guān)。

網(wǎng)絡(luò)連接是否中斷只能檢測自己的網(wǎng)口狀態(tài),不能檢測對端的網(wǎng)口狀態(tài)。你到低是要檢測RTL8019AS的網(wǎng)口狀態(tài)呢?還是要檢測對端服務(wù)的狀態(tài)呢?

檢測RTL8019AS網(wǎng)口連接狀態(tài)的方法在RTL8019ASDS手冊,全名<<RTL8019AS REALTEK Full-Duplex Ethernet Controller with Plug and Play Function (RealPNP)>>第45頁一開始,6.6.2節(jié),(4)標(biāo)題。

再不會(huì)我也懶得理了

10樓: >>參與討論
smartsheep
re rockos
如果網(wǎng)絡(luò)中斷,心跳包肯定就收不到回復(fù)包,怎么會(huì)跟網(wǎng)絡(luò)中斷沒關(guān)系呢?

另外對我來說,網(wǎng)絡(luò)中斷和服務(wù)器服務(wù)中斷的結(jié)果是一樣的,在我的嵌入式系統(tǒng)里,網(wǎng)絡(luò)只為一個(gè)程序服務(wù)。我已經(jīng)用心跳包實(shí)現(xiàn)了我的目的。

不過還是非常感謝你的意見。

11樓: >>參與討論
eleven11
PING為什么麻煩?
其實(shí)這個(gè)是判斷網(wǎng)絡(luò)是否一直連接的問題,TCP/IP協(xié)議好象都是通過上層協(xié)議判斷的,書里面都不建議放在TCP協(xié)議里面,當(dāng)然,如果你對手里面的協(xié)議棧非常熟悉,想怎么改都可以

12樓: >>參與討論
趙崇偉
windows不是高層協(xié)議判斷的
是由網(wǎng)卡驅(qū)動(dòng)做的工作,一般tcp/ip的定時(shí)器長達(dá)5分鐘左右才能發(fā)現(xiàn)斷開。

13樓: >>參與討論
wujianbo
談?wù)勎易龅?1控制RTL8019
我用了uip0.9,實(shí)際上我也一直擔(dān)心是不是在沒有傳輸數(shù)據(jù)時(shí)會(huì)斷開連接
實(shí)際上沒有,我做的是TCP方式傳輸數(shù)據(jù),很穩(wěn)定可靠
但是怕被斷開,加入了巡檢信號(hào),由服務(wù)器發(fā)出,服務(wù)器是PC機(jī)充當(dāng)?shù)?br>并對巡檢信號(hào)做出回答
不知道這樣是否可靠

14樓: >>參與討論
gdtyy
IP網(wǎng)絡(luò)的鏈路控制信息不全,
    不象電路交換網(wǎng)絡(luò)那樣有專用的控制信令通道,能夠及時(shí)發(fā)現(xiàn)通路斷開/故障,并拆線。除了靠四次握手明確關(guān)閉線路,IP網(wǎng)絡(luò)只能用超時(shí)判斷線路是否斷開,沒有更多的信息可供參考,而IP網(wǎng)基于存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制,根據(jù)路由的不同,往返時(shí)間是不固定的而且變化范圍很大,因此要根據(jù)傳輸情況預(yù)測往返時(shí)間,然后在此基礎(chǔ)上確定超時(shí)值,即使超時(shí),也要重復(fù)若干次并加倍超時(shí)時(shí)間才能肯定地判斷是否斷線。這個(gè)判斷時(shí)間相當(dāng)可觀,而且不固定。
    如果心跳包的間隔時(shí)間很短,容易造成錯(cuò)誤判斷,尤其是網(wǎng)絡(luò)擁塞時(shí),也許數(shù)據(jù)包正存儲(chǔ)在路由器內(nèi)存里,過一會(huì)才會(huì)轉(zhuǎn)發(fā),而你因?yàn)闆]有及時(shí)收到心跳包就判斷鏈路斷開,造成不必要的人為斷線干擾。更何況你的心跳包間隔時(shí)間是固定的,在全球互聯(lián)網(wǎng)里肯定是不合適的。如果你的心跳包間隔時(shí)間很長,就和我說的情況一樣了。因此,用心跳包檢測鏈路通斷不科學(xué),可能誤判。
    有些網(wǎng)絡(luò),例如:以太網(wǎng),有載波檢測功能,拔掉網(wǎng)線,只能影響媒介探測程序,使協(xié)議棧掛起,說明介質(zhì)移動(dòng)了,暫時(shí)不能用,過一小段時(shí)間后再插上網(wǎng)線,仍然可以繼續(xù)連接。媒介探測和鏈路斷開判斷似乎是分別進(jìn)行的。以太網(wǎng)沒有載波肯定是斷線了,本端可以立即知曉,但對端仍不清楚,況且網(wǎng)線還有再次插上的可能,所以程序的判斷策略設(shè)置成等待超時(shí)是比較合理的,不過具體情況要看軟件策略了。
    PING基于ICMP協(xié)議探測網(wǎng)絡(luò),一般維護(hù)時(shí)以命令行方式使用。它是一種靈活有效的測試工具,但不會(huì)在程序里使用。
    TCP鏈路的連通只在連接雙方記錄狀態(tài),物理通道內(nèi)不存在一個(gè)實(shí)際的連接鏈路,所以,當(dāng)沒有數(shù)據(jù)傳輸時(shí)TCP鏈路永遠(yuǎn)不會(huì)斷開,分配的資源也不會(huì)被釋放。為了防止意外情況造成沒有數(shù)據(jù)傳輸時(shí)鏈路斷開引起的SOCKET數(shù)據(jù)結(jié)構(gòu)占用的內(nèi)存不被釋放的問題,TCP可以選擇使能keepalive功能,定期(2小時(shí))探測鏈路情況。樓上不必自己增加巡檢信號(hào)包(勢必增加多余數(shù)據(jù)),TCP本身支持keepalive功能,而且探測時(shí)帶寬消耗很小。在沒有數(shù)據(jù)傳輸時(shí)依賴keepalive確保斷線檢測,在傳輸數(shù)據(jù)時(shí),TCP會(huì)通過超時(shí)判斷是否斷線的。

15樓: >>參與討論
wujianbo
可是在uip0.9中有沒有keepalive?好像沒有
這個(gè)協(xié)議棧是一個(gè)小型的協(xié)議棧,在uip0.9中使用一個(gè)全局的緩沖區(qū)來存放數(shù)據(jù)
至于說到TCP的生命周期,協(xié)議的官方文檔中明確指出是15-30秒,意味如果斷線或者拔掉網(wǎng)線以后,還可以維持一段時(shí)間,就是15-30秒,uip0.9中好象真的沒有keepalive這個(gè)東西,是計(jì)算機(jī)網(wǎng)絡(luò)上的吧,對這塊我不是很了解

16樓: >>參與討論
shima_1999
uip不知道斷開的,需要自己輪循時(shí)檢查
我們做GPRS時(shí),是通過解析服務(wù)器域名變化的辦法來知道服務(wù)器已經(jīng)斷開過。心跳只是用來告訴服務(wù)器客戶端的地址的,并且是從客戶到服務(wù)器的單向發(fā)送。

17樓: >>參與討論
wujianbo
樓上,我也快要做GPRS了
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
一段串口程序
哪位兄弟姐妹又嵌入式的舊的開發(fā)板啊
求助:請各位大大幫我看看這個(gè)問題(S3C44B0),謝謝!
誰能給我個(gè)程序?
看看矢量中斷,
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)