# httpwg/http2-spec

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/httpwg-http2-spec).**

3,755 stars · 559 forks · Makefile

## Links

- GitHub: https://github.com/httpwg/http2-spec
- Homepage: https://httpwg.org/
- awesome-repositories: https://awesome-repositories.com/repository/httpwg-http2-spec.md

## Topics

`http2` `ietf`

## Description

This project provides the formal network protocol standards and technical specifications for HTTP/2. It defines the requirements for binary framing structures, the HPACK compression standard for header fields, and the general behaviors necessary to ensure consistent data exchange and interoperability between network clients and servers.

The specification covers the mechanisms for binary frame multiplexing and the HPACK standard to reduce network bandwidth and latency. It details the rules for session establishment, including connection preface handshaking and protocol negotiation.

The project further defines high-level functional domains including window-based flow control, stream priority weighting, and server push mechanisms. It establishes the state-based lifecycle for streams and provides standards for connection liveness verification and protocol error handling.

## Tags

### Networking & Communication

- [HTTP/2 Protocol Implementations](https://awesome-repositories.com/f/networking-communication/http-2-protocol-implementations.md) — Provides the complete technical specification for implementing the HTTP/2 protocol.
- [Communication Protocols and Standards](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards.md) — Establishes the formal network protocol standards and requirements to ensure interoperability between clients and servers.
- [HPACK Header Compression](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/streaming-architectures/streaming-response-architectures/chunked-response-processing/stateful-compression-streams/hpack-header-compression.md) — Specifies the HPACK algorithm for stateful header compression using static and dynamic tables.
- [Connection Handshake Protocols](https://awesome-repositories.com/f/networking-communication/connection-handshake-protocols.md) — Defines the connection preface and initial settings exchange used to synchronize protocol parameters during session establishment.
- [Connection Multiplexing](https://awesome-repositories.com/f/networking-communication/connection-multiplexing.md) — Bundles multiple logical data streams into a single physical connection to eliminate head-of-line blocking.
- [Flow Control Window Managers](https://awesome-repositories.com/f/networking-communication/flow-control-window-managers.md) — Implements credit-based window management to regulate data transmission and prevent receiver buffer overflow.
- [Stream State Machines](https://awesome-repositories.com/f/networking-communication/half-close-socket-management/stream-state-machines.md) — Defines the state-based lifecycle for streams to manage resources throughout the request-response process.
- [Protocol Negotiation](https://awesome-repositories.com/f/networking-communication/http-2-support/protocol-negotiation.md) — Provides the mechanism for clients and servers to negotiate and agree upon the optimal protocol version. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))
- [Network Flow Control](https://awesome-repositories.com/f/networking-communication/network-flow-control.md) — Regulates the amount of data transmitted over a connection to ensure stability and prevent buffer overflow.
- [Binary Framing Specifications](https://awesome-repositories.com/f/networking-communication/network-protocol-implementations/binary-serialization-protocols/binary-frame-serialization/binary-framing-specifications.md) — Defines the binary frame structures essential for managing streams, flow control, and priority.
- [Resource Delivery Prioritization](https://awesome-repositories.com/f/networking-communication/resource-delivery-prioritization.md) — Defines the weight-based priority and dependency tree for allocating network resources to individual streams. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))
- [Session Establishment](https://awesome-repositories.com/f/networking-communication/session-establishment.md) — Defines the process for initiating communication channels via the exchange of a connection preface. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))
- [Stream Priority Weighting](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/request-processing-architectures/request-processing/priority-schedulers/stream-priority-trackers/gpu-stream-priority-assignment/stream-priority-weighting.md) — Establishes rules for stream-priority weighting to optimize the delivery of critical resources.
- [Connection Reuse Strategies](https://awesome-repositories.com/f/networking-communication/http-2-support/connection-optimizers/connection-reuse-strategies.md) — Provides specifications for reusing a single established connection for requests across multiple authorities. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))
- [Protocol Extensions](https://awesome-repositories.com/f/networking-communication/protocol-extensions.md) — Defines the ability to introduce new frame types, settings, and error codes to extend protocol capabilities. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))

### Data & Databases

- [Binary Frame Multiplexing](https://awesome-repositories.com/f/data-databases/typed-data-collections/sequence-management/asynchronous-streams/multiplexed-message-streams/bidirectional-multiplexing/binary-frame-multiplexing.md) — Implements binary frame multiplexing to allow multiple concurrent streams over a single connection without head-of-line blocking.
- [Server Push Limiters](https://awesome-repositories.com/f/data-databases/typed-data-collections/sequence-management/asynchronous-streams/multiplexed-message-streams/server-pushed-message-streams/server-push-limiters.md) — Implements the server-push mechanism to deliver predicted resources preemptively to the client.

### Web Development

- [HTTP/2 Server Push](https://awesome-repositories.com/f/web-development/http-2-server-push.md) — Implements the server-push mechanism to proactively send predicted resources to the client.
- [Multiplexed Stream Exchanges](https://awesome-repositories.com/f/web-development/real-time-data-streaming/bidirectional-streams/multiplexed-stream-exchanges.md) — Implements concurrent bidirectional frame sequences over a single connection to prevent head-of-line blocking. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))

### Education & Learning Resources

- [Protocol Error Handling](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/infrastructure-architecture/computer-networks/networking-protocols/protocol-error-handling.md) — Defines standardized error codes for reporting connection and stream failures to facilitate protocol recovery. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))

### Operating Systems & Systems Programming

- [Graceful Connection Termination](https://awesome-repositories.com/f/operating-systems-systems-programming/process-termination-signals/socket-termination-signals/graceful-connection-termination.md) — Provides the GOAWAY control signaling mechanism for gracefully terminating connections without interrupting active requests.

### Security & Cryptography

- [Protocol Session Termination](https://awesome-repositories.com/f/security-cryptography/session-termination-services/session-termination-signaling/protocol-session-termination.md) — Defines the protocol-specific signaling used to conclude a session while completing pending tasks. ([source](https://httpwg.org/http2-spec/draft-ietf-httpbis-http2bis.html))
