The Internet just changed., 24.07.2022
The QUIC Protocol, HTTP3, and How HTTP Has Evolved, 28.02.2022
HTTP/2 Critical Limitation that led to HTTP/3 & QUIC (Explained by Example), 04.05.2020
What are some problems with TCP?, 21.09.2016
Head-of-line (HOL) blocking in HTTP/1 and HTTP/2
HTTP/3 explained – TCP Head-of-line blocking
What is the head-of-line blocking that occurs in TCP?
Microsoft – An Optimal Solution to Head-of-Line Blocking (PDF)
NETWORKING 101, CHAPTER 2 – Building Blocks of TCP
Head-of-Line Blocking in QUIC and HTTP/3: The Details
What should happen if TCP packet 2 is lost in the network, but somehow packet 1 and packet 3 do arrive? Remember that TCP doesn’t know it’s carrying HTTP/2, just that it needs to deliver data in-order. As such, it knows the contents of packet 1 are safe to use and passes those to the browser. However, it sees that there is a gap between the bytes in packet 1 and those in packet 3 (where packet 2 fits), and thus cannot yet pass packet 3 to the browser. TCP keeps packet 3 in its receive buffer until it receives the retransmitted copy of packet 2 (which takes at least 1 round-trip to the server), after which it can pass both to the browser in the correct order. Put differently: the lost packet 2 is HOL blocking packet 3!
TCP usually isn’t thought of to suffer from head-of-line blocking, however if you consider what head-of-line blocking is, then the following are likely to result in it occurring, or at least appearing to occur.
- Sliding windows and missing packets. Sliding windows are probably technically a tail-of-line problem, but if you lose a packet, the sliding windows issue will suddenly flip around and become a head-of-line problem as the receiver refuses to receive packets past the current window size until the missing packet is retransmitted.
- Sliding windows and latency. If the network endpoints are too far apart, the acknowledgements for the head packet must be received before the window can slide to allow for more packets. In fast networks across endpoints separated by a long distance, this will reduce bandwidth due to the maximum number of bytes in a window exceeding what can be held in transit on the network between the two endpoints.
- SYN-ACK at the start of the transmission. Although this is only 6 bytes, or 3 if you do it quickly, the transmission…