如何在 Windows 的 TCP/IP 堆疊上停用多播?

如何在 Windows 的 TCP/IP 堆疊上停用多播?

我想在 Windows 上完全停用 TCP/IP 堆疊對多播的支援以進行診斷。我該怎麼做呢?

我希望在 Windows XP 上執行此操作,但如果無法提供,其他版本的說明也是可以接受的(伺服器和客戶端 SKU、所有變體、跨版本)。

答案1

Win7防火牆有封鎖IGMP的選項

入站規則、新規則、自訂、選擇協議,然後選擇 IGMP。出站規則,新規則,同上

我在 XP 防火牆中沒有看到這樣的選項。它知道 ICMP,但不知道 IGMP。

以下是病態回答中的內容

win7

http://technet.microsoft.com/en-us/library/cc957547.aspx HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IGMPLevel <-- set to 0 這就是病態的「答案」。

將 IGMP 等級設定為 0

作業系統

http://support.microsoft.com/kb/314053/en-gb

所有 TCP/IP 參數都是位於下列兩個不同子項之一下的登錄值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ID for Adapter

在這些鍵上,將 IGMPLevel 設為 0


不過,我還沒有測試過它,在我的系統上,在我的 Win7 系統或我的 XP 系統上。所以就我而言,我必須創建它。

答案2

*更新以反映正確糾正我的錯誤閱讀問題的答案。 ;)2014.07.25

如何在 Windows 的 TCP/IP 堆疊上停用多播?

我想在 Windows 上完全停用 TCP/IP 堆疊對多播的支援以進行診斷。我該怎麼做呢?

我希望在 Windows XP 上執行此操作,但如果無法提供,其他版本的說明也是可以接受的(伺服器和客戶端 SKU、所有變體、跨版本)。

似乎我忽略了多播部分,我的壞事已經有一段時間了..就多播而言,似乎你有一些選擇:

至於這裡請參考:強制 Windows 7 SP1 在 NIC 上停用多播

和這裡:Windows XP 的 TCP/IP 與 NBT 設定參數 (Q314053)

概括

本文定義了用於設定實作標準 TCP/IP 網路協定的協定驅動程式 Tcpip.sys 的所有登錄參數。

Windows XP 的 TCP/IP 協定套件實作從登錄中讀取其所有設定資料。作為安裝過程的一部分,此資訊由控制面板中的網路工具寫入註冊表。如果啟用了動態主機設定協定 (DHCP) 用戶端服務,則其中一些資訊也由動態主機設定協定 (DHCP) 用戶端服務提供... 閱讀更多。

有關如何編輯註冊表的信息,請查看註冊表編輯器(Regedit.exe) 中的“更改鍵和值”幫助主題或Regedt32.exe 中的“添加和刪除註冊表中的信息”和“編輯註冊表數據”幫助主題。請注意,您應該在編輯註冊表之前對其進行備份。如果您使用的是 Windows NT 或 Windows 2000,您也應該更新緊急修復磁碟 (ERD)。

若要變更這些參數,請使用下列程序:

Start Registry Editor (Regedit.exe).

From the HKEY_LOCAL_MACHINE subtree, go to the following key:

    >\SYSTEM\CurrentControlSet\Services 

Add a value to the key as described in the appropriate 
entry below by clicking Add Value on the Edit menu, typing 
the value, and then setting the value type under Data Type .

Click OK .

Quit Registry Editor.

Restart the computer to make the change take effect.

所有 TCP/IP 參數都是位於下列兩個不同子項之一的登錄值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Tcpip\Parameters
Tcpip\Parameters\Interfaces\ ID for Adapter 

其中 Adapter 的 ID 表示 TCP/IP 綁定到的網路介面卡。適配器 ID 和網路連線之間的關係可以透過檢查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network{4D36E972-E325-11CE-BFC1-08002BE10318}\ ID for Adapter \Connection 來確定。這些項目中的名稱值提供網路連線資料夾中使用的網路連線的友善名稱。後面的鍵下的值特定於每個適配器。同時存在 DHCP 和靜態配置值的參數可能存在也可能不存在,這取決於系統/適配器是否配置了 DHCP 以及是否已指定靜態覆蓋值。任何這些參數的變更都需要重新啟動系統才能生效

這是您正在尋找的鑰匙,我相信:

