0% encontró este documento útil (0 votos)
2 vistas21 páginas

Protocolo HTTP y Estructura Web

El documento detalla el protocolo HTTP, su funcionamiento y su relación con la World Wide Web, incluyendo la estructura de URLs y URIs. Se describe cómo los navegadores web actúan como clientes que solicitan páginas a servidores web, y se explican los mensajes de solicitud y respuesta en el proceso. Además, se abordan aspectos técnicos como tipos MIME, servidores web y la seguridad a través de HTTPS.

Cargado por

Lol Lol
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas21 páginas

Protocolo HTTP y Estructura Web

El documento detalla el protocolo HTTP, su funcionamiento y su relación con la World Wide Web, incluyendo la estructura de URLs y URIs. Se describe cómo los navegadores web actúan como clientes que solicitan páginas a servidores web, y se explican los mensajes de solicitud y respuesta en el proceso. Además, se abordan aspectos técnicos como tipos MIME, servidores web y la seguridad a través de HTTPS.

Cargado por

Lol Lol
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Servicio HTTP

(Hypertext Transfer Protocol)


Servicios de Red e Internet Tema 4. HTTP
v1.1

Í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

1. El protocolo HTTP y la World Wide Web.


El servicio web es el más utilizado por los internautas. Utilizamos el servicio cada vez
que abrimos una página web con nuestro navegador web (Mozilla Firefox, Google Chrome,
Microsoft Edge,...). El navegador web no es más que un cliente web que realiza una solicitud
de una página web a un servidor web especificando en la solicitud el nombre DNS de la
computadora que tiene instalado el servidor web y la ruta y el nombre de la página web
solicitada. El servidor lee el archivo correspondiente a la página web solicitada en el sitio
web y lo envía al cliente.

Hay que distinguir dos conceptos básicos:


• Página web. Archivo escrito en lenguaje de marcas que, además de texto, contiene
como elementos principales hipervínculos o hipervínculos que vinculan la página a
otras partes de la misma o a otras páginas que se encuentran en el mismo equipo o
en otros equipos de la red.
• Sitio web. Conjunto de páginas web y archivos complementarios que se distribuyen
en Internet y/o en una Intranet bajo el mismo nombre DNS. Por ejemplo, el sitio
[Link] está compuesto por el conjunto de páginas web y archivos
complementarios a los que se accede a través del nombre [Link].
Un servidor web debe tener características apropiadas para servir a los clientes. En
función del tipo de contenido que ofrecidos, la cantidad de clientes que pueden acceder
simultáneamente al servicio, la cantidad de sitios web que atiendes, etc., se debe realizar
una estimación de la memoria que debe tener el equipo, unidades de disco, procesador o
procesadores, ancho de banda de conexión de red y otras características de hardware y
software.

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.).

2. Estructura de la World Wide Web.


Por lo general, los usuarios usan expresiones como "buscar en la web" o "navegar
por la web". Pero, ¿qué se entiende por "la red"? Web es el término que se usa a menudo
para referirse a la "World Wide Web" o www, que significa la World Wide Web.

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.

La World Wide Web es un sistema global de documentos o páginas web enlazadas


entre sí por hipervínculos o hipervínculos. Ilustración que muestra un globo terráqueo con

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".

El funcionamiento de la WWW se basa en:


• Una red de documentos enlazados por hipervínculos. Cada documento es un nodo
en la red.
• Una red de servidores responsables de alojar y distribuir documentos.
• Los programas cliente llamados navegadores que muestran los documentos con los
hipervínculos para que al hacer clic en ellos con el mouse se abran las páginas web
a las que están vinculados.
Los documentos web deben estar escritos en un lenguaje de marcas que los
describe. El lenguaje de marcas más utilizado es HTML. En un principio, los hipervínculos
vinculaban a otros documentos web, por lo que estos documentos se denominaron
hipertextos. Se han agregado nuevos elementos como imágenes, sonidos, animaciones y
otros a los documentos web. Estos documentos web que integran otros elementos se
denominan hipermedia.

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.

Una URL de un recurso de información es su dirección en Internet, la cual permite


