manpagez: man pages & more
man nghttp(1)
Home | html | info | man
nghttp(1)                           nghttp2                          nghttp(1)




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 trans-
              mission 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 file-
              name  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 time-
              out.

       -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   ori-
              gins  are   the  same   with the  linking resource will be down-
              loaded.   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  priority group weight.  The valid value range is [1, 256],
              inclusive.

              Default: 16

       -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.

       -b, --padding=<N>
              Add at  most <N>  bytes to a  frame payload  as padding.   Spec-
              ify 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.

       --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 differ-
       ent  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" ele-
       ment 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, Tatsuhiro Tsujikawa



1.6.0                          December 23, 2015                     nghttp(1)

nghttp2 1.6.0 - Generated Sun Dec 27 17:46:50 CST 2015
© manpagez.com 2000-2021
Individual documents may contain additional copyright information.