El servicio de bytes (otros nombres: solicitudes de rango ; servicio de rango de bytes ; [1] página a pedido [2] ) es el proceso introducido en el protocolo HTTP 1.1 de enviar solo una parte de un mensaje desde un servidor a un cliente. El servicio de bytes comienza cuando un servidor HTTP anuncia su disposición a atender solicitudes parciales mediante el encabezado de respuesta Accept-Ranges . A continuación, un cliente solicita una parte específica de un archivo del servidor mediante el encabezado de solicitud Range . Si el rango es válido, el servidor lo envía al cliente con un código de estado 206 Partial Content y un encabezado Content-Range que enumera el rango enviado. Si el rango no es válido, el servidor responde con un código de estado 416 Requested Range Not Satisfiable . [3]
Los clientes que solicitan el servicio de bytes pueden hacerlo en casos en los que un archivo grande se ha entregado solo parcialmente y se necesita una porción limitada del archivo en un rango particular. El servicio de bytes es, por lo tanto, un método de optimización del ancho de banda. [4] En el estándar HTTP/1.0, los clientes solo podían solicitar un documento completo. Al permitir el servicio de bytes, los clientes pueden optar por solicitar cualquier porción del recurso. Una ventaja de esta capacidad es que cuando se solicita un archivo multimedia grande y ese archivo multimedia está formateado correctamente, el cliente puede solicitar solo las partes del archivo que se sabe que son de interés. Esto es esencial para entregar archivos de video; si un servidor carece de esta característica, los videos alojados en ese servidor pueden no ser reproducibles hasta que el cliente haya descargado el archivo completo y la búsqueda dentro del archivo puede estar deshabilitada. De manera similar, los archivos PDF pueden optimizarse para el servicio de bytes para permitir que los archivos de varios gigabytes se puedan ver instantáneamente en el navegador solicitando solo los datos necesarios para representar la página actual. [5]
Los clientes multihomed también pueden utilizar el servicio de bytes para descargar simultáneamente un recurso a través de múltiples interfaces de red. [6] Para lograr este tipo de agregación de enlaces de capa de aplicación , se establecen múltiples sesiones HTTP y los segmentos de archivos lógicos se descargan de manera colaborativa desde el servidor y se vuelven a ensamblar en el cliente. Esto permite la utilización completa de varias rutas de extremo a extremo y, por lo tanto, conduce a una mayor velocidad de descarga.
El uso de la codificación de transferencia por fragmentos no es un servicio de bytes, sino un método en el que un servidor HTTP/1.1 envía el recurso completo, pero en varias porciones separadas (o fragmentos) de datos. [7] Se utiliza a menudo cuando un servidor no sabe exactamente cuántos datos habrá en la respuesta total, lo que permite al servidor comenzar a enviar datos al cliente de inmediato sin tener que almacenar en búfer la respuesta y determinar la longitud exacta antes de comenzar a enviarla al cliente. Esto mejora la latencia y reduce los requisitos de memoria al tiempo que preserva la capacidad de reutilizar la conexión después de que se complete la respuesta. El servicio de bytes y la fragmentación son compatibles y se pueden usar con o sin el otro. Las versiones posteriores del protocolo HTTP siguen admitiendo el servicio de bytes, [8] aunque el uso de la codificación de transferencia por fragmentos ha sido reemplazado por métodos alternativos.