Skip to content

Commit

Permalink
internals/backend: refreshed, added HTTP/3 backend info
Browse files Browse the repository at this point in the history
Closes #492
  • Loading branch information
bagder committed Jun 27, 2024
1 parent f773a86 commit 1fcea47
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 3 deletions.
24 changes: 21 additions & 3 deletions internals/backends.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ functionality. In these different areas there are multiple different providers:
2. Name resolving
3. TLS
4. SSH
5. HTTP/1 and HTTP/2
5. HTTP/1
6. HTTP/3
7. HTTP content encoding

## Backends visualized

![libcurl backends](slide-libcurl-backends.jpg)

Applications (in the upper yellow cloud) access libcurl through the public
API. The API is fixed and stable.
Applications (in the upper green cloud) access libcurl through the public API.
The API is fixed and stable.

Internally, the core of libcurl uses internal APIs to perform the different
duties it needs to do. Each of these internal APIs are powered by alternative
Expand All @@ -40,3 +40,21 @@ implementations, in many times powered by different third party libraries.
The image above shows the different third party libraries powering different
internal APIs. The purple boxes are one or more and the dark gray ones are
"one of these".

## HTTP/3 backends

![HTTP/3 backends](slide-http3-backends.jpg)

libcurl offers four different backends, visualized as different column in this
picture.

The same data in a table, where each line is a specific backend build:

| status | HTTP/3 library | QUIC library | TLS libraries (one of) |
|--------------|----------------|----------------|--------------------------------|
| recommended | nghttp3 | ngtcp2 | fork family, GnuTLS or wolfSSL |
| experimental | quiche | quiche | BoringSSL or quictls |
| experimental | msh3 | msquic | fork family or Schannel |
| experimental | nghttp3 | OpenSSL 3.3.0+ | OpenSSL 3.3.0+ |

*fork family* means BoringSSL, LibreSSL, quictls and AWS-LC
Binary file added internals/slide-http3-backends.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified internals/slide-libcurl-backends.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -589,3 +589,5 @@ Zakrzewski
Zitzmann
zlib
zsh
msquic
quictls

0 comments on commit 1fcea47

Please sign in to comment.