h2c is a special protocol that allows for upgrading an HTTP/1.1 connection
(even without security) to HTTP/2.
This is uncommon, and also not available to any compliant HTTP/2 client.
h2c exists mainly for specific intermediaries, such as a load balancer.

a normal HTTP/2 connection will start with TLS, negotiate with ALPN, and be
connected to the binary HTTP/2 protocol from there on out (never using
HTTP/1.1 or h2c in the process).

For starters, look at your setup.

You are likely using ...

HTTP2CServerConnectionFactory  (note the extra "C")

and not ...

HTTP2ServerConnectionFactory

on your ServerConnector.



Joakim Erdfelt / [email protected]

On Mon, Jun 25, 2018 at 11:17 AM, Harish S S <[email protected]>
wrote:

> Hello,
>
>
>
> I’m relatively new to Jetty, recently I started moving all our project to
> Jetty (we are using using 9.4.11.v20180605).  The biggest motivation for
> us was the support for HTTP2.  However while testing I notice the following
> in the verbose mode while using curl.
>
>
>
> curl -X GET   http://localhost:8080/clang/inert -H 'clang_key: echo'  -H
> 'session_key: 2fe97dfca5cab0283a1d791253f5244' -w '@curl-wout.txt'
> --http2 -v
>
>
>
> *   Trying ::1...
>
> * TCP_NODELAY set
>
> * Connected to localhost (::1) port 8080 (#0)
>
> > GET /clang/inert HTTP/1.1
>
> > Host: localhost:8080
>
> > User-Agent: curl/7.60.0
>
> > Accept: */*
>
> > Connection: Upgrade, HTTP2-Settings
>
> > Upgrade: h2c
>
> > HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
>
> > clang_key: echo
>
> > session_key: 2fe97dfca5cab0283a1d791253f5244
>
> >
>
> < HTTP/1.1 101 Switching Protocols
>
> * Received 101
>
> * Using HTTP2, server supports multi-use
>
> * Connection state changed (HTTP/2 confirmed)
>
> * Copying HTTP/2 data in stream buffer to connection buffer after upgrade:
> len=0
>
> * Connection state changed (MAX_CONCURRENT_STREAMS == 1024)!
>
> < HTTP/2 200
>
> < server: Jetty(9.4.11.v20180605)
>
> < content-type: text/plain
>
> <
>
> * Connection #0 to host localhost left intact
>
>
>
> Following this output I think that first curl is doing a HTTP1.1 handshake
> and then changing to HTTP2.  Is my understanding correct here?  I’m basing
> my understanding based on repeat tests with just HTTP1.1 connection, I see
> that time_pretransfer actually increases when HTTP2 is used.  Is this only
> an initial cost which gets compensated when client makes connection second
> time?  Also, how do I measure the benefits of moving to HTTP2?  Our setup
> offer only RESTful APIs and no static content.
>
>
>
> Contents of curl-wout file is below
>
> --> clang $ cat curl-wout.txt
>
>     time_namelookup:  %{time_namelookup}\n
>
>        time_connect:  %{time_connect}\n
>
>     time_appconnect:  %{time_appconnect}\n
>
>    time_pretransfer:  %{time_pretransfer}\n
>
>       time_redirect:  %{time_redirect}\n
>
>  time_starttransfer:  %{time_starttransfer}\n
>
>                     ----------\n
>
>          time_total:  %{time_total}\n
>
>
>
>
>
> Is there a way to configure Jetty to accept only HTTP2 connections?
>
>
>
> Regards,
>
> Harish
>
>
>
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to