nghttp2/README.rst

82 lines
3.1 KiB
ReStructuredText
Raw Normal View History

2013-07-12 17:19:03 +02:00
nghttp2 - HTTP/2.0 C Library
============================
2012-01-26 17:38:35 +01:00
2013-07-12 17:19:03 +02:00
This is an experimental implementation of Hypertext Transfer Protocol
version 2.0.
2012-09-12 15:37:05 +02:00
2012-04-25 14:25:51 +02:00
Development Status
------------------
2012-03-26 16:46:02 +02:00
2013-07-16 17:08:05 +02:00
We started to implement HTTP-defat-04/2.0
(http://tools.ietf.org/html/draft-ietf-httpbis-http2-04) based on
spdylay code base.
2013-07-12 17:19:03 +02:00
2013-07-16 17:08:05 +02:00
The following features are not implemented:
2013-07-19 18:34:40 +02:00
* Header continuation
* PRIORITY frame handling
* PUSH_PROMISE and server-push in general
2013-07-16 17:08:05 +02:00
* Client connection header: spdycat and spdyd do not send/handle
client connection header.
* ALPN: spdycat and spdyd use openssl without ALPN support and still
uses NPN to negotiate HTTP-draft-04/2.0.
2013-07-19 18:34:40 +02:00
With those missing parts, the library is not still inter-operable
2013-07-16 17:08:05 +02:00
right now.
The spdycat and spdyd are (the names are now odd for HTTP/2.0) working
now assuming the above limitation. You can see the HTTP/2.0 frames
back and forth and connection-level and stream level flow controls.
2013-07-19 19:05:07 +02:00
Here is sample output from spdycat::
$ src/spdycat https://localhost:3000/COPYING http://localhost:3000/AUTHORS -nv --no-tls
[ 0.000] Handshake complete
[ 0.000] recv SETTINGS frame <length=8, flags=0, stream_id=0>
(niv=1)
[4:100]
[ 0.000] send HEADERS frame <length=72, flags=5, stream_id=1>
; END_STREAM | END_HEADERS
; Open new stream
:host: localhost:3000
:method: GET
:path: /COPYING
:scheme: https
accept: */*
accept-encoding: gzip, deflate
user-agent: nghttp2/0.1.0-DEV
[ 0.000] send HEADERS frame <length=14, flags=5, stream_id=3>
; END_STREAM | END_HEADERS
; Open new stream
:host: localhost:3000
:method: GET
:path: /AUTHORS
:scheme: http
accept: */*
accept-encoding: gzip, deflate
user-agent: nghttp2/0.1.0-DEV
[ 0.001] recv HEADERS frame <length=121, flags=4, stream_id=1>
; END_HEADERS
; First response header
:status: 200 OK
cache-control: max-age=3600
content-length: 1080
date: Fri, 19 Jul 2013 17:02:21 GMT
last-modified: Fri, 12 Jul 2013 14:55:22 GMT
server: spdyd nghttp2/0.1.0-DEV
[ 0.001] recv DATA frame (length=1080, flags=0, stream_id=1)
[ 0.001] recv DATA frame (length=0, flags=1, stream_id=1)
[ 0.001] recv HEADERS frame <length=6, flags=4, stream_id=3>
; END_HEADERS
; First response header
:status: 200 OK
cache-control: max-age=3600
content-length: 66
date: Fri, 19 Jul 2013 17:02:21 GMT
last-modified: Fri, 12 Jul 2013 14:55:22 GMT
server: spdyd nghttp2/0.1.0-DEV
[ 0.001] recv DATA frame (length=66, flags=0, stream_id=3)
[ 0.001] recv DATA frame (length=0, flags=1, stream_id=3)
[ 0.001] send GOAWAY frame <length=8, flags=0, stream_id=0>
(last_stream_id=0, error_code=NO_ERROR(0), opaque_data=)