2012-08-31 64 views
3

我想知道如何使用原始數據通過網絡發送數據包。我需要能夠獲取LAN上設備的物理地址,因此我計劃廣播或組播ARP數據包。PHP發送原始數據包

下面是一個正確構造的ARP請求設備的IP數據包。

0000 00 1e e5 fb a5 21 00 1a 70 dd e1 f2 08 06 00 01 .....!.. p....... 
0010 08 00 06 04 00 01 00 1a 70 dd e1 f2 c0 a8 01 01 ........ p....... 
0020 00 00 00 00 00 00 c0 a8 01 90      ........ ..  

這是十六進制的原始數據。

如果我想讓ASCII碼的數據變得很簡單,就像打開一個套接字併發送帶有正確端口號的信息一樣簡單? 其實,因爲這是2級而不是3級,那就意味着沒有TCP和UDP(我認爲?),那麼我怎麼會發出這個呢?

+0

'pack()'+ sockets? – zerkms

+0

請定義什麼是「原始數據包」 –

回答

2

ARP在鏈路層上運行,TCP套接字和UDP在IP上運行。 PHP可以使用原始的IPv4套接字。使用socket_create()。文檔頁面上有示例。

還有一些shell工具可以實現這一點,並且從PHP內部,你可以使用exec()或相關函數來運行它們。

確切的工具和用法將取決於您的操作系統,您沒有在您的問題中提到過。

+0

可以顯示一個清晰的例子:)? – Osa

相關問題