Protocolos HTTP y TCP: Fundamentos, Estructura y Optimización del Rendimiento Web
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,3 KB
Extensiones HTTP y la Línea de Estado del Servidor
También existen extensiones como WebDAV2, que incluyen métodos como COPY
(genera copias de recursos) o MOVE
(cambia la ubicación de un recurso).
La sintaxis de la línea de estado (respuesta del servidor) es la siguiente:
versión <espacio> código <espacio> frase <CRLF>
La cadena versión tiene el mismo formato que la línea de petición. El código es un número de tres dígitos (el primero indica el tipo de respuesta) y la frase es un texto explicativo comprensible para usuarios humanos. Un código muy conocido es el 404 “No se ha encontrado el recurso”.
Estructura del Mensaje HTTP: Cuerpo y Métodos de Codificación
El cuerpo del mensaje transporta la carga o payload de la petición o respuesta. Si hay contenido en una petición, se anuncia mediante los campos Content-Length
o Transfer-Encoding
de la cabecera.
El campo Transfer-Encoding
lista los métodos de codificación aplicados a la carga. Algunos de esos métodos son:
- Chunked (troceado): Divide la carga en fragmentos, cada uno de los cuales indica su propio tamaño. Cuando se recibe un fragmento con un tamaño 0, la transmisión se da por terminada. Esto permite la transferencia de flujos de datos de tamaño desconocido.
- Compress (compresión): Método de codificación de GNU/Linux.
- Deflate (adelgazamiento): Formato de datos comprimidos (zlib).
- Gzip: Codificación con un CRC de 32 bits usado por el compresor gzip.
Conexiones TCP en HTTP: Fundamentos y Sockets
La especificación HTTP define el formato de los mensajes, pero no la forma en que se envían. De esto se encarga TCP/IP, concretamente el protocolo TCP. Una aplicación cliente puede abrir una conexión TCP/IP con una aplicación servidor, y una vez establecida la conexión, los mensajes nunca se perderán, dañarán o recibirán desordenados.
Un ordenador puede tener varias conexiones TCP abiertas simultáneamente gracias al concepto de puerto, un número comprendido entre 0 y 65.535 que representa una puerta de acceso a un ordenador. Los diferentes sistemas operativos (SO) usan distintos métodos para manejar conexiones TCP; uno de los más comunes son los sockets. Este mecanismo oculta los detalles de los protocolos TCP e IP para el programador. Inicialmente se desarrollaron para UNIX, pero ahora existen variantes en todos los SO y lenguajes de programación. Los sockets permiten realizar conexiones con ordenadores remotos y enviar o recibir información de la misma forma que si se tratara de un fichero en disco o una impresora.
Optimización del Rendimiento HTTP: Retrasos en Conexiones TCP
En una transacción HTTP ocurren retrasos; el tiempo de procesamiento es pequeño comparado con el tiempo requerido para configurar la conexión TCP y transferir los mensajes de petición y respuesta. A menos que el cliente o el servidor estén sobrecargados, la mayoría de los retrasos son causados por TCP. Algunas posibles causas de un retraso en transacciones HTTP son:
- El cliente tiene que determinar la dirección IP y el puerto del servidor web a partir de la URL. Si la URL no fue visitada recientemente, la conversión puede tardar unos segundos.
- El cliente espera la confirmación cada vez que envía una petición de conexión TCP al servidor, acumulando retrasos cada vez que ejecuta una petición (que serán numerosas si la página contiene muchos recursos).
- Una vez creada la conexión TCP, el cliente envía la petición, que el servidor procesa en cuanto llega. El transporte sobre la red y el procesamiento suponen nuevos retrasos.
El servidor devuelve la respuesta HTTP, con el consiguiente consumo de tiempo. La magnitud de todos estos retrasos depende de la velocidad del hardware, la carga de la red y del servidor, el tamaño de los mensajes de petición y respuesta, y la distancia entre cliente y servidor. Los retrasos también vienen dados por factores propios del TCP.