Multiplexing in HTTP/2

Overview

Let's consider a Web page test.html located at https://example.com/test.html.

The page uses a CSS sheet style.css and references three images a.jpg, b.jpg and c.jpg.

HTTP/1.1 behavior for multiple requests

If a HTTP/1.1 browser visits https://example.com/test.html, it will:

  • Open a TCP/IP connection #1 to example.com
  • Negociate an SSL/TLS session
  • Send a request for virtual path /test.html
  • Receive the reply and parse the page
  • Reuse the same connection #1 to send a new request for /style.css
  • Receive the reply
  • Open a TCP/IP connection #2 to example.com
  • Negociate an SSL/TLS session
  • Use the connection #2 to request /a.jpg
  • Reuse the connection #2 to request /b.jpg
  • Reuse the first connection #1 to request /c.jpg
  • Close both connections #1 and #2

HTTP/2 behavior for multiple requests

If a HTTP/2 browser visits https://example.com/test.html, it will:

  • Open a TCP/IP connection to example.com
  • Negociate an SSL/TLS session
  • Send a request for virtual path /test.html
  • Receive the reply and parse the page
  • Send a request for /style.css
  • Send a request for /a.jpg
  • Send a request for /b.jpg
  • Send a request for /c.jpg
  • Receive simultaneously the replies for all requested files
  • Close the connection

Conclusion

In this small example, HTTP/2 has used a single TCP/IP connection with a single SSL/TLS negociation while HTTP/1.1 required two of each. The total time to load the page with its dependencies is also shorter.

See also

Keep in touch with us

Sign up for our low volume newsletter to get product announcements, articles and power tips.

or