One Lost Segment

A page loads 30 resources over a single HTTP/2 connection. A packet capture shows one TCP segment dropped, and for the next 250 ms nothing is delivered to the browser on any of the 30 streams, even though later segments carrying other streams' data arrived on time. What explains the stall?

A

The server's HTTP/2 priority tree serialized the other streams behind the one whose data was lost, since a dependent stream must wait for its parent to complete

B

TCP delivers a byte stream in order, so the receiving kernel buffers everything after the hole until the retransmit arrives, freezing all multiplexed streams at once

C

The HTTP/2 connection-level flow control window was exhausted and no WINDOW_UPDATE frame could be sent until the lost segment had been retransmitted

D

HPACK's dynamic table forces header blocks to be decoded strictly in order, so one missing header block halts decoding for every other stream sharing the connection until it arrives