raw socket 예제

IP 프로토콜에 대한 Winsock 서비스 공급자는 SOCK_RAW의 소켓 유형을 지원할 수 있습니다. Windows에 포함된 TCP/IP용 Windows 소켓 2 공급자는 이 SOCK_RAW 소켓 유형을 지원합니다. 예를 들어 대상 포트는 TCP 헤더에 저장됩니다. 즉, 원시 소켓에서 읽은 패킷에는 «포트»라는 개념이 없습니다. 다음 몇 가지 표에서는 인증 확장 헤더(AH)와 캡슐화된 보안 페이로드 확장 헤더(ESP 헤더)의 예를 제공합니다. AH는 데이터 원본 및 무결성 인증을 제공합니다. ESP 헤더는 기밀성, 데이터 원본 및 무결성 인증, 재생 방지 서비스 및 제한된 트래픽 흐름 기밀성을 제공합니다. AH 헤더와 ESP 헤더의 주요 차이점은 적용 범위입니다. 특히 ESP는 해당 필드가 ESP(터널 모드)로 캡슐화되지 않는 한 IP 헤더 필드를 보호하지 않습니다. 각 RFC(아래 제공)는 암호화 요구 사항을 설명합니다. 예제에서는 암호화가 수행되지 않습니다. 다양한 네트워크 환경에서 AH 및 ESP를 사용하는 방법에 대한 자세한 내용은 보안 아키텍처 문서 RFC 4301을 참조하십시오. IP 보안(IPsec) 프로토콜(AH 및 ESP)은 전송 모드 또는 터널 모드에서 사용할 수 있습니다.

RFC 4301의 섹션 5.1.2.2는 터널 모드에서 내부 확장 헤더(있는 경우)가 복사되어 외부 확장 헤더로 복사되지 않지만 원하는 대로 새 외부 확장 헤더를 만들 수 있다고 명시합니다. Windows에서 TCP/IP를 Microsoft에서 구현하면 위의 제한 사항에 따라 원시 UDP 또는 TCP 소켓을 열 수 있습니다. 다른 Winsock 공급자는 원시 소켓사용을 지원하지 않을 수 있습니다. 아주 좋은 예와 설명. 나는 내 프로그램에서 만들어진 TCP 패킷을 보내기 위해 원시 소켓을 사용하기 때문에, 나는 정확한 변수, 구조 등에 대한 웹의 예를 찾고 있었고, 그 중 많은 것을 읽은 후, 나는 선생님을 말할 수 있습니다, 당신의 설명은 우수하다. 뿐만 아니라 당신은 모든 올바른 필드를 언급하고 있습니다. 당신은 또한 몇 가지 훌륭한 예와 함께 그것을 사용 하 여 시연. 헤더에 hton`d가 필요한 여러 필드가있는 것처럼 보이며이 예제에는 나타나지 않는 것 같습니다… 이 코드는 99%의 시간 동안 작동하지만 완전히 이식가능한 것은 아닌 일부 아키텍처 가정을 만듭니다. 예를 들어 체크섬 계산에서는 short가 2바이트라고 가정하며, 더 큰 모든 것에 대해 segfault를 사용할 가능성이 높습니다. 2.

IP_HDRINCL 소켓 옵션을 1로 설정 – 이것은 위와 동일합니다. 또 다른 방법. SOCK_RAW 형식의 소켓을 사용하는 응용 프로그램에 대한 추가 제한 사항이 있습니다. 예를 들어 특정 프로토콜을 수신하는 모든 응용 프로그램은 이 프로토콜에 대해 수신된 모든 패킷을 수신합니다. 프로토콜을 사용하는 여러 응용 프로그램에 대해 원하는 것이 아닐 수 있습니다. 이는 고성능 응용 제품에도 적합하지 않습니다. 이러한 문제를 해결하려면 특정 네트워크 프로토콜에 대해 Windows 네트워크 프로토콜 드라이버(장치 드라이버)를 작성해야 할 수 있습니다. Windows Vista 및 이후의 Winsock 커널(WSK)에서는 새로운 전송 독립적 커널 모드 네트워크 프로그래밍 인터페이스를 사용하여 네트워크 프로토콜 드라이버를 작성할 수 있습니다. Windows Server 2003 이전 및 이전에서는 네트워크 프로토콜을 지원하기 위해 TDI(전송 드라이버 인터페이스) 공급자와 Winsock 도우미 DLL을 작성할 수 있습니다. 그러면 네트워크 프로토콜이 Winsock 카탈로그에 지원되는 프로토콜로 추가됩니다. 이렇게 하면 여러 응용 프로그램이 이 특정 프로토콜에 대한 소켓을 열 수 있으며 장치 드라이버는 특정 패킷 및 오류를 수신하는 소켓을 추적할 수 있습니다. 네트워크 프로토콜 공급자 작성에 대한 자세한 내용은 WDK(Windows 드라이버 키트)의 WSK 및 TDI 섹션을 참조하십시오.

원시 소켓을 얻으려면 루트로 실행해야 합니다. 당신은 pcap이 필요하지 않습니다. Raw 소켓은 기본 전송을 조작할 수 있는 기능을 제공하므로 보안 위협을 야기하는 악의적인 용도로 사용할 수 있습니다. 따라서 관리자 그룹의 구성원만 Windows 2000 이상에서 SOCK_RAW 형식의 소켓을 만들 수 있습니다.