awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
nghttp2 avatar

nghttp2/nghttp2

0
View on GitHub↗
5,009 stars·933 forks·C++·17 viewsnghttp2.org↗

Nghttp2

nghttp2 is a suite of low-level C libraries and tools designed for implementing the HTTP/2 protocol. It provides a memory-efficient implementation of the protocol's core logic, including framing, stream multiplexing, and flow control.

The project includes a dedicated library for HPACK header compression and decompression to reduce network bandwidth. It also provides a toolset for analyzing network traffic and benchmarking server performance, including throughput and latency measurements.

Its broader capabilities cover protocol implementation and traffic management, including ALPN connection negotiation, request prioritization, and the validation of header components. The library supports custom protocol extensions through a callback-based event system and includes utilities for memory management and error code translation.

The project includes build support and configuration scripts for cross-compiling binaries for the Android platform.

Features

  • HTTP/2 Protocol Implementations - Provides a low-level C implementation of the HTTP/2 protocol, including framing, multiplexing, and flow control.
  • HTTP/2 Support - A low-level C implementation of the HTTP/2 protocol for handling framing, stream multiplexing, and flow control.
  • C Network Protocol Implementations - Provides a memory-efficient C library implementation of the core HTTP/2 protocol logic.
  • HPACK Header Compression - Implements stateful HPACK compression and decompression using static and dynamic tables for header blocks.
  • Stream Limiters - nghttp2 sets a preliminary maximum for outgoing concurrent streams to prevent request rejection before settings are received.
  • Flow Control Window Managers - Regulates data transmission rates using credit-based windows to prevent sender overflow and manage memory.
  • Header Event Callbacks - Triggers custom application functions whenever a header name and value pair is received during stream processing.
  • Analysis & Benchmarking Tools - A collection of benchmarking and debugging tools for analyzing HTTP/2 server performance and network traffic.
  • Protocol Negotiation - nghttp2 selects the best mutually supported protocol from a preference list to establish a prioritized connection.
  • Network Data Reception - nghttp2 invokes a callback function whenever the session needs to read incoming data from the remote peer.
  • Network Data Transmission - nghttp2 invokes a custom callback function whenever the session needs to send protocol data to a remote connection.
  • Binary Frame Serialization - Implements the binary wire format serialization required for HTTP/2 framing and network transmission.
  • Stream Multiplexing - Manages multiple independent request-response sequences over a single connection using unique stream identifiers.
  • Protocol Event Callbacks - nghttp2 triggers a custom callback function whenever a frame is received to allow for custom logic and state management.
  • Request Data Transmission - Implements the transmission of HTTP/2 requests including custom headers, trailers, and body payloads.
  • Header Block Decompression - Inflates compressed header blocks into a readable format using single-block or chunked processing.
  • Callback-Based Event Dispatchers - Uses a registered set of callbacks to dispatch protocol events for managing sessions and streams.
  • Data Reception Callbacks - nghttp2 triggers a callback function whenever a chunk of data within a data frame is received.
  • HTTP Header Compression Engines - Implements HPACK compression using dynamic tables and static dictionaries to reduce network header bandwidth.
  • Stateful Decoders - Initializes stateful decoders to inflate name and value pairs from compressed HPACK header blocks.
  • Resource Fetch Priorities - Optimizes server bandwidth distribution by determining the processing order and weight of streams using a dependency tree.
  • Wire Format Serialization - nghttp2 defines a custom callback to format extension frame payloads into the binary wire format for transmission.
  • HTTP/2 Parameter Configuration - Adjusts connection and stream window sizes, header table sizes, and maximum concurrent streams.
  • Lifecycle Event Callbacks - nghttp2 triggers a custom callback function when a stream is closed to allow for resource cleanup.
  • Protocol Version Verifiers - nghttp2 provides standardized identifiers and tokens to negotiate connections over both secure and cleartext transport.
  • Stream Priority Trackers - Initializes default stream weights and exclusivity to manage server resource allocation.
  • Protocol Extensions - Allows implementing non-standard frames and payloads within an HTTP/2 session via custom callbacks.
  • Frame Transmission Interception - nghttp2 triggers a custom function before a non-data frame is sent to allow for inspection or modification.
  • Invalid Frame Handling - nghttp2 triggers a custom callback function when a non-data frame is received that does not conform to specifications.
  • Transmission Error Handlers - nghttp2 triggers a specific function when a non-data frame cannot be transmitted to allow the application to react.
  • Version Negotiation - nghttp2 selects the most appropriate application protocol from a preference list during the handshake to determine version.
  • Frame Header Interceptors - nghttp2 triggers a custom function when a frame header is received to react before the payload is processed.
  • HTTP Header Validations - Enforces specification-compliant naming and lowercase constraints on HTTP/2 header fields.
  • Conformance Error Handling - Triggers custom callbacks when the protocol receives header pairs that lack conformance to specifications.
  • Binary Serialization Protocols - nghttp2 converts a list of settings entries into a binary payload for use in requests or handshakes.
  • Network Traffic Analyzers - nghttp2 inspects network activity via verbose logging, hexadecimal dumps of decrypted traffic, and transaction exports.
  • Priority Header Parsing - Extracts priority information from header field values and stores it in objects for resource allocation.
  • Protocol Extensions - nghttp2 registers specific extension frame types to be processed by user-defined callbacks when received.
  • Protocol Frame Monitoring - nghttp2 triggers a custom function after a frame is dispatched to monitor or log outgoing network traffic.
  • Protocol Option Initialization - Creates configuration objects with default settings to control the behavior of the protocol implementation.
  • Session Performance Tuning - Tunes network session performance by adjusting window updates, ping acknowledgments, and stream rate limits.
  • Traffic Proxying - Routes requests between clients and backends while managing encryption and protocol translation.
  • Custom Memory Allocators - Allows applications to provide custom memory allocation and deallocation functions for internal protocol structures.
  • Secure Connection Managers - nghttp2 authenticates clients using certificate and private key files and manages server certificate verification.
  • Reference-Counted Memory Blocks - Tracks data buffer usage via reference counts to ensure memory is freed only after all components release access.
  • Throughput Measurement - nghttp2 measures requests per second and response latency across multiple addresses to evaluate throughput and stability.
  • Priority-Based Request Queues - Manages resource priority using a combination of dependency-based trees and urgency levels.
  • Session Callback Initialization - Creates reusable sets of callback functions to standardize how multiple network sessions handle protocol events.
  • Performance Benchmarkers - nghttp2 measures the throughput and latency of a server by simulating high-load traffic with multiple concurrent streams.
  • Overhead Measurement - nghttp2 measures total bytes received and header compression savings to determine the communication overhead of the network protocol.
  • Server Performance Benchmarking - Measures request throughput and latency for various protocol versions using configurable concurrency.
  • Duration-Based Load Testing - Executes server benchmarks for a specific timeframe with optional warming-up periods.
  • HTTP Traffic Simulation - Simulates varied traffic patterns by distributing requests across multiple URIs using a round-robin strategy.
  • Network Performance Benchmarks - Includes tools for measuring server throughput, response latency, and reliability under high concurrent loads.
  • DevOps & Infrastructure - HTTP/2 library and tools
  • Networking Libraries - C library for the HTTP/2 protocol.

