을 프로젝트의 일부로 보내고 HTTP 요청이 포함 된 IP 패킷을 Google에 보내려고합니다. Winpcap 라이브러리와 VC++를 사용하고 있습니다. 현재 TCP 세 방향 핸드 셰이 킹 패킷을 처리했지만 TCP ACK 패킷을 보내면 실제 HTTP 요청 패킷을 보내는 데 막혔습니다. wireshark를 사용하여 패킷을 캡처하면이 패킷은 "재조합 된 PDU의 TCP 세그먼트"로 표시됩니다. 프로토콜 열은 'HTTP'가 아닌 'TCP'입니다. 뭐가 문제 야? 이런 식으로 HTTP 패킷을 어떻게 보내겠습니까?원시 소켓을 사용하여 HTTP 요청을 보내고 WinPcap
답변
왜 WinPCap을 사용하여 패킷을 보내고 있습니까? 대신에 일반 소켓을 사용해야합니다. 더 좋게는 curl이나 Microsoft 자체의 WinInet 또는 WinHTTP API와 같은 HTTP 프로토콜을 구현하는 소켓 라이브러리를 사용하십시오.
반드시 잘못된 것은 아닙니다.
기본적으로 Wireshark는 TCP 데이터를 상위 레벨 프로토콜 처리기 (이 경우 전체 HTTP 요청 및 응답을 재구성하려고하는 핸들러)로 전달합니다. 그것은 순서의 최종 패킷 재 조립 메시지를 첨부하고, "어셈블 PDU의 TCP 세그먼트"로 다른 패킷 레이블 :
당신은 각각의 패킷을 검사하기 위해 재 조립 기능을 비활성화 할 수 있습니다 :
- 편집 -> 환경 설정 -> 프로토콜 -> TCP
- 의 선택을 취소
확장을 계획하고 있다면이 방법을 사용하기 전에 HTTP 프로토콜의 기초를 배우는 것이 좋습니다. 원시 소켓을 수행하고 요청을 내 보내면 혼란 스럽다. 일부 소스 코드를 읽으십시오.
하지만 실제로 pcap의 요점은 알 수 없습니다. 실제 소켓을 코딩하지 않으려면 Wininet 라이브러리를 사용할 수 있어야합니다. Wininet lib
그러나 원시 소켓을 코딩하려면 winsock을 사용하십시오. 일부는 HTTP와 TCP의 차이점을 이해하기 어렵습니다. HTTP는 TCP를 기반으로하므로 기술적으로 모두 동일합니다. TCP는 문자 그대로 수천 개의 응용 프로그램에 사용됩니다. 컴퓨터의 대부분의 연결은 TCP입니다.
HTTP 요청을 보내기 위해 pcap 프로그램을 사용하여 MITM 공격으로 연결을 가로 채려는 경우 Pcap에서 일부 프로그래밍을 배우게됩니다. 이에 대한 많은 자습서가 있습니다 (예 : this one).
추 신 : 초보자를위한 이해하기가 어렵 기 때문에 winsocks 자습서를 찾아보십시오. 또한 winpcap은 모든 시스템에서 지원되지는 않으며 설치할 때 통증이 생길 수 있습니다. 솔직히 winsock을 사용하는 것이 좋습니다. Wininet은 훨씬 더 많은 지원을하고 있으며, W2K + 빌드가 모두 wininet을 가지고 있다고 믿는다. 호환성을 위해 (나는 정말로 당신에게 문제라고 생각하지 않는다) wininet을 사용할 것이다. 또는 winsocks.
아마 \r\n
으로 요청을 완료하지 않았을 것입니다.
GET/HTTP/1.0\r\n
문자열을 보내면 패킷을받지 못합니다.
GET/HTTP/1.0\r\n\r\n
문자열을 보내야합니다.
- 1. HTTP POST 요청을 보내고 응답을받는 방법?
- 2. 서버에 HTTP POST 요청을 보내고 응답을 받으시겠습니까?
- 3. 소켓을 통해 HTTP 요청을 보내려고 시도합니다.
- 4. Java에서 원시 HTTP 요청을 어떻게 작성합니까?
- 5. vb6.0을 사용하여 https 사이트에 요청을 보내고 게시하십시오.
- 6. 원시 소켓을 사용
- 7. 소켓을 사용하여 http 서버에 도달
- 8. 요청을 보내고 system.io.pipes를 사용하여 응답받는 방법
- 9. 소켓으로 원시 HTTP 요청 만들기
- 10. HTTP 요청을 보내고 결과의 유효성을 검사하는 모든 maven 플러그인이 있습니까?
- 11. python으로 HTTP 요청을 보내고 받고, 세션 쿠키도 보내야합니다.
- 12. iPhone에서 요청을 보내고 파일 응답을 받으려면 어떻게합니까?
- 13. 프록시를 통해 Java에서 원시 HTTP 요청을 보내는 방법
- 14. 원시 HTTP 요청을 웹 응용 프로그램에 "꼬리"는 방법은 무엇입니까?
- 15. 원시 HTTP (퍼티)
- 16. POST 요청을 보내고 파일 응답을받는 방법?
- 17. 텔넷 또는 원시 소켓을 사용하여 파일을 게시하는 방법은 무엇입니까?
- 18. HTTP 요청을 HTTP 응답에 매핑
- 19. 원시 소켓을 특정 포트에 바인딩하는 방법은 무엇입니까?
- 20. 제 3 자에게 웹 요청을 보내고 응답을받습니다.
- 21. C#의 IP 프로토콜에서 원시 소켓을 사용하여 들어오는 패킷 읽기
- 22. MediaPlayer에서 HTTP 요청을 보내지 않습니까?
- 23. java에서 소켓을 사용하는 다중 HTTP 요청
- 24. 폴링 HTTP 요청을 죽입니다.
- 25. 일부 브라우저는 POST를 보내고 GET 요청을 전송합니다.
- 26. HTTP 1.1 Java에서 소켓을 사용하는 영구 연결
- 27. 별도의 스레드를 사용하여 http 요청을 수행하는 방법
- 28. C#의 TcpClient 소켓을 통해 SSL HTTP 요청 보내기
- 29. Linux에서 원시 소켓을 사용하여 수신 대기 TCP 소켓을 만들 수 있습니까?
- 30. NTLM 인증을위한 HTTP 웹 요청을 사용하여 HTTP 헤더 보내기