docs(core): document HTTP/2 operation and architecture
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# HTTP/2 in Flash
|
||||
|
||||
Flash treats HTTP/1.1 and HTTP/2 as peer transports behind one connection boundary. TLS ALPN or
|
||||
the cleartext prior-knowledge preface selects a protocol once; both paths then feed the same
|
||||
router, `Request`, `Response`, handler, trailer, streaming and WebSocket APIs. HTTP/2 adds a
|
||||
bounded frame decoder, HPACK codec, stream state machine, two-level flow control and one serialized
|
||||
writer per connection. Application code does not branch on the wire protocol.
|
||||
|
||||
The implementation is deliberately layered:
|
||||
|
||||
```text
|
||||
listener / TLS
|
||||
-> protocol negotiation
|
||||
-> HTTP/1.1 parser ---------+
|
||||
-> HTTP/2 frames + HPACK ----+-> shared request model -> router -> handler
|
||||
shared response model
|
||||
<- HTTP/1.1 serializer -----+
|
||||
<- HTTP/2 stream writer ----+
|
||||
```
|
||||
|
||||
## Start here
|
||||
|
||||
- [HTTP/1.1 hardening](HTTP1-HARDENING.md) — message-boundary rules, timeouts and negotiation.
|
||||
- [Transport](TRANSPORT.md) — listeners, connection ownership, TLS and virtual threads.
|
||||
- [Message model](MESSAGE-MODEL.md) — shared request/response objects and their lifetime contract.
|
||||
- [Connection](CONNECTION.md) and [streams](STREAMS.md) — HTTP/2 connection and stream state.
|
||||
- [Flow control](FLOW-CONTROL.md) — request backpressure and streamed responses.
|
||||
- [Trailers and streaming](TRAILERS-AND-STREAMING.md) — the public cross-protocol APIs.
|
||||
- [Cleartext and proxying](CLEARTEXT-AND-PROXY.md) — prior knowledge and the upstream h2 client.
|
||||
- [WebSockets](WEBSOCKET.md) — RFC 8441 extended CONNECT using the existing WebSocket API.
|
||||
|
||||
## Wire internals
|
||||
|
||||
- [Byte primitives](BYTES.md) — reusable views, scanning and bounded slice lifetimes.
|
||||
- [Serialized writer](WRITER.md) — the single-owner output path and contention model.
|
||||
- [Frames](FRAMES.md) — frame parsing, validation and error scope.
|
||||
- [HPACK](HPACK.md) — integer/Huffman coding and static/dynamic table ownership.
|
||||
|
||||
## Operate and verify
|
||||
|
||||
- [Security](SECURITY.md) — every HTTP/2 limit, default and abuse control.
|
||||
- [Troubleshooting](TROUBLESHOOTING.md) — GOAWAY/RST_STREAM diagnosis and protocol tracing.
|
||||
- [Compliance](COMPLIANCE.md) — h2spec, interoperability, fuzzing and deliberate omissions.
|
||||
- [Performance](PERFORMANCE.md) and [CI baselines](BASELINES.md) — measurements and regression
|
||||
gates, including the comparison with nghttpd.
|
||||
|
||||
## Design history
|
||||
|
||||
[Decisions](DECISIONS.md) records non-obvious trade-offs and rejected alternatives. The
|
||||
implementation plan is retained as historical engineering evidence; it is not required to use or
|
||||
extend the runtime.
|
||||
Reference in New Issue
Block a user