279 lines
7.0 KiB
Groff
279 lines
7.0 KiB
Groff
.\" Man page generated from reStructuredText.
|
|
.
|
|
.TH "NGHTTP" "1" "April 17, 2015" "0.7.12-DEV" "nghttp2"
|
|
.SH NAME
|
|
nghttp \- HTTP/2 experimental client
|
|
.
|
|
.nr rst2man-indent-level 0
|
|
.
|
|
.de1 rstReportMargin
|
|
\\$1 \\n[an-margin]
|
|
level \\n[rst2man-indent-level]
|
|
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
-
|
|
\\n[rst2man-indent0]
|
|
\\n[rst2man-indent1]
|
|
\\n[rst2man-indent2]
|
|
..
|
|
.de1 INDENT
|
|
.\" .rstReportMargin pre:
|
|
. RS \\$1
|
|
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
. nr rst2man-indent-level +1
|
|
.\" .rstReportMargin post:
|
|
..
|
|
.de UNINDENT
|
|
. RE
|
|
.\" indent \\n[an-margin]
|
|
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
.nr rst2man-indent-level -1
|
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
..
|
|
.SH SYNOPSIS
|
|
.sp
|
|
\fBnghttp\fP [OPTIONS]... <URI>...
|
|
.SH DESCRIPTION
|
|
.sp
|
|
HTTP/2 experimental client
|
|
.INDENT 0.0
|
|
.TP
|
|
.B <URI>
|
|
Specify URI to access.
|
|
.UNINDENT
|
|
.SH OPTIONS
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-v, \-\-verbose
|
|
Print debug information such as reception and
|
|
transmission of frames and name/value pairs. Specifying
|
|
this option multiple times increases verbosity.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-n, \-\-null\-out
|
|
Discard downloaded data.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-O, \-\-remote\-name
|
|
Save download data in the current directory. The
|
|
filename is dereived from URI. If URI ends with \(aq\fI/\fP\(aq,
|
|
\(aqindex.html\(aq is used as a filename. Not implemented
|
|
yet.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-t, \-\-timeout=<SEC>
|
|
Timeout each request after <SEC> seconds.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-w, \-\-window\-bits=<N>
|
|
Sets the stream level initial window size to 2**<N>\-1.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-W, \-\-connection\-window\-bits=<N>
|
|
Sets the connection level initial window size to
|
|
2**<N>\-1.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-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.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-s, \-\-stat
|
|
Print statistics.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-H, \-\-header=<HEADER>
|
|
Add a header to the requests. Example: \fI\%\-H\fP\(aq:method: PUT\(aq
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-trailer=<HEADER>
|
|
Add a trailer header to the requests. <HEADER> must not
|
|
include pseudo header field (header field name starting
|
|
with \(aq:\(aq). To send trailer, one must use \fI\%\-d\fP option to
|
|
send request body. Example: \fI\%\-\-trailer\fP \(aqfoo: bar\(aq.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-cert=<CERT>
|
|
Use the specified client certificate file. The file
|
|
must be in PEM format.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-key=<KEY>
|
|
Use the client private key file. The file must be in
|
|
PEM format.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-d, \-\-data=<FILE>
|
|
Post FILE to server. If \(aq\-\(aq is given, data will be read
|
|
from stdin.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-m, \-\-multiply=<N>
|
|
Request each URI <N> times. By default, same URI is not
|
|
requested twice. This option disables it too.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-u, \-\-upgrade
|
|
Perform HTTP Upgrade for HTTP/2. This option is ignored
|
|
if the request URI has https scheme. If \fI\%\-d\fP is used, the
|
|
HTTP upgrade request is performed with OPTIONS method.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-p, \-\-weight=<WEIGHT>
|
|
Sets priority group weight. The valid value range is
|
|
[1, 256], inclusive.
|
|
.sp
|
|
Default: \fB16\fP
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-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.
|
|
The default is large enough as it is seen as unlimited.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-c, \-\-header\-table\-size=<SIZE>
|
|
Specify decoder header table size.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-b, \-\-padding=<N>
|
|
Add at most <N> bytes to a frame payload as padding.
|
|
Specify 0 to disable padding.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-r, \-\-har=<FILE>
|
|
Output HTTP transactions <FILE> in HAR format. If \(aq\-\(aq
|
|
is given, data is written to stdout.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-color
|
|
Force colored log output.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-continuation
|
|
Send large header to test CONTINUATION.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-no\-content\-length
|
|
Don\(aqt send content\-length header field.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-no\-dep
|
|
Don\(aqt send dependency based priority hint to server.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-hexdump
|
|
Display the incoming traffic in hexadecimal (Canonical
|
|
hex+ASCII display). If SSL/TLS is used, decrypted data
|
|
are used.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-\-version
|
|
Display version information and exit.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-h, \-\-help
|
|
Display this help and exit.
|
|
.UNINDENT
|
|
.sp
|
|
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).
|
|
.SH DEPENDENCY BASED PRIORITY
|
|
.sp
|
|
nghttp sends priority hints to server by default unless
|
|
\fI\%\-\-no\-dep\fP 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\(aqs 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.
|
|
.sp
|
|
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:
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
.sp
|
|
.nf
|
|
.ft C
|
|
+\-\-\-\-\-+
|
|
|id=0 |
|
|
+\-\-\-\-\-+
|
|
^ ^ ^
|
|
w=201 / | \e w=1
|
|
/ | \e
|
|
/ w=101| \e
|
|
+\-\-\-\-\-+ +\-\-\-\-\-+ +\-\-\-\-\-+
|
|
|id=3 | |id=5 | |id=7 |
|
|
+\-\-\-\-\-+ +\-\-\-\-\-+ +\-\-\-\-\-+
|
|
^ ^
|
|
w=1 | w=1 |
|
|
| |
|
|
+\-\-\-\-\-+ +\-\-\-\-\-+
|
|
|id=11| |id=9 |
|
|
+\-\-\-\-\-+ +\-\-\-\-\-+
|
|
.ft P
|
|
.fi
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
In the above figure, \fBid\fP means stream ID, and \fBw\fP 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.
|
|
.sp
|
|
The URIs given in the command\-line depend on stream 11 with the weight
|
|
given in \fI\%\-p\fP option, which defaults to 16.
|
|
.sp
|
|
If \fI\%\-a\fP 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.
|
|
.sp
|
|
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.
|
|
.SH SEE ALSO
|
|
.sp
|
|
\fInghttpd(1)\fP, \fInghttpx(1)\fP, \fIh2load(1)\fP
|
|
.SH AUTHOR
|
|
Tatsuhiro Tsujikawa
|
|
.SH COPYRIGHT
|
|
2012, 2015, Tatsuhiro Tsujikawa
|
|
.\" Generated by docutils manpage writer.
|
|
.
|