nghttp2

{{Lowercase title}}

{{Short description|HTTP/2 library in C}}

{{Infobox software

| title = nghttp2

| name = nghttp2

| logo =

| logo size =

| logo alt =

| logo caption =

| screenshot =

| screenshot size =

| screenshot alt =

| caption =

| collapsible =

| author = Tatsuhiro Tsujikawa

| developer =

| released = 2013

| discontinued =

| latest release version = {{wikidata|property|preferred|references|edit|P348|P548=Q2804309}}

| latest release date = {{Start date and age|{{wikidata|qualifier|preferred|single|P348|P548=Q2804309|P577}}|df=yes}}

| latest preview version =

| latest preview date =

| programming language = C

| platform = macOS, Windows, POSIX

| size =

| language =

| language count =

| language footnote =

| genre = HTTP/2 implementation

| license = MIT License

| standard =

| website = {{URL|https://nghttp2.org/}}

| repo = {{URL|https://github.com/nghttp2/nghttp2}}

| AsOf =

}}

nghttp2 is a C library. It is an implementation of HTTP/2.

History

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.{{sfn|Pollard|2019|p=18}}{{Cite web |url=https://nghttp2.org/documentation/package_README.html |title=nghttp2 - HTTP/2 C Library |publisher=nghttp2 |access-date=March 19, 2023}}

Several well-known projects use nghttp2 to implement HTTP/2, including Apache and cURL.{{sfn|Pollard|2019|p=347}}{{sfn|Ludin|Garza|2017|p=112}}

Features

= HTTP/2 implementation=

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.{{sfn|Pollard|2019|p=233}}

= Tools =

nghttp2 offers multiple tools. nghttp is a command-line tool that uses nghttp2 to output HTTP/2 messages from a URL.{{sfn|Pollard|2019|p=116}} nghttp's dependency-based priority is based on Firefox; when a connection is established, nghttp sends five PRIORITY frames.{{sfn|Pollard|2019|p=128}} 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.{{sfn|Ludin|Garza|2017|p=110}}

= nghttp3 =

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.{{Cite web |url=https://nghttp2.org/nghttp3/programmers-guide.html |title=The nghttp3 programmers' guide |date=2020 |publisher=nghttp2 |access-date=March 19, 2023}}

References

=Citations=

{{Reflist}}

=Bibliography=

  • {{Cite book |last1=Ludin |first1=Stephen |last2=Garza |first2=Javier |date=2017 |title=Learning HTTP/2: A Practical Guide for Beginners |location=Sebastopol |publisher=O'Reilly Media |isbn=9781491962619}}
  • {{Cite book |last=Pollard |first=Barry |date=2019 |title=HTTP/2 in Action |location=Shelter Island |publisher=Manning Publications |isbn=9781638352334}}

Category:C (programming language) libraries