Windows 8에서 요청이 실패하는 시점을 확인하는 방법

Windows 8에서 요청이 실패하는 시점을 확인하는 방법

포트 80에서 간단한 웹 페이지를 가져오려고 시도하는 Windows 8의 작은 스크립트를 테스트하고 있습니다. 그러나 오류로 인해 네트워크 연결이 매번 실패합니다.10053.

처음에는 방화벽 문제(McAffee를 실행 중임)에 대해 생각했지만 더 이상 확실하지 않습니다(로그에 아무것도 없고 방화벽을 비활성화해도 여전히 실패합니다).

그렇다면 문제를 구분하기 위해 무엇을 할 수 있습니까? 예를 들어, 요청이 네트워크 카드를 떠났는지 여부를 어떻게 확인할 수 있습니까?

Wireshark를 실행했는데 실제로 작은 활동이 표시되었습니다.

(나) SYN

(원격 IP) SYN, ACK

(나) ACK

(나) RST, ACK

그렇다면 요청이 실제로 전송되었다는 뜻인가요?

미리 감사드립니다

답변1

윈속 오류10053 = "WSAECONNABORTED":

SOCKET_ERROR: 설정된 연결이 호스트 시스템의 소프트웨어에 의해 중단되었습니다.

언급된 "소프트웨어"는 (대부분)윈속그 자체.

설립하다이 페이지, 이것은 아마도 당신의 스크립트가 적절한 HTTP 헤더를 형성하지 않는다는 점에서 당신이 겪고 있는 상황을 정확하게 다루는 것처럼 보이는 훌륭한 광고문을 가지고 있습니다.

HTTP POST가 HTTP 서버로 전송됩니다.
서버는 POST를 읽기 시작하고 HTTP 요청 헤더가 유효하지 않음을 확인합니다.
즉시 HTTP 응답(오류 상태, 아마도 status=400)을 보내고 앞으로 나올 HTTP 요청의 나머지 부분을 계속 읽으려고 시도하지 않고 연결을 닫습니다.

그 사이에 클라이언트는 여전히 HTTP 요청의 나머지 부분을 소켓에 성공적으로 쓰고 있습니다. (TCP/IP 소켓 연결은 양쪽에서 닫혀야 한다는 점을 기억하십시오. 이 경우 서버는 자신의 쪽을 닫았지만 클라이언트는 여전히 반쯤 열린 연결로 데이터를 펌핑하고 있습니다.)

클라이언트는 HTTP POST 쓰기를 완료합니다. 소켓 - 데이터가 Winsock에 버퍼링되었음을 의미합니다. 그런 다음 클라이언트 응용 프로그램은 HTTP 응답을 읽으려고 시도하지만 WinSock에 의해 버퍼링된 데이터의 나가는 재전송이 실패하고 소켓 연결이 클라이언트 측(Winsock에 의해) 종료되었기 때문에 읽을 수 없습니다. HTTP 서버가 응답을 보냈지만 손실되어 검색할 수 없습니다. 소켓에서 HTTP 응답을 읽으려고 할 때 애플리케이션이 받게 되는 오류는 WSAECONNABORTED입니다.

관련 정보