Star history

Star history chart for nghttp2/nghttp2Star history chart for nghttp2/nghttp2

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does nghttp2/nghttp2 do?

nghttp2 is a suite of low-level C libraries and tools designed for implementing the HTTP/2 protocol. It provides a memory-efficient implementation of the protocol's core logic, including framing, stream multiplexing, and flow control.

What are the main features of nghttp2/nghttp2?

The main features of nghttp2/nghttp2 are: HTTP/2 Protocol Implementations, HTTP/2 Support, C Network Protocol Implementations, HPACK Header Compression, Stream Limiters, Flow Control Window Managers, Header Event Callbacks, Analysis & Benchmarking Tools.

What are some open-source alternatives to nghttp2/nghttp2?

Open-source alternatives to nghttp2/nghttp2 include: httpwg/http2-spec — This project provides the formal network protocol standards and technical specifications for HTTP/2. It defines the… libp2p/libp2p — libp2p is a modular peer-to-peer networking stack designed for building decentralized applications. It provides the… quic-go/quic-go — This project is a high-performance implementation of the QUIC transport protocol, providing a library for establishing… encode/httpx — This project is a comprehensive Python network request framework designed for both synchronous and asynchronous HTTP… microsoft/msquic — MsQuic is a cross-platform, C-based implementation of the QUIC protocol. It provides a network library for… forwardemail/superagent — Superagent is an isomorphic JavaScript HTTP client for sending network requests and processing responses across both…

Open-source alternatives to Nghttp2

Similar open-source projects, ranked by how many features they share with Nghttp2.
  • httpwg/http2-spechttpwg avatar

    httpwg/http2-spec

    3,755View on GitHub↗

    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 projec

    Makefilehttp2ietf
    View on GitHub↗3,755
  • libp2p/libp2plibp2p avatar

    libp2p/libp2p

    2,940View on GitHub↗

    libp2p is a modular peer-to-peer networking stack designed for building decentralized applications. It provides the core infrastructure necessary for nodes to discover and connect with other participants across a network without relying on central servers. The project distinguishes itself through a flexible transport layer that abstracts multiple protocols, including TCP, QUIC, WebSockets, and WebTransport, into a single interface. It features specialized tools for NAT and firewall traversal, such as hole punching and relay nodes, to establish direct connections between peers and web browsers

    View on GitHub↗2,940
  • quic-go/quic-goquic-go avatar

    quic-go/quic-go

    11,661View on GitHub↗

    This project is a high-performance implementation of the QUIC transport protocol, providing a library for establishing multiplexed, low-latency network connections over UDP. It serves as a foundational networking stack for building modern web servers and clients, with native support for HTTP/3 and WebTransport standards. The library distinguishes itself through advanced connection management, including the ability to maintain stable sessions across changing network paths or IP addresses using connection identifiers. It optimizes data throughput by employing packet batching to reduce kernel ov

    Gogogolanghttp3
    View on GitHub↗11,661
  • encode/httpxencode avatar

    encode/httpx

    15,090View on GitHub↗

    This project is a comprehensive Python network request framework designed for both synchronous and asynchronous HTTP communication. It provides a high-performance client capable of executing non-blocking requests within event-driven applications, while also supporting standard blocking calls for simpler scripts. The library is built to operate natively across diverse asynchronous runtimes, automatically detecting and utilizing the underlying event loop for concurrency. What distinguishes this library is its modular architecture, which decouples request construction from network execution thro

    Pythonasynciohttppython
    View on GitHub↗15,090
See all 30 alternatives to Nghttp2→