WEBMACHA

WebMacha HTTP/2

The same 200 000-byte download, with a client that widens both windows. Its SETTINGS announces INITIAL_WINDOW_SIZE 1 048 576, which sets every stream's window (RFC 9113 §6.5.2). SETTINGS cannot change the connection's window, which starts at 65 535 bytes (RFC 9113 §6.9.2), so straight after its SETTINGS the client sends a WINDOW_UPDATE on stream 0 that raises it to 1 048 576 too. No DATA frame waits for credit, and the client sends no other WINDOW_UPDATE: the server puts its frames on the wire back to back, at the link's speed. Compare narrow-window: the same link and server, a window 64 times smaller, and a download that takes nearly three times as long. shared-pipe shows the connection window on its own.

The pipe

client windows
server windows

Step 0 of 39

Streams at this step
s0 connection SET 1 frames
s1 big not open yet
Reset
Step 0 · SETTINGS · stream 0 · leaves client → server

The client sends its SETTINGS

Before any frame, the client sends the 24-octet connection preface, PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n. RFC 9113 §3.4 chose it so that a large proportion of HTTP/1.x servers and intermediaries do not process further frames. It is not a frame, so it is not drawn. Then SETTINGS states what the client will accept: frames of up to 16 384 bytes (MAX_FRAME_SIZE), 1 048 576 bytes per stream before the server must wait for more window (INITIAL_WINDOW_SIZE). It also turns server push off (ENABLE_PUSH 0); the hub does not model it anyway.

moment
leaves the client
sent at
0 ms
received at
21 ms
length
18 bytes
flags
none

Settings

SETTINGS_ENABLE_PUSH
0
SETTINGS_INITIAL_WINDOW_SIZE
1 048 576
SETTINGS_MAX_FRAME_SIZE
16 384

RFC 9113 §3.4 · RFC 9113 §6.5.2

Lifecycle

RFC 9113 §5.1
from the client's side send HEADERS send HEADERS + ES send ES recv ES RST_STREAM recv ES · RST send ES · RST idle open half-closed (local) half-closed (remote) closed

ES is END_STREAM. Select a state to read about it. RFC 9113 §5.1 also has two reserved states for server push; they are left out because push is not modelled.

Step 0 of 39: The client sends its SETTINGS