Está en la página 1de 7

PRÁCTICA 1.

IMPLEMENTACIÓN DE UN
SERVIDOR WEB Y ANÁLISIS DEL
PROTOCOLO HTTP UTILIZANDO
WIRESHARK

Marlon Xavier Gomezcoello Rodrı́guez


1
Universidad de Cuenca, Cuenca, ECU
2
xavier.gomezcoello94@ucuenca.edu.ec

Resumen The abstract should briefly summarize the contents of the


paper in 15–250 words.

Keywords: Servidor · HTTP · Wireshark.

1. Marco teórico
1.1. HTTP v2
Antes de HTTP v2 Google desarrolló un protocolo denominado SPDY que
inicialmente fue soportado por su navegador Chrome (y sus servidores web)
con el objetivo de mejorar las carencias de HTTP, SPDY es un protocolo com-
pletamente binario, que abre solo una conexióon TCP con un servidor (opera
sobre TLS/SSL) y multiplexa pedidos y respuestas(denominados streams). Adi-
cionalmente, introduce el concepto de ”prioridad” permitiendo que los clientes
recuperen primero algunos objetos que se consideran importantes para el ren-
derizado y comportamiento de la página (por ejemplo, plantillas de estilo y/o
scripts). Otras dos caracterısticas novedosas son el concepto de ”server push”,
que habilita a que el servidor envı́e determinado contenido sin requerir la pe-
tición explı́cita, y compresión de los encabezados(para reducir el volumen de
informaci on intercambiada)[1].

Objetivos de diseño Los objetivos de diseño de HTTP v2 son heredados


mayormente de SPYD.
Evitar csmbios en el protocolo de transporte: modificar TCP e implementar
un nuevo protocolo en internet requerirı́a un esfuerzo tal que podrı́a nunca
terminarse.
Evitar cambios en los contenidos: implementar HTTP v2 no deberı́a traer
asociados cambios radicales en los servicios web provistos.
Modificar únicamente los componentes de software Cliente-Servidor.
Rendimiento siempre superior, nunca inferior a HTTP.
2 Marlon Xavier Gomezcoello Rodrı́guez

Mejoras Dentro de las mejoras de HTTP v2 respecto a HTTP tenemos las


siguientes:

1. Es multiplexado: Uno de los mayores problemas en HTTP/1.1 era el de


“Head Of Line Blocking (HOL)” que consistı́a en que el host no podı́a en-
viar más requests hasta que hubiera llegado la respuesta al request que ya
habı́a enviado. Esto producı́a un encolamiento al momento de comunicar
host-servidor, lo que aumentaba el tiempo de carga de una página web.
Este problema intentó solucionarse con el paralelismo, el que habrı́a múlti-
ples conexiones TCP para pedir los elementos para cargar cierta página de
forma paralela, pero tanto host como servidor utilizaban más recursos. En
HTTP/2 este problema se resuelve gracias a la multiplexación, que permite
que se envien múltiples frames de HTTP/2 sobre una misma conexión TCP,
sin importar el orden en que estos lleguen de vuelta. (Esta es la principal
diferencia con el pipelining de HTTP/1.1)[2].
2. Compresión de cabecera:En HTTP/1.1 se presentaba el problema de que
en las cabeceras se repetı́a mucha información (principalmente User-Agent
y Cookies, que son estáticas), lo que agregaba bytes innecesarios al paquete.
Además, los headers no podı́an ser comprimidos, (a diferencia del data),
pero si consideramos headers de 400 bytes (cuando utilizan cookies), al final
estamos estamos dejando bastante información sin comprimir. HTTP/2 logra
reducir de gran manera toda esta información extra que se envı́a, utilizando
un solo paquete de HEADER, el cual luego es referenciado por los siguientes
paquetes[2].
3. Server-Push:Al momento de hacer el request de una página web, casi siem-
pre se pide el documento index.html, que contiene toda la página. Al recibir
este documento, el host “lo lee” y comienza a pedir lo necesario para cargar
por completo el sitio. Estogenera un retardo entre recibir y leer, antes de
comenzar a pedir nuevamente. Esta situación es arreglada por HTTP/2 con
la opción de Server-Push, la cual permite al servidor, luego de recibir un
request por index.html, el enviar los datos que sabe que elhost va a pedir
luego, con el fin de reducir este retardo[2].
4. Es binario:Esto tiene que ver con el formato en que es presentada la infor-
mación (principalmente los headers) dentro de un paquete HTTP/2. Esto
hace que sea un poco más difı́cil de leer para los humanos, pero para las
máquinas facilita bastante el proceso, lo que permite nuevamente reducir
latencia y recursos utilizados, que eran los objetivos de este protocolo[2].

1.2. HTTP v3

Es el nombre oficial de la próxima versión de protocolo de comunicaciones


que permite las transferencias en la web. Esta nueva versión tiene un cambio muy
importante, pues será la que deje de utilizar por primera vez el protocolo TCP
que hasta ahora se ha venido utilizando en el HTTP, y lo sustituirá un nuevo
protocolo llamado QUIC, e inicialmente desarrollado por Jim Roskind en Google,
aunque al ser un proyecto de código abierto el desarrollo ha sido conjunto por la
Title Suppressed Due to Excessive Length 3

