NC와 HTTP 파이프 라인 테스트,하지만 하나의 응답 만


1

나는 NC와 함께 HTTP 파이프 라이닝을 테스트 중이지만,

그래서 다음 줄을 포함하는 입력 파일을 만들었습니다.

GET / HTTP/1.1
Host: localhost

GET / HTTP/1.1
Host: localhost

이제 Nc로 제출합니다.

nc localhost 80 < test

하지만 단 하나의 HTTP 응답이 있는데, 무엇이 잘못 되었나요? 그리고 NC는 무언가를 기다리고 있습니다. 콘솔로 돌아 가지 않습니다.

답변:


2

하나의 연결에서 여러 요청을 제출하려면 계속 연결해야합니다.

GET / HTTP/1.1
Host: localhost
Connection: keep-alive

불행히도 서버가 항상 귀하의 요청을 준수 할 필요는 없습니다. 회신 할 수 있습니다. Connection: close 또는 Connection: keep-alive. 전자 메일로 답장하는 경우 요청을 파이프 할 수 없으며 두 개의 연결을 사용해야합니다. netcat에 무언가를 뿌리 뽑는 것이 그렇게 결정을 내릴 수는 없기 때문에 안전한쪽에 머무르고 두 개의 연결을 사용하는 것이 좋습니다.


HTTP / 1.1에서는 명시 적으로 keep-alive 할 필요가 없습니다.
ArtemGr

0

HTTP 서버에 문제가있을 수 있습니다. 모든 서버가 파이프 라이닝을 지원하는 것은 아닙니다. Libevent 하지 않습니다 예를 들어, (그리고 libevhtp는 고정되어있다 그것을 위해).

나는 nginx HTTP 서버를 사용하여 NC와 파이프 라이닝에 문제가 없다.

$ echo -en "GET / HTTP/1.1\r\nHost: fropl.com\r\n\r\nGET / HTTP/1.1\r\nHost: fropl.com\r\n\r\n" | nc localhost 80
HTTP/1.1 401 Unauthorized
Server: nginx/1.2.1
Date: Sat, 08 Jun 2013 21:38:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
WWW-Authenticate: Basic realm="frople"

HTTP/1.1 401 Unauthorized
Server: nginx/1.2.1
Date: Sat, 08 Jun 2013 21:38:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
WWW-Authenticate: Basic realm="frople"

추신 당신 텔넷이나 펄을 사용할 수있다. 당신이 NC를 의심한다면.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.