La siguiente es una pequeña receta que se puede utilizar para realizar una medición de velocidad de transferencia de datos entre dos equipos remotos, simulando el acceso a un servidor web, con la pequeña particularidad de que no se utiliza ningún servidor web. Utilizamos netcat para servir un fichero de 100 megas, simulando la señalización de protocolo HTTP. En la máquina que hacía de servidor ejecutamos el siguiente comando:
{ echo -ne “HTTP/1.0 200 OK\r\n\r\n”; cat /tmp/archivo.txt; } | nc -l 80
…y en el equipo cliente pedimos con wget abrir una conexión al servidor:
wget http://ip_del_servidor/ -O /dev/null
Adicionalmente, redireccionamos la salida de wget (es decir, el fichero de 100 megas) a /dev/null, con el objetivo de no realizar escritura en disco alguna, en el caso de que estemos utilizando un sistema empotrado o algún dispositivo con poco espacio.
Para generar el fichero de 100 megas podemos utilizar /dev/urandom, de tal manera que los datos sean pseudoaleatorios, y sea más difícil aplicar compresión
por parte de algún elemento interpuesto:
dd if=/dev/urandom of=/tmp/archivo.txt bs=1024k count=100
Sobre el primer comando: no especificamos el tamaño del fichero. Si por alguna razón (algunos clientes web son un tanto especiales) fuera necesario
especificarlo, puede usarse el siguiente comando:
{ echo -ne “HTTP/1.0 200 OK\r\nContent-Length: ” `wc -c some.file | cut -f 1 -d ‘ ‘` “\r\n\r\n”; cat some.file; } | nc -l 80
Etiquetas: http, netcat, servidor web