que el navegador web la encuentre y la muestre de forma adecuada. Por ello, una URL
combina el nombre de la computadora que proporciona la información, el directorio donde se

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.

Un identificador de recursos uniforme o URI (del inglés Uniform Resource Identifier)


es una cadena de caracteres que identifica los recursos, físicos o abstractos, de una red de
forma unívoca. La diferencia respecto a un localizador de recursos uniforme (URL) es que
estos últimos hacen referencia a recursos que, de forma general, pueden variar en el
tiempo.

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.

Se puede entender que: URI = URL + URN

Una URL es un caso especial de URI para referirse a un


recurso ubicado en un servidor web.

3.2. Formato general.

El formato general de un URL es:

esquema://máquina/directorio/archivo

También pueden añadirse otro tipo de información:

esquema://usuario:contraseña@máquina:puerto/directorio/archivo

Por ejemplo, la URL correspondiente a la web principal del Ministerio de Educación y


Ciencia es:

[Link]

La siguiente tabla describe cada elemento de una URL cuando el protocolo es http:

Especifica el protocolo mediante el cual se accede al recurso. Para


protocolo páginas web el protocolo es http. Se pueden especificar otros
protocolos, como ftp.

Es un elemento que se puede excluir en una URL. Debe utilizarse


cuando el acceso al recurso se controla en el servidor mediante un
contraseña de usuario nombre de usuario y una contraseña proporcionados en la URL.
Casi nunca se usan y no se recomienda su uso por razones de
seguridad. Hay otras formas más seguras de controlar el acceso.

Es el nombre DNS o la dirección IP de la máquina donde se


encuentra el servicio que brinda el recurso que está tratando de
máquina
localizar. Una URL para una página web consta al menos del
protocolo y la máquina.

5 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1

Especifica el puerto del servidor al que conectarse. No se requiere,


si no se especifica, se asume un valor predeterminado para el
protocolo utilizado. Por ejemplo, para http, se asume de manera
puerto
predeterminada el puerto 80. Si se usara otro puerto, se tendría
que especificar.
Por ejemplo, Webmin utiliza de forma predefinida el puerto 10000

Especifica la ruta donde el servidor debe ubicar el recurso y el


ruta nombre del recurso. Si no se especifica, el servidor asume un
nombre de recurso predeterminado.

Se especifican después de la ruta y sirven para enviar datos al


servidor para su procesamiento.
otros
Por ejemplo, se utilizan cuando solicitamos una búsqueda en
Google.

Ejemplo de un Localizador
Uniforme de Recursos (Uniform
Resource Locator, URL) por medio de
un dominio ficticio.

3.3. Esquema URL.

Un URL se clasifica por su esquema, que generalmente indica el protocolo de red


que se usa para recuperar, a través de la red, la información del recurso identificado. Un
URL comienza con el nombre de su esquema, seguido por dos puntos, seguido por una
parte específica del esquema.

Algunos ejemplos de esquemas URL:


• http - recursos Hypertext Transfer Protocol (HTTP).
• https - HTTP sobre Secure Sockets Layer (SSL).
• ftp - File Transfer Protocol.
• mailto - direcciones de correo electrónico.
• ldap - búsquedas Lightweight Directory Access Protocol (LDAP).
• file - recursos disponibles en el sistema local o en una red local.
• news - grupos de noticias Usenet (newsgroup).
• gopher - el protocolo Gopher (en desuso).
• telnet - el protocolo Telnet.
Algunos de los esquemas URL, como los populares mailto, http, ftp y file, junto con
los de sintaxis general URL, se detallaron por primera vez en 1994.

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.

HTTP sigue el modelo cliente/servidor y es un protocolo sin estado, por lo que no


guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web
necesita frecuentemente mantener estado. Para esto se usan las cookies, que es
información que un servidor puede almacenar en el sistema cliente. Esto le permite a las
aplicaciones web instituir la noción de sesión, y también permite rastrear usuarios, ya que
las cookies pueden guardarse en el cliente por tiempo indeterminado.

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.

Cuando escribimos la URL de una página web en un navegador web:


• Se le pide al servidor DNS que resuelva el nombre de la computadora del servidor
web o HTTP utilizado en la URL.

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.

