[RAW 소켓으로 TCP 구현하기] winsock으로는 windows xp sp2이후의 환경에서 어떤방법을 사용해도 메시지를 전송할수 없는건가요? 조언 부탁드립니다
MSDN이나 다른 여러 사이트들을 봐도 windows xp sp2이후부터는 RAW소켓 사용시 TCP는 클라이언트에서 send가 불가능하고, UDP는 송신주소를 변경하는 행위가 안된다고 되어있습니다.
그런데 구글링중에 어떤 댓글을 봤는데요. OS에서 보안기능 때문에 RAW 소켓이 작동하지 않는것으로 보안기능을 끄면 된다는 내용이었습니다.
해당 글에 희망을 가지고 일단 코딩을 시작하게되었습니다. (제가 사용중인 OS는 Windows7 64bit)
현재, UDP RAW소켓은 정상작동을 확인하였고, TCP는 역시나 작동하지 않고있습니다. 방화벽을 해제하고, 제어판 관리도구에서 통신관련 보안기능을 중지시켜도 작동하지 않습니다.
현상황
1. 내컴퓨터에 server, client 모두 구현
2. 가상머신 사용 X
3. TCP,UDP모두 server는 RAW 소켓아님. client만 RAW 소켓으로 구현하였음.
4. TCP 구현시 socket() 함수를 2가지 방법으로 사용해봄
- socket(AF_INET,SOCK_RAW,IPPROTO_RAW) : sendto() 함수까지 오류없이 정상작동, 서버에서 아무런 응답이없음(accept()함수 대기중 아무런 반응이 없음).
- socket(AF_INET,SOCK_RAW,IPPROTO_TCP) : sendto() 함수에서 10022오류 지속적으로 발생.
5. TCP, UDP모두 디버깅으로 전송할 버퍼에 입력된 헤더들의 형태 확인 완료 이상없다고 판단됨.
질문
정말로 windows xp sp2이후의 환경에서 어떤방법을 사용해도 메시지를 전송할수 없는건가요? ㅜㅜ
댓글 달기