nghttp2
Original author(s) | Tatsuhiro Tsujikawa |
---|---|
Initial release | 2013 |
Stable release | 1.64.0[1]
/ 21 October 2024 |
Repository | github |
Written in | C |
Platform | macOS, Windows, POSIX |
Type | HTTP/2 implementation |
License | MIT License |
Website | nghttp2 |
nghttp2 is a C library. It is an implementation of HTTP/2.
History
[edit]nghttp2 was created by Tatsuhiro Tsujikawa as a derivative of spdylay, an implementation of SPDY, a communications protocol created by Google in 2009, in C.[2][3]
Several well-known projects use nghttp2 to implement HTTP/2, including Apache and cURL.[4][5]
Features
[edit]HTTP/2 implementation
[edit]nghttp2 will send a WINDOW_UPDATE
frame upon consuming more than half of the flow control window. For instance, if the sender specifies the SETTINGS_INITIAL_WINDOW_SIZE
[sic] as 65,535 octets in the SETTINGS
frame, nghttp2 will send a WINDOW_UPDATE
frame upon exceeding 32,768 octets. The initial window size may be changed using the -w
and -W
flags.[6]
Tools
[edit]nghttp2 offers multiple tools. nghttp is a command-line tool that uses nghttp2 to output HTTP/2 messages from a URL.[7] nghttp's dependency-based priority is based on Firefox; when a connection is established, nghttp sends five PRIORITY
frames.[8] Other tools provided include nghttpd, an HTTP/2 server, nghttpx, an HTTP/2 proxy, h2load, an HTTP/2 load testing tool, and inflatehd and deflatehd, tools to decompress and compress using the HPACK header compression algorithm.[9]
nghttp3
[edit]nghttp3 is an implementation of HTTP/3 in C and authored by Tsujikawa. nghttp3 uses the QUIC network protocol designed by Jim Roskind at Google.[10]
References
[edit]Citations
[edit]- ^ "Release nghttp2 v1.64.0 · nghttp2/nghttp2". Retrieved 21 October 2024.
- ^ Pollard 2019, p. 18.
- ^ "nghttp2 - HTTP/2 C Library". nghttp2. Retrieved March 19, 2023.
- ^ Pollard 2019, p. 347.
- ^ Ludin & Garza 2017, p. 112.
- ^ Pollard 2019, p. 233.
- ^ Pollard 2019, p. 116.
- ^ Pollard 2019, p. 128.
- ^ Ludin & Garza 2017, p. 110.
- ^ "The nghttp3 programmers' guide". nghttp2. 2020. Retrieved March 19, 2023.
Bibliography
[edit]- Ludin, Stephen; Garza, Javier (2017). Learning HTTP/2: A Practical Guide for Beginners. Sebastopol: O'Reilly Media. ISBN 9781491962619.
- Pollard, Barry (2019). HTTP/2 in Action. Shelter Island: Manning Publications. ISBN 9781638352334.