搜索
Table_bottom

标签云
Table_bottom

分类
Table_bottom

声明
文章若未特別註明,皆採用 知识共享许可协议 請自覺遵守
Table_bottom

存档
Table_bottom

匆匆过客
31916
Table_bottom

功能
Table_bottom

逸事:死鎖之銳捷與AP

本文早就想寫了,但是直到寫這篇文章時纔決定要寫下來。

 

這件事發生時,我所用的操作系統是Windows 7 64bit Home Premium。

 

我們學校的上網方案採用的是銳捷。

銳捷上網撥號要用它的客戶端,而用電腦共享有線網絡當AP這事也是完全正常的。

本來銳捷客戶端是它的客戶端,使用完全正常。我嫌每次共享網絡都要自己敲一大串命令費事,也爲了給別人設置方便,就寫了個批處理文件來解決。

問題就出在這裏:一旦在開啓銳捷客戶端的同時運行那個批處理,就會發生死鎖。(從彈出UAC提示到客戶端窗口打開,中間需要一段時間,就在那段時間/UAC提示之前運行批處理)

具體表現是:銳捷認證成功;批處理的執行窗口沒有內容,但不會自動關閉;關機永遠無法完成,除非手動斷電。

這個現象經反復測試,每次都會重現。

我猜想原因是銳捷要使用網絡設備,於是進行某種程度的加鎖;而做AP的那個腳本使用Windows(Windows Vista起)自帶的一個叫Microsoft Virtual WiFi Adapter的東西,事先也要加鎖。這兩個動作導致調度出現問題,最後鎖上釋放不掉了……

 

有更清楚者望告知,謝過。

逸事:winsock導致網絡連接異常

(本文實寫於20140701)

昨天艾寧拎着電腦說上不去網,我就順手一查,結果發現這個事。

幾個基本情況:

操作系統是Windows7 64bit Home Basic,360之類的東西在我的勸說下卸載了,殺毒/反間諜軟件用的是微軟的MSE和Windows Defender。

之所以說是異事,因爲本身它有網絡連接,甚至共享網絡(通過自帶的Microsoft Virtual Wifi Adapter)給手機當AP時,手機都可以正常上網。

在確保有網絡連接的情況下(月底了,流量還有不少,就用我的手機當熱點),測試了一些命令,可以訪問因特網:

  • ping
  • tracert
  • nslookup
  • ftp

上面幾個命令發送了ICMP、UDP、TCP數據包,均可以訪問,說明並沒有哪個地方對特定類型包進行過濾。

本來還打算試試SSH,但是沒有合適的工具。抱着碰運氣的心態裝32bit的cygwin(沒有64位的包),嘗試ssh說無法解析,百思不得其解,於是又給刪掉了。

這裏有一個好玩的事:在*nix下,traceroute/tracepath使用的是UDP,而windows的tracert命令發送的是ICMP包。

但是當使用網絡瀏覽器時,不論是HTTP還是FTP都會出問題。

 

最後上網搜查一番,查到了一條命令:

netsh winsock reset

本來衹是抱着試試看的心態,結果還真就有用……

再細查,這條命令的作用是重置winsock。所以我就奇怪:winsock是何方神聖,會引起這麼大的問題?繼續翻閱資料,發現這貨其實就是windows的套接口API,原來叫Windows Sockets API,後來嫌長就給縮短了……

修復了這個問題之後,我仔細問她究竟做了些什麼。結果發現:她什麼都沒做……且網上搜到的那些文章也都說是莫名其妙就出了問題。

所以……原因完全找不到,也不知道這個問題下次什麼時候會發作……

再加上windows經常出現的奇怪死鎖現象(見這篇文章)……

 

三分慶幸:幸好不用windows多年了……

七分憂慮:windows上究竟有多少預料外的事會發生……

 

參考資料:

http://en.wikipedia.org/wiki/Winsock

http://my.oschina.net/u/246088/blog/71531

http://biaobiaoqi.me/blog/2013/04/23/winsock-kills-internet/

 

 

另,如有哪位知道原因,煩請賜教,在此謝過。