>IGMPLevel

    Key: Tcpip\Parameters
    Value Type: REG_DWORD - Number
    Valid Range: 0,1,2
    Default: 2

此參數決定係統在何種程度上支援IP多播並參與Internet群組管理協定。在等級 0,系統不提供多播支援。在等級1,系統只能傳送IP 群播封包。在第 2 級,系統可以傳送 IP 群播封包並完全參與 IGMP 接收組播封包。

您應該將註冊表項設為 0 以不支援多播。


希望這比之前的答案更有幫助。哈哈 :)


已編輯,請忽略以下內容:


回答問題「如何停用 Windows 的 TCP/IP 堆疊?」:

你不能!您可以重新安裝或重設。

“在 Windows XP 中,TCP/IP 堆疊被視為作業系統的核心元件,您無法刪除 TCP/IP。”

“在極端情況下,此問題的最佳解決方案可能是重新安裝 IP 堆疊。但使用 NetShell 實用程序,您可以重置 TCP/IP 堆疊,將其恢復到安裝作業系統時存在的狀態”

http://support.microsoft.com/kb/299357

參考這裡:http://www.techrepublic.com/forums/questions/how-to-uninstall-tcp-ip-in-win-xp/post-6ca59f30-d1ff-11e2-bc00-02911874f8c8/

另請參閱此處:“如何在 VC++ 中停用 Windows TCP/IP 堆疊 [以程式設計方式]「如下引用...

如何在 VC++ 中停用 Windows TCP/IP 堆疊 [以程式設計方式]

想知道如何在 VC++ 中停用 Windows TCP/IP 堆疊 [以程式設計方式]。

我們正在使用 winpcap 進行一些原始套接字程式設計。因此,我們的應用程式不需要 Windows TCP/IP 堆疊,我們希望在應用程式啟動時將其卸載。

請幫忙。

提前致謝。


TCP/IP 堆疊是任何現代作業系統的重要組成部分,包括最新版本的 MS Windows。正如上所解釋的MS 知識庫 Q299357(談論Win XP):

由於 TCP/IP 是 Windows 的核心元件,因此您無法刪除它。

無論如何,即使有可能,使用 TCP/IP 的程式(這是最現代的軟體,因為大多數包含某種網路整合、自動更新等)都無法運作,而且大多數程式可能會以神秘的方式失敗,因為沒有人測試過該配置。

所以簡短的回答是:不要這樣做。

也許您可以解釋為什麼您認為有必要刪除 TCP/IP 網路?那我們也許可以幫助您。

編輯:

根據您下面的評論,如果您想要繞過/停用 TCP/IP 堆疊的 ARP 處理,那麼 WinPcap 應該會讓您這樣做。如果沒有,您可能需要編寫自己的 Windows 網路驅動程式。同樣,這看起來非常複雜且具有侵入性。您能否描述一下您的應用程式的用途以及為什麼您甚至需要搞亂底層網路?

如果他們是你問題的答案,我的朋友,這似乎是徒勞無功的不,你不能

答案3

我在 XP 註冊表中查找這些金鑰,但找不到它們,所以我找到了更好的解決方案:

在提升的命令提示字元中:

C:\Windows\system32> netsh
netsh>firewall
netsh firewall>set multicastbroadcastresponse disable
netsh firewall>set multicastbroadcastresponse mode=disable profile=all

若要檢查配置是否正確,請撰寫:

netsh firewall>show multicastbrodcastresponse

netsh windowsxp

來源:Microsoft 網站 – “Windows 防火牆的 Netsh 命令”

XP 中不存在 IGMPLevel 註冊表項,如上圖所示。但是,該註冊表項必須建立後才能存在。

沒有 IGMPLevel 註冊表項 - Windows XP

除非,XP中的註冊表項是:「UseZeroBroadcast」。不管怎樣,就像之前在我的XP中工作一樣,至少wireshark不會偵測到224.0.0.1或239.255.255.255的廣播資料包。

重要提示:netsh firewall在較新版本的 Windows 中已棄用;代替使用netsh advfirewall firewall。有關使用netsh advfirewall firewall命令而不是 的更多信息netsh firewall,請參閱知識庫文章 947709:「如何使用上下文netsh advfirewall firewall而不是netsh firewall上下文來控制 Windows Server 2008 和 Windows Vista 中的 Windows 防火牆行為」。

相關內容