Scripting una solicitud de encabezado HTTP con netcat

Estoy tratando de jugar con netcat para aprender más sobre cómo funciona HTTP. Me gustaría escribir algunos de ellos en bash o Perl, pero me topé con un obstáculo al principio de mis pruebas.

Si ejecuto netcat directamente desde el indicador y escribo una solicitud HEAD, funciona y recibo los encabezados del servidor web que estoy probando.

Esto funciona

    [romandas@localhost ~]$ nc 10.1.1.2 80
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    MIME-Version: 1.0
    Server: Edited out
    Content-length: 0
    Cache-Control: public
    Expires: Sat, 01 Jan 2050 18:00:00 GMT

    [romandas@localhost ~]$

Pero cuando pongo la misma información en un archivo de texto y lo alimento a netcat a través de una tubería o mediante redirección, en preparación para la secuencia de comandos, no devuelve los encabezados.
El archivo de texto consta de la solicitud HEAD y dos líneas nuevas:

HEAD / HTTP/1.0

Enviar la misma información a través deec o printf tampoco funciona.

$ printf "HEAD / HTTP/1.0\r\n"; |nc -n 10.1.1.2 80
$ /bin/echo -ne 'HEAD / HTTP/1.0\n\n' |nc 10.1.1.2 80

¿Alguna idea de lo que estoy haciendo mal? No estoy seguro si es un problema bash, un problema de eco o un problema de netcat.

Revisé el tráfico a través de Wireshark, y la solicitud exitosa (escrita manualmente) envía la nueva línea final en un segundo paquete, mientras que los métodos echo, printf y archivo de texto mantienen la nueva línea en el mismo paquete, pero no estoy seguro de qué causa este comportamiento.

Respuestas a la pregunta(5)

Su respuesta a la pregunta