4.1. Mensajes HTTP.

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

4.2. Solicitar mensajes.

En un mensaje de solicitud, la línea de solicitud contiene tres datos separados por un


espacio:
• Método de solicitud.
• Dirección URI del recurso.
• Versión HTTP.
La siguiente imagen muestra un ejemplo de un mensaje de solicitud para solicitar el
recurso [Link] utilizando el método GET.

El método de solicitud indica la


acción que se pretende realizar en el
recurso especificado en la solicitud. Los
métodos más utilizados son GET y
POST.

El URI del recurso especifica la


ruta del recurso dentro del directorio raíz
del sitio web desde el que se solicita el
recurso. Por ejemplo, la URI
/img/[Link] indica que el
recurso solicitado es escudo-
[Link] y está ubicado en el
directorio “img” bajo el directorio raíz del
sitio.

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.

El cuerpo de la solicitud está vacío si la solicitud utiliza el método GET y contiene


información que envía el servidor si se utiliza el método POST.

4.3. Solicitar encabezados y métodos de mensajes.

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.

Solo se admitían tres métodos en la versión 1.0 de HTTP.


• GET. El cliente solicita que el servidor le envíe una representación del recurso
especificado en la solicitud. Por representación nos referimos al contenido del
archivo correspondiente al recurso. Cada vez que hacemos clic con el mouse en un
enlace en una página web a cualquier recurso o escribimos una URL en la barra de
direcciones del navegador, envía al menos un mensaje de solicitud con el método
GET.

9 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1

• POST. Con este método, el cliente envía información al recurso especificado en el


servidor para que una aplicación la procese. Este método se suele utilizar cuando
rellenamos un formulario en una página web y pulsamos un botón como "Enviar",
"Confirmar" o algo similar. En el cuerpo del mensaje se envía la información a
procesar.
• HEAD. Se solicita al servidor que envíe solo las cabeceras correspondientes a la
solicitud del recurso indicado. Para el mismo recurso, el servidor respondería con la
misma línea de respuesta y encabezados que para una solicitud GET, pero no
enviaría el contenido del recurso. Esto es útil para poder recuperar los metadatos de
los encabezados de respuesta, sin tener que transportar todo el contenido. Los
navegadores lo utilizan, por ejemplo, para saber si una página web almacenada en
caché se ha actualizado en el servidor.
HTTP versión 1.1 agrega los siguientes métodos:
• PUT. Envía datos al servidor, pero a diferencia del método POST la URI de la línea
de petición no hace referencia al recurso que los procesará, sino que identifica al los
propios datos. Otra diferencia con POST es semántica: mientras que POST está
orientado a la creación de nuevos contenidos, PUT está más orientado a la
actualización de los mismos (aunque también podría crearlos).
Ejemplo: PUT /path/[Link] HTTP/1.1
• DELETE. Sirve para solicitar al servidor que elimine el recurso indicado en la URI.
Para que el servidor acepte una solicitud de DELETE, debe estar autorizado en su
configuración.
• OPTIONS. Devuelve los métodos HTTP que el servidor soporta para un URL
específico. Esto puede ser utilizado para comprobar la funcionalidad de un servidor
web mediante petición en lugar de un recurso específico. Sirve para que el cliente
configure las opciones adecuadas en las siguientes solicitudes al servidor.
• TRACE. Este método solicita al servidor que introduzca en la respuesta todos los
datos que reciba en el mensaje de petición. Se utiliza con fines de depuración y
diagnóstico ya que el cliente puede ver lo que llega al servidor y de esta forma ver
todo lo que añaden al mensaje los servidores intermedios.
• CONNECT. Se utiliza para saber si se tiene acceso a un host, no necesariamente la
petición llega al servidor. Se utiliza principalmente para saber si un proxy nos da
acceso a un host bajo condiciones especiales, como por ejemplo evnio de datos
bidireccionales encriptados (como lo requiere SSL).
Otros métodos añadidos con posterioridad: PATCH, MOVE, MKCOL, PROPFIND,
PROPPATCH, MERGE, UPDATE, LABEL.

