Protocolo HTTP y Estructura Web
Protocolo HTTP y Estructura Web
Índice
1. El protocolo HTTP y la World Wide Web.............................................................................3
2. Estructura de la World Wide Web.......................................................................................3
3. URL..................................................................................................................................... 4
3.1. URI............................................................................................................................... 5
3.2. Formato general........................................................................................................... 5
3.3. Esquema URL.............................................................................................................. 6
4. El protocolo HTTP............................................................................................................... 7
4.1. Mensajes HTTP............................................................................................................ 8
4.2. Solicitar mensajes........................................................................................................9
4.3. Solicitar encabezados y métodos de mensajes............................................................9
4.4. Mensajes de respuesta..............................................................................................10
4.5. Códigos de respuesta.................................................................................................13
4.6. Otras características...................................................................................................13
5. Tipos MIME....................................................................................................................... 14
6. Servidores web.................................................................................................................15
6.1. Servidores web virtuales............................................................................................17
7. Navegadores web............................................................................................................. 18
8. HTTPS.............................................................................................................................. 19
8.1. El protocolo SSL.........................................................................................................19
8.2. Certificados................................................................................................................ 20
8.3. Autoridades de certificación........................................................................................20
2 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Existe una amplia variedad de software servidores web, tanto gratuito como
propietario (Microsoft IIS, Apache Web Server, nginx, etc.). Las características que se deben
evaluar en este software son, entre otras:
• Ya sea software libre o propietario.
• Recursos que consume.
• Capacidad para administrar múltiples sitios.
• Control de acceso de usuarios.
• Seguridad en las transmisiones.
• Integración de módulos de servidor (PHP, ASP, Perl, etc.).
En 1989, Tim Berners Lee y Robert Caillou, investigadores del CERN, propusieron la
creación del World Wide Wide. Después colaboraron en su desarrollo participando en el
desarrollo de varios estándares o especificaciones.
3 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
una cinta alrededor con el texto "World Wide Web". Hay una conexión por cable a la bola del
mundo. Alrededor de la pelota hay varios textos relacionados con www como "hipertexto",
"diseño", "universalidad", "oportunidad" y "redes sociales".
Hoy en día, los hipervínculos no solo vinculan a otros documentos web, sino que
pueden vincular a cualquier otro tipo de archivo de recursos de otros servicios, como
direcciones de correo electrónico.
3. URL.
URL (Uniform Resource Locator) o "Localizador de Recursos Uniforme” es un
identificador de recursos uniforme (Uniform Resource Identifier, URI) cuyos recursos
referidos pueden cambiar, esto es, la dirección puede apuntar a recursos variables en el
tiempo. Están formados por una secuencia de caracteres de acuerdo con un formato
modélico y estándar que designa recursos en una red como, por ejemplo, Internet.
Las URL fueron una innovación en la historia de Internet. Fueron usados por primera
vez por Tim Berners-Lee en 1991, para permitir a los autores de documentos establecer
hiperenlaces en la World Wide Web. Desde 1994, en los estándares de Internet, el concepto
de URL ha sido incorporado dentro del más general de URI, pero el término URL todavía se
utiliza ampliamente.
Aunque nunca fueron mencionadas como tal en ningún estándar, mucha gente cree
que las iniciales URL significan universal (en lugar de uniform) resource locator (localizador
universal de recursos). Esto se debe a que en 1990 era así, pero al unirse las normas
Functional Recommendations for Internet Resource Locators y Functional Requirements for
Uniform Resource Names pasó a denominarse identificador de recursos uniforme. Sin
embargo, la letra «U» en URL siempre ha significado «uniforme».
Una URL es una cadena de caracteres con la que se asigna una dirección única a
cada uno de los recursos de información disponibles en Internet. Existe un URL único para
cada página de cada uno de los documentos de la WWW, para todos los elementos de
Gopher y todos los grupos de debate Usenet, y así sucesivamente.
4 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
encuentra, el nombre del archivo y el protocolo a usar para recuperar los datos para que no
se pierda alguna información sobre dicho factor que se emplea para el trabajo.
3.1. URI.
Normalmente estos recursos son accesibles en una red o sistema. Los URI pueden
ser localizadores de recursos uniformes (URL), nombres de recursos uniformes (URN), o
ambos.
esquema://máquina/directorio/archivo
esquema://usuario:contraseña@máquina:puerto/directorio/archivo
[Link]
La siguiente tabla describe cada elemento de una URL cuando el protocolo es http:
5 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Ejemplo de un Localizador
Uniforme de Recursos (Uniform
Resource Locator, URL) por medio de
un dominio ficticio.
6 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
4. El protocolo HTTP.
El protocolo de transferencia de hipertexto (HTTP) es el protocolo de comunicación
que permite las transferencias de información a través de archivos (XML, HTML…) en la
World Wide Web. Fue desarrollado desde 1990 por el World Wide Web Consortium (W3C) y
la Internet Engineering Task Force (IETF), colaboración que culminó en 1999 con la
publicación de una serie de RFC, siendo el más importante de ellos el RFC 2616 que
especifica la versión 1.1. HTTP define la sintaxis y la semántica que utilizan los elementos
de software de la arquitectura web (clientes, servidores, proxies) para comunicarse.
Las características más relevantes del funcionamiento de HTTP son las siguientes:
• Un servidor HTTP usa el puerto 80 por defecto, aunque puede usar otros puertos.
• Para establecer una comunicación HTTP entre el cliente y el servidor, primero se
debe crear una conexión TCP.
• La comunicación entre clientes y servidores se realiza mediante mensajes de
solicitud y respuesta codificados en ASCII.
• Cada elemento de una página web (documento, imágenes, videos, etc.) se transfiere
de forma independiente con su mensaje de solicitud y su mensaje de respuesta.
El contenido de una página web que se transfiere entre un servidor y un cliente está
codificado en un lenguaje de marcas que describe cómo se debe mostrar la página web. De
los lenguajes de marcas para describir páginas web, HTML es sin duda el más utilizado. Los
navegadores web son clientes HTTP que interpretan el contenido de una página web escrita
en HTML u otro lenguaje para crear una representación de la página para ser vista por el
usuario.
7 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
• Una vez obtenida la IP del servidor HTTP, se establece una conexión TCP entre el
cliente y el servidor HTTP.
• Una vez establecida la conexión TCP, se realiza la solicitud del documento web al
servidor y este devuelve su contenido en un mensaje de respuesta.
• Si el documento web incluye elementos adicionales como imágenes, existe un
proceso de solicitud/respuesta para cada imagen.
Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta
entre un cliente y un servidor. El cliente (se le suele llamar "agente de usuario", del inglés
user agent) realiza una petición enviando un mensaje, con cierto formato al servidor. El
servidor (al que es común llamarle servidor web) le envía un mensaje de respuesta.
Ejemplos de cliente son los navegadores web. Otros tipos de agentes de usuario incluyen
software de indexación utilizado por proveedores de consultas (rastreadores web),
navegadores de voz, aplicaciones móviles y otro software que accede, consume o muestra
contenido web.
Desde el momento en que un cliente HTTP (navegador web) establece una conexión
con un servidor HTTP para descargar una página web hasta que se descarga por completo,
se lleva a cabo una sesión HTTP. Por lo general, se producen múltiples transacciones de
mensajes de solicitud y respuesta entre el cliente y el servidor en una sesión HTTP.
Por cada recurso adicional (imagen, audio, video, etc.) que contiene una página web,
se envía un mensaje de solicitud de recurso del cliente al servidor y un mensaje de
respuesta del servidor al cliente con el recurso solicitado o una indicación de que no se pudo
obtener el recurso.
Los mensajes HTTP son en texto plano, lo que lo hace más legible y fácil de depurar.
Sin embargo, esto tiene el inconveniente de hacer los mensajes más largos. Los mensajes
tienen la siguiente estructura:
• Línea inicial (termina con retorno de carro y un salto de línea):
◦ Para las peticiones: La acción requerida por el servidor (método de petición)
seguido de la URL del recurso y la versión HTTP que soporta el cliente.
◦ Para respuestas: La versión del HTTP usado seguido del código de respuesta
(que indica qué ha pasado con la petición seguido de la URL del recurso) y de la
frase asociada a dicho retorno.
• Las cabeceras del mensaje que terminan con
una línea en blanco. Son metadatos. Estas
cabeceras le dan gran flexibilidad al protocolo.
• Cuerpo del mensaje. Es opcional. Su
presencia depende de la línea anterior del
mensaje y del tipo de recurso al que hace
referencia la URL. Típicamente tiene los datos
que se intercambian cliente y servidor. Por
ejemplo para una petición podría contener
ciertos datos que se quieren enviar al servidor
para que los procese. Para una respuesta
podría incluir los datos que el cliente ha
solicitado.
8 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Las líneas de encabezado indican varias opciones con respecto a la solicitud. Cada
encabezado está representado por una línea de texto con el nombre de la opción o
encabezado, el carácter ":" y el valor asignado a la opción.
HTTP define una serie predefinida de métodos de petición (algunas veces referido
como "verbos") que pueden utilizarse. El protocolo tiene flexibilidad para ir añadiendo
nuevos métodos y para así añadir nuevas funcionalidades. El número de métodos de
petición se ha ido aumentando según se avanzaba en las versiones.
Cada método indica la acción que desea que se efectúe sobre el recurso identificado.
Lo que este recurso representa depende de la aplicación del servidor. Por ejemplo, el
recurso puede corresponderse con un archivo que reside en el servidor.
9 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Los mensajes de respuesta HTTP son enviados por el servidor HTTP a los clientes
HTTP en respuesta a una solicitud. Un mensaje de respuesta contiene una línea de
solicitud, varias líneas de encabezado, una línea vacía y un cuerpo de mensaje. En el
cuerpo del mensaje, el servidor envía el contenido del recurso solicitado (cuando se solicita
su envío). Por ejemplo, puede contener el código HTML de una página web.
10 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
La siguiente imagen muestra cada uno de los elementos que componen un mensaje
de respuesta HTTP.
Las cabeceras son los metadatos que se envían en las peticiones o respuesta HTTP
para proporcionar información esencial sobre la transacción en curso. Cada cabecera es
especificada por un nombre de cabecera seguido por dos puntos, un espacio en blanco y el
valor de dicha cabecera seguida por un retorno de carro seguido por un salto de línea. Se
usa una línea en blanco para indicar el final de las cabeceras. Si no hay cabeceras la línea
en blanco debe permanecer.
Las cabeceras pueden tener metadatos que tienen que ser procesados por el cliente
(ej. en respuesta a petición se puede indicar el tipo del contenido que contiene), por el
servidor (ej. tipos de representaciones aceptables por el cliente del contenido que pide) o
por los intermediarios (ej. como gestionar el cacheo por parte de los proxys)
Dependiendo del tipo de mensaje en el que puede ir una cabecera las podemos
clasificar en cabeceras de petición, cabeceras de respuesta y cabeceras que pueden ir tanto
en una petición como en una respuesta.
11 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Cabecera Significado
12 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Código Descripción
13 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
5. Tipos MIME.
El protocolo HTTP transmite información en código ASCII. Entonces, ¿cómo puede
transmitir archivos que no sean ASCII, como imágenes, vídeos y muchos otros? La
respuesta es: usando MIME.
Los tipos MIME (Multipart Internet Mail Extension) son una forma abierta y extensible
de representar el contenido de los datos. Como su nombre indica, en un primer momento
fueron empleados para extender las características del correo electrónico. En la actualidad
se ha generalizado su utilización y también se les puede llamar IMT (Internet Media Types).
MIME se usa en el protocolo HTTP para darle una mayor funcionalidad, lo que le
permite transmitir una multitud de tipos de archivos siempre que el navegador y el servidor
admitan MIME. MIME adjunta un archivo de cabecera a los documentos en el que indica el
tipo de contenido del archivo. De esta manera, el servidor web y el navegador pueden
manejar y mostrar los datos correctamente. Un tipo MIME es la especificación de un tipo de
archivo que se puede transmitir utilizando las extensiones MIME HTTP o de correo
electrónico.
MIME fue desarrollado por el IETF y publicado en sucesivos RFC’s. El registro de los
tipos MIME lo controla la IANA (Internet Asigned Numbers Authority). En su sitio web se
puede obtener la lista completa y actualizada de los tipos registrados. De esta manera, se
asegura que dos tipos de contenido distintos no acaben con el mismo nombre.
MIME establece una serie de encabezados que se pueden agregar a los existentes
para HTTP, y que se pueden usar en las líneas de encabezado de los mensajes HTTP. Dos
de estos encabezados son:
• Mime-version: versión MIME (la actual es 1.0).
• Tipo de contenido: especifica el tipo MIME para un archivo enviado. Por ejemplo.
para un archivo de imagen "JPG", el tipo MIME es " image/jpeg".
Si un servidor HTTP envía un archivo sin especificar el tipo MIME asociado, o
especificándolo incorrectamente, es posible que el navegador web no abra el archivo
correctamente porque no conoce la aplicación que debe abrirlo.
Los MIME indican el tipo de archivo que se transfiere del servidor web al cliente o
navegador web .
El protocolo HTTP usa los tipos MIME en sus cabeceras para, por ejemplo:
14 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
1. Informar al cliente del tipo de datos que recibe del servidor con el encabezado
content-type. Un navegador típico puede manejar los datos de tres formas distintas
según el tipo MIME indicado en content-type:
• Visualizar el documento, por ejemplo con tipos text/html.
• Llamar a una aplicación externa, por ejemplo con tipos application/pdf.
• Preguntar al usuario qué hacer ante un tipo que no se entiende, como, por
ejemplo, image/x-fwf.
2. Permitir la negociación de contenido. El cliente, en su petición, incluye los tipos MIME
que acepta. Por ejemplo, si un navegador puede soportar documentos de tipo
application/pdf, lo indicará en la cabecera HTTP:
Allow: application/pdf
3. Encapsular una o más entidades dentro del cuerpo de mensaje, mediante los tipos
MIME multipart. Quizá el ejemplo más conocido sea el tipo multipart/form-data
utilizado para encapsular los datos de un formulario en su envío hacia el servidor
mediante el método POST.
Los tipos MIME se pueden referenciar desde tres lugares diferentes:
1. Desde el servidor, que indica al navegador el tipo de datos que envía. Por ejemplo,
en el servidor Apache se puede establecer con la directiva DefaultType el tipo MIME
por defecto que el servidor utilizará en los archivos cuyo tipo no pueda reconocer
automáticamente.
DefaultType text/plain
2. Desde la página web, donde se hace referencia a los tipos MIME a través de un
enlace que lleva a un archivo externo, como una hoja de estilo:
<link rel="Stylesheet" href="hoja_estilo.css" type="text / css">
• Puede especificarse como atributo en otras etiquetas HTML, como object o form
(atributo enctype).
• Con las etiquetas <meta HTTP-EQUIV: .... >, podemos hacer que la página
participe en el diálogo cliente-servidor especificando tipos MIME.
3. Desde el navegador web para que interprete el tipo MIME recibido desde el servidor
y también puede indicar qué tipos MIME acepta (cabecera http-accept). Si aparece
*/*, significa que acepta cualquier tipo MIME.
6. Servidores web.
Según las estadísticas de W3Techs y Netcraft, los servidores web más utilizados son
Nginx, Apache y Cloudflare Server.
Nginx
15 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
PHP se ejecuta como un servicio separado cuando se usa PHP-FPM. Al usar esta
versión de PHP como intérprete de lenguaje, las solicitudes se procesan a través de un
socket TCP/IP; para que el servidor web Nginx solo maneje las solicitudes HTTP y PHP-
FPM interprete el código PHP. El hecho de tener dos servicios separados es clave para
aumentar la eficiencia.
El servidor web Apache, oficialmente conocido como Apache HTTP Server, se lanzó
en 1995. Apache es un servidor web gratuito y de código abierto; desarrollado y mantenido
por la Apache Software Foundation (ASF). Es uno de los servidores web más populares del
mundo.
LiteSpeed
16 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Host. Es una alternativa de pago para sitios web de alto tráfico, que ofrece un alto
rendimiento y gran escalabilidad.
El servidor web LiteSpeed está optimizado para poder atender miles de clientes
simultáneos de forma segura, sin consumir muchos recursos de memoria y CPU. Es
compatible con muchos paneles de control populares y con muchas características usadas
habitualmente en Apache como mod_security, mod_rewrite y la configuración de .htaccess.
Los servidores virtuales permiten que un solo servidor web funcione como un servidor
para varios sitios web. Así, utilizando servidores virtuales podemos hacer que un servidor
web Apache administre varios sitios web.
17 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
7. Navegadores web.
Un navegador web es un cliente http o un cliente de servicios web, pero no todos los
clientes de servicios web son navegadores.
Existe una amplia gama de navegadores web. La siguiente tabla muestra algunos de
ellos. Hay muchos más, pero los que se enumeran en la tabla son algunos de los más
destacados.
Descripción
18 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
8. HTTPS.
Un servidor web es seguro cuando garantiza la comunicación con el cliente web con
autenticación y confidencialidad.
En una conexión HTTPS, el uso de los protocolos SSL o TSL asegura que:
• Confidencialidad. Los mensajes transmitidos son encriptados .
• Integridad. Si un mensaje se modifica accidental o intencionalmente, el receptor
detecta que se ha producido la modificación .
• Autenticación. La identidad del servidor y/o cliente se puede asegurar mediante el
uso de certificados digitales.
El protocolo SSL permite establecer una comunicación segura y codificada entre el
servidor web y el navegador. SSL trabaja conjuntamente con el protocolo HTTP, creando un
protocolo de transmisión de hipertexto seguro.
En una conexión TCP /IP, el protocolo SSL proporciona las garantías siguientes:
• Confidencialidad. Cifra la información transferida.
• Integridad del mensaje. Controla cualquier modificación intencionada o accidental
en la información mientras se transmite por Internet.
• Autenticación del servidor. Asegura la identidad del servidor al que se establece le
conexión y al que puede enviar el usuario información personal mediante el
certificado de servidor.
19 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
8.2. Certificados.
Un servidor web HTTPS debe tener un certificado para poder establecer conexiones
seguras con los clientes.
Para establecer conexiones HTTPS seguras, el servidor web debe tener instalado un
certificado obtenido de una Autoridad de Certificación. Al tener un certificado, el servidor
envía mensajes firmados con una clave privada. La primera vez que un cliente se conecta a
un servidor HTTPS, recibe una clave pública, que utilizará para descifrar los mensajes
enviados por el servidor y verificar su identidad. El cliente cifrará los mensajes con la clave
pública y el servidor los descifrará con la clave privada.
Cuando un navegador web se conecta por primera vez a un sitio HTTPS, recibe la
clave pública del servidor, nos brinda información sobre el certificado correspondiente y nos
solicita confirmación de si creemos que el certificado es válido y, por lo tanto, deseamos
usar la clave pública. para conectarse al servidor. Las conexiones posteriores del cliente al
servidor verificarán automáticamente la identidad del servidor y no nos solicitarán
autorización.
20 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1
Para que un servidor web funcione con HTTPS, debe obtener un certificado de una
Autoridad de Certificación. De esta forma, los clientes web podrán confiar en la identidad del
servidor web ya que está certificado por una entidad considerada confiable.
21 de 21