2012-08-31 4 views
3

원시 데이터가있는 네트워크를 통해 패킷을 보내는 방법을 알고 싶습니다. 나는 브로드 캐스트 또는 ARP 패킷을 멀티 캐스팅 할 계획이므로 LAN에있는 장치의 실제 주소를 가져올 수 있어야합니다.PHP가 원시 패킷을 전송하는 중

다음은 장치의 IP를 요청하는 올바르게 구성된 ARP 패킷입니다.

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      ........ ..  

이것은 16 진수의 원시 데이터입니다.

대신 데이터를 ASCII 형식으로 입력하면 소켓을 열고 올바른 포트 번호로 정보를 보내는 것이 간단합니다. 사실,이 값은 3 대신에 레벨 2이므로 TCP와 UDP가 없다는 것을 의미합니다 (나는 생각합니까?) 그래서 이것을 어떻게 보내겠습니까?

+0

'pack()'+ 소켓입니까? – zerkms

+0

'원시 패킷'을 정의하십시오 –

답변

2

ARP는 링크 계층에서 실행되며 TCP 소켓과 UDP는 IP에서 실행됩니다. PHP는 원시 IPv4 소켓을 ipen 할 수 있습니다. socket_create()을 사용하십시오. 문서 페이지에는 예제가 있습니다.

CAN을 구성 할 수있는 쉘 도구가 있으며 PHP 내에서 exec() 또는 관련 함수를 사용하여 실행할 수 있습니다.

정확한 도구와 사용법은 사용자의 질문에 언급하지 않은 운영 체제에 따라 다릅니다.

+0

명확한 예를 보여줄 수 있습니까 :)? – Osa

관련 문제