4.4. Mensajes de respuesta.

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.

En un mensaje de respuesta, la línea de respuesta (también llamada línea de estado)


contiene tres datos:

10 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1

• Versión del protocolo.


• Código de respuesta o código de estado.
• Descripción de la respuesta o descripción del estado.
El código de respuesta es un valor numérico que representa cómo se recibió y
procesó la solicitud a la que se respondió. La descripción es una oración corta que describe
lo que indica el código de respuesta (hay una descripción para cada código).

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 le dan gran flexibilidad al protocolo permitiendo añadir nuevas


funcionalidades sin tener que cambiar la base. Por eso según han ido sucediendo las
versiones de HTTP se han ido añadiendo más y más cabeceras permitidas.

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.

Podemos clasificar las cabeceras según su función. Por ejemplo:


• Cabeceras que indican las capacidades aceptadas por el que envía el mensaje:
Accept (indica el MIME aceptado), Accept-Charset (indica el código de caracteres
aceptado), Accept-Encoding (indica el método de compresión aceptado), Accept-
Language (indica el idioma aceptado), User-Agent (para describir al cliente), Server
(indica el tipo de servidor), Allow (métodos permitidos para el recurso).

11 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1

• Cabeceras que describen el contenido: Content-Type (indica el MIME del contenido),


Content-Length (longitud del mensaje), Content-Range, Content-Encoding, Content-
Language, Content-Location.
• Cabeceras que hacen referencias a URIs: Location (indica donde está el contenido),
Referer (Indica el origen de la petición).
• Cabeceras que permiten ahorrar transmisiones: Date (fecha de creación), If-
Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, If-Range, Expires,
Last-Modified, Cache-Control, Via, Pragma, Etag, Age, Retry-After.
• Cabeceras para control de cookies: Set-Cookie, Cookie.
• Cabeceras para autentificación: Authorization, WW-Authenticate.
• Cabeceras para describir la comunicación: Host (indica máquina destino del
mensaje), Connection (indica como establecer la conexión).Otras: Range (para
descargar solo partes del recurso), Max-Forward (límite de cabeceras añadidas en
TRACE).
Algunos cabeceras de respuesta HTTP habituales son:

Cabecera Significado

Date Fecha y hora en que se envió el recurso solicitado.

Host Nombre y puerto del servidor al que se dirige la petición.

User-Agent Identificación del programa del cliente.

Server Nombre del software del servidor.

Lo usa el servidor para decirle al navegador que objetos cachear,


Cache-control
durante cuanto tiempo, etc..

Content-Type Tipo MIME del recurso.

Código del idioma en el que está escrito el recurso que se envía en


Content-Language
el cuerpo del mensaje.

Sistema de codificación utilizado en la representación del recurso


Content-Encoding
dentro del cuerpo del mensaje.

Se utiliza para indicar si el servidor mantiene la conexión TCP para


las siguientes transacciones HTTP del cliente. Si tiene el valor
Connection keep-alive mantiene la conexión y si tiene el valor close la cierra,
en cuyo caso, si el cliente tiene que enviar una nueva petición
HTTP tendrá que solicitar previamente una nueva conexión TCP.

Indica una fecha y hora a partir del cual la respuesta HTTP se


Expires
considera obsoleta. Usado para gestionar caché.

Usado para especificar una nueva ubicación en casos de


Location
redirecciones.

Set-Cookie Solicita la creación de una cookie en el cliente.

12 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1

4.5. Códigos de respuesta.

Un código de respuesta o código de estado es un número de tres dígitos que se


incluye en la línea de respuesta de un mensaje de respuesta HTTP y se utiliza para indicar
si una solicitud se recibió y se atendió con éxito, o si ocurrió algún problema o circunstancia
que altere un estado normal. recepción y atención de la solicitud.

El primer dígito del código representa un grupo de respuestas. En general, identifica


el tipo de respuesta. Los siguientes dos dígitos le permiten especificar la respuesta
específica dentro del grupo. Por ejemplo, el código de respuesta 200 para una solicitud GET
indica que se responde con una respuesta que incluye el recurso solicitado, y el código 201
indica que el recurso solicitado se ha creado en el servidor.

