0

First of all, sorry for the inconvenience. I don't know if this is the right forum, but I've read several threads and there are some very expert people on this subject, so maybe one of them can help me.

I'm doing research for a university. Within this research, I want to point out what happens when you use the HTTP request method Get against a server. To do this, I have used curl -v in the Ubuntu Terminal against a web domain.

Attached below is the classification that I have established:

enter image description here

-The blue box includes the TLS Handshake Protocol with ALPN.

-The green box includes the request message that the client sends to the server, as well as the request header fields.

-The red box includes the response message and the header fields that the server sends to the client.

-The last box includes the "payload body".

I have two questions:

  1. The line between the green and red box, which says "Connection state changed (MAX_CONCURRENT_STREAMS updated)", in which section should I place it? In the green section, as if it were part of the request header fields that the client sends to the server? Or is it a line that should have a separate color?

  2. With the exception of the line "Connection state changed (MAX_CONCURRENT_STREAMS updated)", do you agree with the classification I have made? Do you think there is an error?

Thank you very much for helping a researcher ;)

Excuse me if there's a mistake in the wording. English is not my mother tongue.

qris
  • 1,203
  • 12
  • 21
  • 1
    You don't need to apologise or excuse, especially not verbosely at the beginning of your post, people will just stop reading. I don't see your "blue" box as blue, but grey. The line between green and red does not fit into either category, it is a debugging message from `curl`. Blue is not just SSL handshake, it is all of Curl's debugging at layers below HTTP/layer 7 (application), so this line belongs to that "category" (or lack of one, i.e. everything except HTTP request/response) too. Also, please be aware that any classification is arbitrary, subjective, limiting and ultimately incorrect. – qris Aug 31 '19 at 20:14

2 Answers2

0

Question 2 first: Looks plausible.

Question 1: That message belongs into the same group as the initial curl messages. It logs a state change of the curl client, while the lines above and below are apparently HTTP protocol headers.

domsom
  • 111
  • 2
0

HTTP/2 (and the soon to be released HTTP/3) now exists at two distinct layers:

  1. The Semantic Layer - what’s thought of as typical HTTP using methods like GET and HTTP Headers and Bodies.
  2. The Binary Framing layer which splits those HTTP requests and responses into packets and also has control messages to define how messages should be sent, particularly as you’ve precedent in splitting the HTTP protocol already into various different categories (request send, response headers and response bodies).

If we think of your Green and Red parts as pieces of 1, then the Connection state changed... message is part of 2. Whether you want to include them as part of the HTTP messages (client or server) is up to you as technically they are part of HTTP/2. Personally, I’d probably classify when as separate control messages.

Also some of the messages after the TLS handshake, and before the first GET probably belong in this same category - starting at the line beginning Using HTTP/2, server... up to and including the line beginning Using Stream ID: 1.... Although the TLS handshake is used to negotiate HTTP/2 (through the ALPN extension), these messages are then what happens after and nothing to do with the TLS handshake. They are part of the HTTP/2 protocol not the TLS protocol.

Barry Pollard
  • 4,591
  • 15
  • 26