+--------+ >PP | | H +--------+ H(S) | | | | | quarter |<---- | ---- | -------------| |------------- | ---- | ---->| quarter | | closed | | | | | | | | closed) | | (remote)| | | H(SH) | | | (local) | +---------+ | | D(S) | | +---------+ | | | | | R | | | | | H(S) | | ,---------| |---------. | | C(H) | | | | | | +--------+ | | | | | | | | | | | | | | | | | | | | | | | | +--------+ | | | | | | | | '------- | ---- | -- | ------->| two |<------- | -- | ---- | -------' | | | | | | | |quarters| | | | | | | | | | | | closed | | | | | | | | >H(SH) | | | | (local,| | | | D(S) | | | | remote)| | | | R | | | +--------+ | | | C(H) | | | | | | | | | | | | | | | | | | | | v v | | v v | | | | | | +----------+ | | +----------+ | | | `-- | --------- | ->| half |<--------' '-------->| half |<- | --------- | --' | | | closed | | closed | | | | | | (remote) | | (local) | | | | | +----------+ +----------+ | | | | | | | | | | | | | |>H(S) H(SH) D(S) R | |<-----------' | | | | closed |<--------------------' >C(H) | '-------------------------------->| |<--------------------------------' +--------+ < : receive frame > : send frame H : HEADERS frame (with implied CONTINUATIONs) PP : PUSH_PROMISE frame (with implied CONTINUATIONs) D(S) : DATA frame with END_STREAM flag H(SH) : HEADER frame with END_STREAM and END_HEADER flags H(S) : HEADER frame with END_STREAM flag C(H) : CONTINUATION frame with END_HEADER flag R : RST_STREAM frame