Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
NGHTTP(1)			    nghttp2			     NGHTTP(1)

       nghttp -	HTTP/2 client

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

       HTTP/2 client

       <URI>  Specify URI to access.

       -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  '/',  'in-
	      dex.html'	 is used  as a	filename.  Not	implemented yet.

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

       -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

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

	      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.  Ex-
	      ample: --trailer 'foo: bar'.

	      Use  the specified  client certificate  file.  The  file must be
	      in PEM format.

	      Use the  client private key  file.  The file  must   be  in  PEM

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

       -m, --multiply=<N>
	      Request each URI <N> times.  By default, same  URI  is  not  re-
	      quested 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	multi-
	      ple 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 num-
	      ber 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

	      Specify encoder header table size.  The decoder (server)	speci-
	      fies   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.	 Spec-
	      ify 0 to disable padding.

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

	      Force colored log	output.

	      Send large header	to test	CONTINUATION.

	      Don't send content-length	header field.

	      Don't send dependency based priority hint	to server.

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

	      Disable server push.

	      The   number  of	 concurrent   pushed  streams this  client ac-

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

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

	      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.

       nghttp sends priority hints to server by	 default  unless  --no-dep  is
       used.   nghttp mimics the way Firefox employs to	manages	dependency us-
       ing 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 re-
       questing	those resources, nghttp	uses dependency	according to  its  re-
       source 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.

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

       Tatsuhiro Tsujikawa

       2012, 2015, 2016, Tatsuhiro Tsujikawa

1.41.0				 Jun 02, 2020			     NGHTTP(1)


Want to link to this manual page? Use this URL:

home | help