Testando pipeline HTTP com nc, mas obteve apenas uma resposta

1

Estou testando o pipelining HTTP com nc

Então criei um arquivo de entrada que contém as seguintes linhas,

GET / HTTP/1.1
Host: localhost

GET / HTTP/1.1
Host: localhost

Agora eu envio com nc,

nc localhost 80 < test

Mas eu tenho apenas uma resposta HTTP, o que há de errado com isso? E nc está aqui apenas esperando por algo, ele não retorna ao console.

    
por daisy 03.06.2013 / 02:57

2 respostas

2

Se você quiser enviar várias solicitações em uma conexão, precisará manter a atividade:

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

Infelizmente, o servidor nem sempre precisa atender à sua solicitação. Pode responder com Connection: close ou Connection: keep-alive . Se ele responder com o primeiro, você não poderá canalizar suas solicitações e precisará usar duas conexões. Como a canalização de algo para o netcat não pode tomar decisões como essa, você pode querer ficar apenas no lado seguro e usar duas conexões.

    
por 03.06.2013 / 03:01
0

O problema pode estar no seu servidor HTTP. Nem todo servidor suporta o pipelining. Libevent não , por exemplo (e libevhtp é ser corrigido para isso).

Eu não tenho problemas com nc e pipelining usando o servidor HTTP nginx:

$ 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"

P.S. Você pode usar telnet ou Perl se tiver dúvidas.

    
por 08.06.2013 / 23:40

Tags