La siguiente tabla muestra los posibles grupos de códigos de respuesta y una


descripción de lo que se indica en las respuestas pertenecientes a cada grupo.

Código Descripción

Le dice al cliente que la solicitud ha sido recibida y continúa.


Esta es una respuesta provisional y se debe realizar una
1xx: Respuestas informativas nueva transacción HTTP para poder obtener la respuesta
final. No se recomienda que los servidores envíen estas
respuestas.

Indica que la solicitud recibida anteriormente fue recibida,


2xx: Peticiones correctas
aceptada y procesada con éxito en el servidor.

Le dice al cliente HTTP que debe realizar alguna acción


3xx: Redirecciones adicional para que la solicitud que se realizó se pueda
resolver por completo.

4xx: Errores del cliente


400 Bad Request
Se recibió una solicitud con una sintaxis incorrecta o no se
401 Unathorized
403 Forbidden pudo procesar la solicitud.
404 Not Found

5xx: Errores del servidor


500 Internal Server Error
Se produjo un error en el servidor que le impidió atender y
501 Not Implented
502 Bad Gateway procesar la solicitud.
503 Service Unavailable

4.6. Otras características.

• Cookies: Las cookies son información que el navegador guarda en memoria o en el


disco duro dentro de ficheros de texto, a solicitud del servidor.
• Sesiones: HTTP es un protocolo sin manejo de estados. Las sesiones nos permiten
definir estados, para ello el servidor almacenará la información necesaria para llevar
el seguimiento de la sesión.
• Autenticación: A veces, debido a cuestiones de personalización o a políticas de
restricción, las aplicaciones Web deben conocer y verificar la identidad del usuario,
mediante nombre de usuario y contraseña.
• Conexiones persistentes: Permiten que varias peticiones y respuestas sean
transferidas usando la misma conexión TCP.

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 .

