2013-05-10 4 views
0

여러 UDP 포트에서 수신 대기하고 수신 된 데이터 그램을 이더넷 프레임으로 처리해야합니다. 이더넷 프레임을 수신하기 위해 SOCK_RAW 소켓을 작성하는 것 외에 다른 솔루션을 생각할 수 없습니다.받은 데이터가 UDP 데이터 그램인지 확인한 다음 데이터 그램을 추출하여 UDP 포트를 식별하십시오.UDP 포트에서 이더넷 프레임 수신

더 좋은 방법이 있습니까? 특정 포트에서 UDP 데이터 그램을 수신하고 전체 이더넷 프레임에 계속 액세스 할 수있는 일종의 소켓이 있습니까?

답변

1

pcap 라이브러리를 사용하는 것이 좋습니다. 그것은 어렵지 않고 광범위한 시스템 사이에서 이식 가능합니다. 원하는 것을 필터링하고 캡처 할 수 있습니다.

의 libpcap과은 WinPcap 프로토콜 분석기 (패킷 스니퍼), 네트워크 모니터, 네트워크 침입 탐지 시스템, 트래픽 발생기 및 네트워크를 포함한 많은 오픈 소스 및 상용 네트워크 도구의 패킷 캡처 및 필터링 엔진 을 제공 -testers.

또 다른 제안은 높은 수준의 패킷 생성자 및 디코더 인 libcrafter입니다. 그것은 C++이긴하지만. 이 플랫폼에서 지원하지만, 노력하면

+1

이것은 당신이 찾고있는 대답이다. NIC는 모든 헤더 정보를 처리 한 다음 패킷을 커널에 전달하기 때문에 (즉, 커널이 생각하지 않는 헤더를 보지 못함) 장치 드라이버를 작성하지 않고 프레임에 액세스 할 수 없습니다. 그러나 UDP 패킷을 얻으려면 실제로 헤더를 필요로하지 않습니다. UDP 패킷에 포트가 있기 때문에 실제로 포트가 어떤 패킷을 보내야하는지 구분하기 때문입니다. – Magn3s1um

관련 문제