PDF de programación - Introducción a HTTP/2

Imágen de pdf Introducción a HTTP/2

Introducción a HTTP/2gráfica de visualizaciones

Publicado el 12 de Noviembre del 2020
400 visualizaciones desde el 12 de Noviembre del 2020
1,7 MB
25 paginas
Creado hace 5a (10/04/2016)
Introducción a HTTP/2

Teleinformática y Redes 2016

http://www.labredes.unlu.edu.ar/tyr



Lic. Marcelo Fidel Fernández
http://www.marcelofernandez.info
[email protected]
@fidelfernandez



Agenda

● Características de la web antes y ahora
● HTTP y la Web actual, inconvenientes
● Introducción a HTTP/2, características
● Ejemplos
● Estado actual y futuro del protocolo
● Conclusiones Generales



En los orígenes de la Web...

● 1991: El servicio de WWW nace y HTTP/0.9 fue
“definido”. Sólo permitía un único método: GET.

● 1996: HTTP/1.0. Se estandarizó la base mínima de

lo que usamos a diario.

● 1997-1999: HTTP/1.1. Se completó el protocolo.

Escalabilidad, proxies, Keep-Alive y Pipelining.



¿Y cómo era la Web en ese entonces?



www.unlu.edu.ar - 22/04/1999 (77KB)

● Prácticamente de texto, pocas

imágenes, nada de interactividad.
● 60 KB de tamaño promedio [ref]

