Provided by: nghttp2-client_1.59.0-1ubuntu0.2_amd64 bug

NAME

       nghttp - HTTP/2 client

SYNOPSIS

       nghttp [OPTIONS]... <URI>...

DESCRIPTION

       HTTP/2 client

       <URI>  Specify URI to access.

OPTIONS

       -v, --verbose
              Print    debug    information    such   as   reception   and transmission of frames and name/value
              pairs.  Specifying this option multiple times increases verbosity.

       -n, --null-out
              Discard downloaded data.

       -O, --remote-name
              Save  download  data  in  the  current  directory.   The filename is  derived from  URI.  If   URI
              ends  with '/', 'index.html'  is used  as a  filename.  Not  implemented yet.

       -t, --timeout=<DURATION>
              Timeout each request after <DURATION>.  Set 0 to disable timeout.

       -w, --window-bits=<N>
              Sets the stream level initial window size to 2**<N>-1.

       -W, --connection-window-bits=<N>
              Sets  the  connection  level   initial  window  size  to 2**<N>-1.

       -a, --get-assets
              Download  assets   such  as  stylesheets,  images   and  script  files linked  from the downloaded
              resource.   Only links  whose   origins  are   the  same   with  the   linking  resource  will  be
              downloaded.   nghttp prioritizes resources using HTTP/2 dependency  based priority.  The  priority
              order, from highest to lowest,  is html itself, css, javascript and images.

       -s, --stat
              Print statistics.

       -H, --header=<HEADER>
              Add a header to the requests.  Example: -H':method: PUT'

       --trailer=<HEADER>
              Add  a  trailer  header  to  the requests.  <HEADER> must not include pseudo header field  (header
              field name starting with ':').  To  send trailer, one must use  -d option to  send  request  body.
              Example: --trailer 'foo: bar'.

       --cert=<CERT>
              Use  the specified  client certificate  file.  The  file must be in PEM format.

       --key=<KEY>
              Use the  client private key  file.  The file must  be in PEM format.

       -d, --data=<PATH>
              Post FILE to server. If '-'  is given, data will be read from stdin.

       -m, --multiply=<N>
              Request each URI <N> times.  By default, same URI is not requested twice.  This option disables it
              too.

       -u, --upgrade
              Perform  HTTP Upgrade for HTTP/2.  This option is ignored if the request URI has https scheme.  If
              -d is used, the HTTP upgrade request is performed with OPTIONS method.

       -p, --weight=<WEIGHT>
              Sets  weight of  given  URI.  This  option  can be  used multiple times, and  N-th -p option  sets
              weight  of  N-th  URI in the command line.  If  the number of -p option is less than the number of
              URI, the last -p option value is repeated.  If there is no  -p  option,  default  weight,  16,  is
              assumed.  The valid value range is [1, 256], inclusive.

       -M, --peer-max-concurrent-streams=<N>
              Use   <N>  as  SETTINGS_MAX_CONCURRENT_STREAMS  value  of remote endpoint as if it  is received in
              SETTINGS frame.

              Default: 100

       -c, --header-table-size=<SIZE>
              Specify decoder  header table  size.  If this  option is used  multiple times,  and  the   minimum
              value   among  the  given values except  for last one is  strictly less than the last  value, that
              minimum  value is set  in SETTINGS frame   payload   before   the    last   value,   to   simulate
              multiple header table size change.

       --encoder-header-table-size=<SIZE>
              Specify  encoder  header  table  size.  The decoder (server) specifies  the maximum  dynamic table
              size it  accepts.  Then the negotiated dynamic table size is the minimum of this option value  and
              the value which server specified.

       -b, --padding=<N>
              Add at  most <N>  bytes to a  frame payload  as padding.  Specify 0 to disable padding.

       -r, --har=<PATH>
              Output HTTP  transactions <PATH> in HAR  format.  If '-' is given, data is written to stdout.

       --color
              Force colored log output.

       --continuation
              Send large header to test CONTINUATION.

       --no-content-length
              Don't send content-length header field.

       --no-dep
              Don't send dependency based priority hint to server.

       --hexdump
              Display the  incoming traffic in  hexadecimal (Canonical hex+ASCII display).  If SSL/TLS  is used,
              decrypted data are used.

       --no-push
              Disable server push.

       --max-concurrent-streams=<N>
              The  number of  concurrent  pushed  streams this  client accepts.

       --expect-continue
              Perform  an  Expect/Continue  handshake:   wait  to send DATA (up to  a short  timeout)  until the
              server sends  a 100 Continue interim response. This option is ignored unless combined with the  -d
              option.

       -y, --no-verify-peer
              Suppress  warning  on  server  certificate  verification failure.

       --ktls Enable ktls.

       --no-rfc7540-pri
              Disable RFC7540 priorities.

       --version
              Display version information and exit.

       -h, --help
              Display this help and exit.

       The  <SIZE>  argument  is an integer and an optional unit (e.g., 10K is 10 * 1024).  Units are K, M and G
       (powers of 1024).

       The <DURATION> argument is an integer and an optional unit (e.g.,  1s  is  1  second  and  500ms  is  500
       milliseconds).   Units  are h, m, s or ms (hours, minutes, seconds and milliseconds, respectively).  If a
       unit is omitted, a second is used as unit.

DEPENDENCY BASED PRIORITY

       nghttp sends priority hints to server by default unless --no-dep is used.  nghttp mimics the way  Firefox
       employs  to  manages  dependency  using  idle streams.  We follows the behaviour of Firefox Nightly as of
       April, 2015, and nghttp's behaviour is very static and could be different from Firefox  in  detail.   But
       reproducing  the same behaviour of Firefox is not our goal.  The goal is provide the easy way to test out
       the dependency priority in server implementation.

       When connection is established, nghttp sends 5 PRIORITY frames to idle streams 3,  5,  7,  9  and  11  to
       create "anchor" nodes in dependency tree:

                   +-----+
                   |id=0 |
                   +-----+
                  ^   ^   ^
           w=201 /    |    \ w=1
                /     |     \
               / w=101|      \
           +-----+ +-----+ +-----+
           |id=3 | |id=5 | |id=7 |
           +-----+ +-----+ +-----+
              ^               ^
          w=1 |           w=1 |
              |               |
           +-----+         +-----+
           |id=11|         |id=9 |
           +-----+         +-----+

       In  the  above figure, id means stream ID, and w means weight.  The stream 0 is non-existence stream, and
       forms the root of the tree.  The stream 7 and 9 are not used for now.

       The URIs given in the command-line depend on stream 11 with the weight given in -p option, which defaults
       to 16.

       If -a option is used, nghttp parses the resource pointed by  URI  given  in  command-line  as  html,  and
       extracts  resource  links  from it.  When requesting those resources, nghttp uses dependency according to
       its resource type.

       For CSS, and Javascript files inside "head" element, they depend on stream 3  with  the  weight  2.   The
       Javascript files outside "head" element depend on stream 5 with the weight 2.  The mages depend on stream
       11 with the weight 12.  The other resources (e.g., icon) depend on stream 11 with the weight 2.

SEE ALSO

       nghttpd(1), nghttpx(1), h2load(1)

AUTHOR

       Tatsuhiro Tsujikawa

COPYRIGHT

       2012, 2015, 2016, Tatsuhiro Tsujikawa

1.59.0                                            Jan 21, 2024                                         NGHTTP(1)