1 2.. GENERATED by help2rst.py. DO NOT EDIT DIRECTLY. 3 4.. program:: nghttp 5 6nghttp(1) 7========= 8 9SYNOPSIS 10-------- 11 12**nghttp** [OPTIONS]... <URI>... 13 14DESCRIPTION 15----------- 16 17HTTP/2 client 18 19.. describe:: <URI> 20 21 Specify URI to access. 22 23OPTIONS 24------- 25 26.. option:: -v, --verbose 27 28 Print debug information such as reception and 29 transmission of frames and name/value pairs. Specifying 30 this option multiple times increases verbosity. 31 32.. option:: -n, --null-out 33 34 Discard downloaded data. 35 36.. option:: -O, --remote-name 37 38 Save download data in the current directory. The 39 filename is derived from URI. If URI ends with '*/*', 40 'index.html' is used as a filename. Not implemented 41 yet. 42 43.. option:: -t, --timeout=<DURATION> 44 45 Timeout each request after <DURATION>. Set 0 to disable 46 timeout. 47 48.. option:: -w, --window-bits=<N> 49 50 Sets the stream level initial window size to 2\*\*<N>-1. 51 52.. option:: -W, --connection-window-bits=<N> 53 54 Sets the connection level initial window size to 55 2\*\*<N>-1. 56 57.. option:: -a, --get-assets 58 59 Download assets such as stylesheets, images and script 60 files linked from the downloaded resource. Only links 61 whose origins are the same with the linking resource 62 will be downloaded. nghttp prioritizes resources using 63 HTTP/2 dependency based priority. The priority order, 64 from highest to lowest, is html itself, css, javascript 65 and images. 66 67.. option:: -s, --stat 68 69 Print statistics. 70 71.. option:: -H, --header=<HEADER> 72 73 Add a header to the requests. Example: :option:`-H`\':method: PUT' 74 75.. option:: --trailer=<HEADER> 76 77 Add a trailer header to the requests. <HEADER> must not 78 include pseudo header field (header field name starting 79 with ':'). To send trailer, one must use :option:`-d` option to 80 send request body. Example: :option:`--trailer` 'foo: bar'. 81 82.. option:: --cert=<CERT> 83 84 Use the specified client certificate file. The file 85 must be in PEM format. 86 87.. option:: --key=<KEY> 88 89 Use the client private key file. The file must be in 90 PEM format. 91 92.. option:: -d, --data=<PATH> 93 94 Post FILE to server. If '-' is given, data will be read 95 from stdin. 96 97.. option:: -m, --multiply=<N> 98 99 Request each URI <N> times. By default, same URI is not 100 requested twice. This option disables it too. 101 102.. option:: -u, --upgrade 103 104 Perform HTTP Upgrade for HTTP/2. This option is ignored 105 if the request URI has https scheme. If :option:`-d` is used, the 106 HTTP upgrade request is performed with OPTIONS method. 107 108.. option:: -p, --weight=<WEIGHT> 109 110 Sets weight of given URI. This option can be used 111 multiple times, and N-th :option:`-p` option sets weight of N-th 112 URI in the command line. If the number of :option:`-p` option is 113 less than the number of URI, the last :option:`-p` option value is 114 repeated. If there is no :option:`-p` option, default weight, 16, 115 is assumed. The valid value range is 116 [1, 256], inclusive. 117 118.. option:: -M, --peer-max-concurrent-streams=<N> 119 120 Use <N> as SETTINGS_MAX_CONCURRENT_STREAMS value of 121 remote endpoint as if it is received in SETTINGS frame. 122 123 Default: ``100`` 124 125.. option:: -c, --header-table-size=<SIZE> 126 127 Specify decoder header table size. If this option is 128 used multiple times, and the minimum value among the 129 given values except for last one is strictly less than 130 the last value, that minimum value is set in SETTINGS 131 frame payload before the last value, to simulate 132 multiple header table size change. 133 134.. option:: --encoder-header-table-size=<SIZE> 135 136 Specify encoder header table size. The decoder (server) 137 specifies the maximum dynamic table size it accepts. 138 Then the negotiated dynamic table size is the minimum of 139 this option value and the value which server specified. 140 141.. option:: -b, --padding=<N> 142 143 Add at most <N> bytes to a frame payload as padding. 144 Specify 0 to disable padding. 145 146.. option:: -r, --har=<PATH> 147 148 Output HTTP transactions <PATH> in HAR format. If '-' 149 is given, data is written to stdout. 150 151.. option:: --color 152 153 Force colored log output. 154 155.. option:: --continuation 156 157 Send large header to test CONTINUATION. 158 159.. option:: --no-content-length 160 161 Don't send content-length header field. 162 163.. option:: --no-dep 164 165 Don't send dependency based priority hint to server. 166 167.. option:: --hexdump 168 169 Display the incoming traffic in hexadecimal (Canonical 170 hex+ASCII display). If SSL/TLS is used, decrypted data 171 are used. 172 173.. option:: --no-push 174 175 Disable server push. 176 177.. option:: --max-concurrent-streams=<N> 178 179 The number of concurrent pushed streams this client 180 accepts. 181 182.. option:: --expect-continue 183 184 Perform an Expect/Continue handshake: wait to send DATA 185 (up to a short timeout) until the server sends a 100 186 Continue interim response. This option is ignored unless 187 combined with the :option:`-d` option. 188 189.. option:: -y, --no-verify-peer 190 191 Suppress warning on server certificate verification 192 failure. 193 194.. option:: --version 195 196 Display version information and exit. 197 198.. option:: -h, --help 199 200 Display this help and exit. 201 202 203 204The <SIZE> argument is an integer and an optional unit (e.g., 10K is 20510 * 1024). Units are K, M and G (powers of 1024). 206 207The <DURATION> argument is an integer and an optional unit (e.g., 1s 208is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms 209(hours, minutes, seconds and milliseconds, respectively). If a unit 210is omitted, a second is used as unit. 211 212DEPENDENCY BASED PRIORITY 213------------------------- 214 215nghttp sends priority hints to server by default unless 216:option:`--no-dep` is used. nghttp mimics the way Firefox employs to 217manages dependency using idle streams. We follows the behaviour of 218Firefox Nightly as of April, 2015, and nghttp's behaviour is very 219static and could be different from Firefox in detail. But reproducing 220the same behaviour of Firefox is not our goal. The goal is provide 221the easy way to test out the dependency priority in server 222implementation. 223 224When connection is established, nghttp sends 5 PRIORITY frames to idle 225streams 3, 5, 7, 9 and 11 to create "anchor" nodes in dependency 226tree: 227 228.. code-block:: text 229 230 +-----+ 231 |id=0 | 232 +-----+ 233 ^ ^ ^ 234 w=201 / | \ w=1 235 / | \ 236 / w=101| \ 237 +-----+ +-----+ +-----+ 238 |id=3 | |id=5 | |id=7 | 239 +-----+ +-----+ +-----+ 240 ^ ^ 241 w=1 | w=1 | 242 | | 243 +-----+ +-----+ 244 |id=11| |id=9 | 245 +-----+ +-----+ 246 247In the above figure, ``id`` means stream ID, and ``w`` means weight. 248The stream 0 is non-existence stream, and forms the root of the tree. 249The stream 7 and 9 are not used for now. 250 251The URIs given in the command-line depend on stream 11 with the weight 252given in :option:`-p` option, which defaults to 16. 253 254If :option:`-a` option is used, nghttp parses the resource pointed by 255URI given in command-line as html, and extracts resource links from 256it. When requesting those resources, nghttp uses dependency according 257to its resource type. 258 259For CSS, and Javascript files inside "head" element, they depend on 260stream 3 with the weight 2. The Javascript files outside "head" 261element depend on stream 5 with the weight 2. The mages depend on 262stream 11 with the weight 12. The other resources (e.g., icon) depend 263on stream 11 with the weight 2. 264 265SEE ALSO 266-------- 267 268:manpage:`nghttpd(1)`, :manpage:`nghttpx(1)`, :manpage:`h2load(1)` 269