Se componen de tipos (indicados antes del carácter«/») y subtipos (después del


carácter «/») . Por ejemplo, son tipos MIME:
• Text/html. Define todos los archivos de texto que contienen código HTML.
• Video/mpeg. Define todos los archivos de vídeo almacenados en formato mpeg.
• Image/*. Define todos los archivos de imagen almacenados en cualquier formato (gif,
jpeg, bmp, etcétera).
El prefijo especial x- queda reservado para tipos experimentales (desplegados sin
que haya terminado el proceso de registro) o tipos de uso interno de organizaciones (por
ejemplo, image/x-fwf).

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

Nginx es un servidor web de código abierto y de alto rendimiento, lanzado en 2004.


Se ha convertido en uno de los servidores web más utilizados, junto con Apache. Nginx es
una solución ideal para gestionar sitios web de alto tráfico. Muchos sitios y aplicaciones web
de alta visibilidad, como Netflix o Pinterest, utilizan el servidor web Nginx.

Su gran éxito reside considerablemente en su capacidad para resolver el problema


c10k, que impide que algunos servidores web puedan gestionar más de 10.000 conexiones
simultáneas. Existen dos versiones: OSS Nginx y Nginx Plus. Nginx se usa a menudo como
balanceador de carga y funciona especialmente bien con PHP-FPM.

15 de 21
Servicios de Red e Internet Tema 4. HTTP
v1.1

Algunas de sus características:


• Gratuito y de código abierto.
• Arquitectura asíncrona basada en eventos.
• Alto rendimiento.
• Bajo consumo de memoria.
• Compatibilidad con IPv6.
Nginx, como servidor web estable de alto rendimiento y con un consumo de recursos
muy bajo, es la pareja perfecta para PHP-FPM. Además, al utilizar Nginx con PHP-FPM se
mejora el rendimiento a nivel de consumo de memoria.

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.

Apache HTTP Server

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.

Apache es muy flexible y personalizable; sus funcionalidades se pueden activar y


desactivar con facilidad. Ofrece muchos módulos de seguridad, autenticación, caching,
reescritura de URLs, etc. También permite configuraciones a medida del servidor mediante
el archivo .htaccess. Además, es compatible con un gran número de aplicaciones: CMS,
ERP, frameworks web, lenguajes de programación…

Algunas de sus características:


• Gratuito y de código abierto.
• Arquitectura basada en módulos.
• Fácil configuración y personalización.
• Actualizaciones y parches de seguridad regulares.
• Gran comunidad de desarrolladores.
• Compatibilidad con IPv6.
• Solución estable y uno de los servidores web más fiables.
El proyecto Apache HTTP Server tiene como objetivo desarrollar y mantener un
servidor para sistemas operativos modernos de código abierto y de categoría comercial.
También busca proporcionar un servidor web seguro, eficiente y expandible que proporcione
servicios HTTP y cumpla con los estándares HTTP actuales. El proyecto Apache HTTP
Server forma parte de la Apache Software Foundation, la fundación de código abierto más
grande del mundo.

LiteSpeed

LiteSpeed es un servidor web propietario, de pago desarrollado por LiteSpeed


Technologies; lanzado en 2003. Dispone de tres licencias: Free Starter, Site Owner y Web

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.

Algunas de sus características:


• Arquitectura basada en eventos.
• Ligero.
• Configuración sencilla.
• Características anti-DDoS integradas.
• Mantenimiento sin interrupciones.
Microsoft-IIS

Microsoft-IIS o Microsoft Internet Information Services es un servidor web de


Microsoft, lanzado en 1995. Se desarrolló para usarlo con Windows NT. Su arquitectura
modular permite añadir y quitar extensiones/módulos con facilidad. Además cuenta con
múltiples características de seguridad y mecanismos de autenticación integrados. Microsoft-
IIS se usa a menudo para alojar sitios estáticos y aplicaciones web [Link].

Algunas de sus características:


• Arquitectura basada en módulos.
• Seguridad y control.
• Gestión remota.
OpenResty

OpenResty es un servidor web, con una arquitectura basada en eventos, basado en


Nginx y LuaJIT. Está diseñado para construir aplicaciones y servicios web escalables y de
alto rendimiento, así que es capaz de soportar miles de conexiones al mismo tiempo.

Algunas de sus características:


• Arquitectura basada en eventos.
• Alto rendimiento.
Esta lista incluye algunos de los servidores más usados, pero existen muchas más
alternativas. La mejor opción dependerá de los requisitos y objetivos de cada proyecto, ya
que un sitio web estático para un pequeño negocio no requerirá las mismas características
que un WordPress con un alto volumen de tráfico.

6.1. Servidores web virtuales.

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

Se pueden crear tres tipos de servidores virtuales:

• Basado en direcciones IP. Para cada dirección IP de la computadora del servidor


web habrá un servidor web virtual. Para tener esta configuración sería necesario
tener varios adaptadores de red en el equipo o, lo que sería mejor, crear varias
interfaces de red virtual en el mismo adaptador de red y darle una IP a cada una de
las interfaces virtuales.

• Basado en puerto. El servidor web utilizará un puerto de escucha por servidor


virtual. Esto se hace por ejemplo cuando un servidor tiene dos servidores virtuales y
uno escucha en el puerto 80 y el otro escucha en el puerto 443 porque tiene que
usar el protocolo https.

• Basado en nombres. El servidor web puede alojar múltiples sitios web


pertenecientes a diferentes dominios utilizando la misma dirección y puerto de
escucha para todos ellos.

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.

Un navegador web es un programa de cliente web que interpreta los documentos


recibidos (generalmente en código HTML) como páginas web y los presenta en la pantalla
mostrando enlaces que permiten al usuario interactuar con ellos para acceder a otros
documentos web. También, a partir del código HTML, un navegador muestra marcos,
viñetas, colores de fondo, imágenes y muchos otros elementos en la pantalla.

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

Es muy utilizado porque está integrado en los sistemas Windows. Facilita


Internet Explorer
y agiliza la interacción con otros servicios.

Cuenta con una gran cantidad de complementos y extensiones que se


Mozilla Firefox
pueden instalar para realizar diversas tareas adicionales.

Desarrollado por Google, es más reciente que otros navegadores. Es


Google Chrome
muy funcional y fácil de usar.

Desarrollado por Apple, está incluido en sus sistemas operativos. Tiene


Apple Safari
un aspecto con una estética muy cuidada.

Konqueror Interfaz muy simple pero la navegación es muy rápida.

Ephipany Adaptado para el escritorio Gnome.

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.

El protocolo HTTPS (HTTP Secure) utiliza el protocolo HTTP combinado con el


protocolo SSL (Secure Sockets Layer), o con el protocolo TSL (Transport Layer Security)
para transmitir mensajes HTTP encriptados y garantizar la identidad del servidor a los
clientes.

Un servidor HTTPS utiliza el puerto 443 como puerto de escucha de forma


predeterminada. Un cliente web, para conectarse a un servidor HTTPS tiene que escribir el
protocolo https:// en lugar de http:// en la URL.

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.

El protocolo HTTPS se basa en dos tipos de criptografía:


• Simétrica o de clave compartida.
• Asimétrica o de clave pública-privada.
Se utilizan ambos tipos, porque, en función del objetivo, se aprovechan las ventajas
de cada una y se evitan sus inconvenientes. En concreto, la criptografía asimétrica se utiliza
en los procesos de autenticación, ya que cada usuario protege su clave secreta, pero es
lenta para el cifrado. Sin embargo, la criptografía simétrica es más rápida en el cifrado y
menos adecuada para la gestión de claves.

8.1. El protocolo SSL.

El protocolo SSL (Secure Socket Layer) garantiza que todo el intercambio de


información realizado en una sesión de conexión se hace de forma segura mediante
encriptación.

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

• Autenticación de cliente. El servidor conoce la identidad del usuario y le permite o


no su acceso a áreas protegidas. Para ello, el cliente debe tener instalado un
certificado de cliente en su ordenador que identifica el servidor al cliente.
El protocolo SSL utiliza una clave de sesión que se genera en cada transacción.
Cuanto mayor sea la longitud de la clave, más difícil será romper la encriptación. La mayoría
de los navegadores soportan claves de sesión iguales o superiores a 128 bits.

La comunicación se realiza en dos fases:


1. Fase de saludo (handshaking, «estrechar las manos»). El cliente y el servidor se
identifican mediante el intercambio de claves públicas (encriptación asimétrica) y
llevar a cabo la autenticación utilizando certificados digitales.
2. Fase de comunicación. Se realiza el intercambio de datos utilizando, generalmente
una clave de tipo simétrico.
Los navegadores llevan ya incorporados un módulo SSL que se activa de forma
automática cuando es necesario. Normalmente, se escribe https:// en la URL.

8.2. Certificados.

Un servidor web HTTPS debe tener un certificado para poder establecer conexiones
seguras con los clientes.

Un certificado digital o electrónico es un documento digital emitido por una Autoridad


de Certificación (AC) que sirve para garantizar la identidad de un usuario en una conexión.

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.

Los navegadores web suelen disponer de un listado de Autoridades de Certificación,


lo que les permite establecer conexiones de forma automática (sin necesidad de
confirmación) con servidores HTTPS, que cuentan con un certificado emitido por una de
dichas Autoridades de Certificación.

8.3. Autoridades de certificación.

Una Autoridad de Certificación es una entidad considerada de confianza que se


encarga de emitir certificados a los usuarios que sirven para garantizar su identidad ante
otros usuarios.

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.

Es posible generar un certificado autofirmado en un equipo con determinado


software, sin que sea emitido por una Autoridad de Certificación, pero los usuarios
difícilmente confiarían en los sitios con certificados autofirmados. Se puede usar esta técnica
para realizar pruebas con certificados. Por lo general, debe pagar para obtener un
certificado de una CA, además de cumplir con ciertos requisitos.

Existen varias Autoridades de Certificación a las que podemos solicitar un certificado,


entre ellas:
• VeriSign.
• GlobalSign.
• CyberTrust.
• RSA Security.
La Fábrica Nacional de Moneda y Timbre (FNMT) es una entidad dependiente del
Gobierno de España y se encarga de emitir certificados para que los ciudadanos se
identifiquen ante Administraciones Públicas, Empresas Públicas, Universidades, etc.

21 de 21

También podría gustarte