Chapter 7. Advanced HTTP/2 concepts


This chapter covers

  • HTTP/2 stream states
  • Flow control in HTTP/2
  • Prioritization in HTTP/2
  • HTTP/2 conformance testing

This chapter covers the remaining parts of the HTTP/2 protocol, roughly in the order in which they appear in the specification.[1] Many of these parts aren’t under the direct control of web developers and may even be out of the control of server administrators (unless they’re writing an HTTP/2 server themselves), so these topics are definitely more advanced. Knowledge of them, however, will give you deep understanding of how the protocol works and help with debugging, if you’re looking to implement your own HTTP/2 server. Additionally, in the future, more control may be made available to developers or at least web server administrators. Chapter 8 looks at the HPACK protocol, which is a separate specification from HTTP/2.

7.1. Stream states

An HTTP/2 stream is created for a single download and then discarded. This is one reason why HTTP/2 streams aren’t exact analogs for HTTP/1.1 connections, even though this is probably the easiest way of explaining them when first teaching HTTP/2. Many diagrams draw parallels between HTTP/2 streams and HTTP/1 connections (like the ones I used in chapter 2 and repeat in figure 7.1), but this convention isn’t strictly true, because streams aren’t reused.

7.2. Flow control

7.3. Stream priorities

7.4. HTTP/2 conformance testing