[http://www.pantos.org/atw/35654.html]



Fuente: http://www.archive.org

¿Cómo es la Web de Hoy?

Tamaño de página y de peticiones promedio

(2010-2012)

2010: 74 peticiones HTTP

2010: 705 KB → 1269 KB en 2012



casi

90 en 2012



Fuente: http://www.httparchive.org

¿Cómo es la Web de Hoy?

Tamaño de página y de peticiones promedio

(2012-2015)

2012: casi 90 peticiones HTTP

+→ 100 en 2015

2012: 1269 KB

→ 2262 KB en 2015



Fuente: http://www.httparchive.org

¿Cómo es la Web de Hoy?
Ancho de Banda y Latencia (RTT)

PLT

@ 60ms RTT

@ 60ms RTT

@ 5 Mbps

@ 5 Mbps



Fuente: http://www.belshe.com/2010/05/24/more-bandwidth-doesnt-matter-much/

“Cascada” HTTP/1.1 - ww.python.org.ar

(18 + 3 requests, ~336 KB, 3.1 seg = ~100 KB/seg)

Recursos del mismo “origen”

obtenidos del parseo del

HTML + CSS + JS

6 Peticiones
Concurrentes
Máx. x Origen

Keep-Alive



Cascada

HTTP/1.1 y la Web actual

● El RTT es determinante en el tiempo de carga de

la página en HTTP/1.1.

● HTTP/1.1 es un protocolo que obliga a serializar las

peticiones.

● Mucha heurística de optimización de tráfico y

recursos en el browser.



HTTP/1.1 y la Web actual (cont.)

● Hacks para evitar limitaciones de HTTP/1.1

– Domain Sharding
– Recursos inline, minificados, image maps, CSS

sprites

– Ordenamiento, dependencias...

● Headers cada vez más grandes
● La realidad es que TCP fue hecho para conexiones

con un tiempo de vida largo.

● En cambio, los browsers usan HTTP sobre

TCP con ráfagas de conexiones.



HTTP/2 – RFC 7540

● Basado en SPDY, un protocolo desarrollado

por Google desde 2009.

● Modifica cómo se lee/escribe el tráfico HTTP

en el socket TCP (“sintaxis”).

● Toda la semántica de HTTP se mantiene.
● El objetivo es reducir el tiempo de carga de

las páginas web en forma global.

● Lo que hace no es nada novedoso.



HTTP/2 – Características elementales

● Multiplexación del tráfico por una única conexión

TCP persistente.

● Binario.
● Compresión de encabezados.
● Nuevas posibilidades: Server-Push, Priorización,

Dependencias, Control de Flujo.

● En la práctica, se utiliza sobre TLS: Cifrado.
● En el camino, se definen varios RFC más:

– TLS ALPN: Application-Layer Protocol Negotiation

Extension.



– HPACK: HTTP Header Compression.



HTTP/2 – Framing y Streams



HTTP/2 – Upgrade desde HTTP/1.1
1.Sabiendo de antemano que el server lo soporta.
2.Puerto 80 'http://' URIs – HTTP Upgrade

GET /page HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: HTTP/2.0
HTTP2-Settings: (SETTINGS payload)

HTTP/1.1 200 OK
Content-length: 243
Content-type: text/html

(... HTTP 1.1 response ...)

(or)

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: HTTP/2.0

(... HTTP 2.0 response ...)



3.Puerto 443 'https://' URIs – HTTPS





TLS + ALPN

HTTP/2 – Delta headers



HTTP/2 – Frames / Data Frame

Estructura común de todos los frames

DATA Frame (0x00)



HTTP/2 – Headers Frame

HEADERS Frame (0x01)



HTTP/2 – Reset & Goaway Frames

RST_STREAM Frame (0x03)

GOAWAY Frame (0x07)

Algunos códigos de error
● 0x0: NO_ERROR
● 0x1: PROTOCOL_ERROR
● 0x2: INTERNAL_ERROR
● 0x3: FLOW_CONTROL_ERROR
● 0x4: SETTINGS_TIMEOUT



● 0x5: STREAM_CLOSED
● 0x6: FRAME_SIZE_ERROR
● 0x7: REFUSED_STREAM
● 0x8: CANCEL
● 0x9: COMPRESSION_ERROR



HTTP/2 – SETTINGS Frame

SETTINGS Frame (0x04)

Algunos Settings
● 0x2: ENABLE PUSH
● 0x3: MAX_CONCURRENT_STREAMS
● 0x4: INITIAL_WINDOW_SIZE
● 0x5: MAX_FRAME_SIZE

Otros Frames:
● 0x02 – PRIORITY: Prioridad de un Stream
● 0x06 – PING: Medir RTT al destino
● 0x08 – WINDOW_UPDATE: Control de Flujo
● 0x09 – CONTINUATION: headers extra



Ejemplos

chrome://net-internals/#http2

http://www.http2demo.io/

https://http2.akamai.com/demo

https://www.cloudflare.com/http2/



Estado Actual y Futuro de HTTP/2

● Es un estándar del IETF desde Mayo de 2015.
● Implementaciones:

– Clientes: prácticamente todos los navegadores y

herramientas como Curl, Wireshark, etc.

– Servidores: Nginx, Apache (beta), IIS, F5, Jetty,

HAProxy, etc.

– Infraestructura: Google (GAE), Twitter,

Wordpress, Akamai, Cloudflare, Strangeloop,
Facebook….

– Lenguajes de programación, algo pendiente aún.
● Más: https://github.com/http2/http2-spec/wiki/Implementations



Estado Actual y Futuro de HTTP/2
Quedan cosas por desarrollar e investigar:

● Mecanismo de descubrimiento y negociación de

HTTP/2, por ejemplo registros SRV de DNS.

● “Encriptación oportunística” para HTTP/2.
● Integración con aplicaciones del lado del servidor.
● Interrelación con Websockets.
● QUIC (HTTP sobre UDP).
● Aprovechamiento de características nuevas, por

ejemplo, en proxys intermediarios.

● Desarrollo de herramientas y guías para optimizar la


web actual escrita para HTTP/1.1.



Conclusiones Generales
● HTTP/1.1 está mostrando sus años con las

características de los sitios y conexiones actuales.
● Los hacks no escalan y aumentan la complejidad.
● Prácticamente todos los browsers actuales soportan

HTTP/2 [ref].

● HTTP/2 mejora mucho el rendimiento, pero para

implementarlo bien™ hay que deshackear lo hecho.

● La migración no es painless (aunque podría ser peor).
● Resta software dentro de la arquitectura Web por

construir y estabilizar (Proxys, Load Balancers,
Servers, Firewalls...)



Teleinformática y Redes 2016
  • Links de descarga
http://lwp-l.com/pdf18455

Comentarios de: Introducción a HTTP/2 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad