2010-03-22 29 views
1

我可以使用PHP腳本發送IGMP數據包嗎? IGMP是否在傳輸層上?使用PHP發送IGMP

我正在查看一些目標爲224.0.0.251的JOIN數據包。

我注意到IP頭沒有分配端口,但確實指定了MAC地址,這使我相信IGMP不在傳輸層上,而是在網絡層上。 (希望我說得對)

有人能爲我澄清這件事嗎?我只是想發送一個JOIN包。

我正在閱讀rfc3376試圖找到答案,但它只是顯示瞭如何構建一個答案。試圖這樣做,我只是得到一個畸形的數據包。

回答

0

可能不會與現有的PHP手段。現有的擴展允許你訪問TCP/UDP層,但不能在下面。您可能可以使用一些命令行工具,如Nemesis project的nemesis-igmp來執行此操作。

1

傳統上,您會使用套接字選項IP_ADD_MEMBERSHIP(和相應的IP_DROP_MEMBERSHIP)加入多播組。這會觸發操作系統生成IGMP加入數據包。

這些選項是使用IPPROTO_IP「級別」設置爲setsockopt()

據有關bugs.php.net網站,這些選項不可用默認this問題。但是,在該頁面上列出的補丁應該將它們添加到您的php安裝中。