HTTP/2 frame encode/decode per RFC 9113.
All frames share a 9-byte header:
+-----------------------------------------------+
| Length (24) | Type (8) | Flags (8) |
+-----------------------------------------------+
| Reserved (1) | Stream Identifier (31) |
+-----------------------------------------------+
| Frame Payload (Length bytes) |
+-----------------------------------------------+