Windows Vista 之後的作業系統,在網路的部份有著非常大的變動:
- TCP/IP 完全重寫 (不論是 IPv4 或 IPv6)
- 以下不再支援:
- Firewall-hook driver / filter-hook driver
- R 系列工具 – 只能透過 services for Unix
- rexec, rsh, finger, …
- IPX 通訊協定
- 防火牆掛鉤 APIs 已經完全被 Windows Filtering Platform (WFP) 所取代
- 不能再使用內部的 API 呼叫或掛鉤機制
- 網路掃瞄、防火牆、防毒軟體,這些軟體如果是使用內部的 API 呼叫或資料結構,會無法正常執行
- 因此原本在 Windows XP 上可以執行的防毒軟體,在 Windows 7 中就不能執行,一定要安裝支援 Windows 7 的新版本。
- IP V4 與 IP V6 使用相同的 API
- IP V6 位址預設啟用,而且優先使用
- IPv6 移轉文件
- Checkv4.exe 工具能夠偵測移轉上的問題
參考資料:https://msdn.microsoft.com/en-us/library/ms740624(v=vs.85).aspx - 不要再使用 GetHostByName 方法,改用 GetAddrInfo
- 以上改變會造成以下問題:
- 使用第一個 IPv4 位址,或是使用名稱來取得 IPv4 位址的應用程式,有可能會抓到 IPv6 的位址,而造成緩衝區溢位。
- 在只有 IPv6 的主機上執行 IPv4 應用程式會發生問題。
- 應用程式預期會接收到IPv4 的訊息,但是卻接收到 IPv6 訊息,而無法處理,甚至是發生錯誤。