comunidad. El sustituto del protocolo TCP en HTTP/3 será QUIC, siglas que
significan Quick UDP Internet Connections. En castellano, significa Conexiones
UDP Rápidas en Internet. Está basado en otro viejo protocolo de los años 80
llamado UDP, y que a diferencia del TCP no requiere del intercambio continuo
de información entre el emisor y el receptor del paquete de información. El
protocolo de transferencia ya no se encarga de la integridad de los datos, ese
peso recaerá de cada aplicación que lo use. Este cambio mejorará la latencia de la
conexión con menos intercambio de datos entre emisor y receptor. También tiene
soporte para varias conexiones multiplexadas, lo que significa que se combinan
dos o más señales para transmitirlas por un único medio de transmisión, algo
que ahorra tiempo reduciendo el número de medios de transmisión, y se ahorrará
tiempo enviando los datos cifrados por defecto. Además de esto, QUIC introduce
secuencias con la posibilidad de otorgar prioridades en la capa de transporte. Las
secuencias QUIC se entregan de forma independiente, lo que quiere decir que en
la mayorı́a de casos, si en una secuencia se pierde algún paquete esto no afectará
a las demás. Además, si se pierde algún paquete serán las propias aplicaciones
las que se encarguen de volver a solicitarlo.

1.3. Desarrollo de la práctica


A continuación se mostraran los pasos realzados para lograr la implementa-
ción de un servidor web personalizado ası́ como el analizis del protocolo HTTP
y la captura de paquetes resultantes de la interacción del cliente con el servidor
mediante Wireshark.

Instalación de Ubuntu en una máquina virtual


1. Descargamos virtual machine y la distribución de Linux de nuestra prefe-
rencia, en este caso sera Ubuntu en su versión 20, los links para su descarga
son los siguientes:
https://www.virtualbox.org/ (Virtual Machine)
https://ubuntu.com/download/desktop (Ubuntu)
2. Luego de descargar el Virtual Machine y el Ubuntu procedemos a insta-
lar primeramente el Virtual Machine, la instalación se la realiza de forma
normal, es decir como cualquier otro programa.
3. Después de instalar Virtual Machine procedemos a instalar Ubuntu en la
misma de la siguiente manera.
Ejecutamos Virtual Machine y hacemos clic en nueva.

Figura 1. Ejecucion de Virtual Machine


4 Marlon Xavier Gomezcoello Rodrı́guez

A continuación aparecerá la siguiente ventana en la que tenemos que


poner el nombre que querramos ponerle a nuestra maquina virtual, se-
leccionar el tipo de sistema operativo y la versión, luego hacemos clic en
next.

Figura 2. Selección de nombre, tipo y version

Ahora tendremos que seleccionar cuanta memoria RAM queremos asig-


nar y luego hacemos clic en next.

Figura 3. Selección de cuanta memoria RAM asignaremos.

A continuacion creamos un disco virtual para nuestra máquina virtual.

Figura 4. Creación de disco virtual.


Title Suppressed Due to Excessive Length 5

Seleccionamos el tipo de disco virtual que querremos crear, en este caso


seleccionaremos el que está por defecto y hacemos clic en next dos veces.

Figura 5. Selección de tipo de disco virtual.

Ahora debemos seleccionar cuanto tamaño de disco queremos asignar a


nuestra máquina virtual y hacemos clic en crear, este es el paso final
para la creación de nuestra máquina virtual.

Figura 6. Asignación de tamaño del disco.

4. Despúes de haber instalado Ubuntu procedemos a montar nuestro servidor


web (Apache 2) como indicaremos a continuación.
Iniciamos nuestra máquina virtual Ubuntu y abrimos la terminal de co-
mandos y escribimos apt-get install apache2, pulsamos enter y luego s y
enter.

Figura 7. Instalación de Apache2.


6 Marlon Xavier Gomezcoello Rodrı́guez

Ahora ya se encuentra instalado nuestro servidor, para saber cual es su


dirección IP y poder ingresar al mismo utilizamos el comando ifconfig y
la dirección IP es la siguiente.

Figura 8. Dirección IP de nuestro servidor.

colocamos dicha dirección IP en nuestro navegador y ya podremos acce-


der a su contenido.

Figura 9. Servidor funcionando.

5. Ahora procedemos a modificar la página web que viene por defecto de la


siguiente manera.
editamos el archivo html predeteminado usando el comando nano, escri-
bimos de la siguiente manera: nano /var/www/html/index.html, luego
hacemos clic en enter y empezamos a editar, una vez editado guarda-
mos el archivo y nuestra página se mostrara como nosotros lo hayamos
configurado.

Figura 10. comando para modificar la página.

Referencias
1. HTTP/2. Un nuevo protocolo para la web. Available from:
https://www.researchgate.net/publication/321197226H T T P 2U nn uevop rotocolop aral aw eb[accessedN ov122020].
Title Suppressed Due to Excessive Length 7

Figura 11. Archivo html modificado.

2. Protocolo HTTP/2. Aviable from:


http://profesores.elo.utfsm.cl/ agv/elo322/1s18/projects/reports/HTTP2 ,0.pdf [accessedN ov122020].

También podría gustarte