搜索
Table_bottom

标签云
Table_bottom

分类
Table_bottom

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

存档
Table_bottom

匆匆过客
28871
Table_bottom

功能
Table_bottom

逸事: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/

 

 

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