So now,
let's go ahead and take a closer look at streams now that we have
a better handle on what a QUIC connection is.
So we're going to go ahead and go to, let's go to packet 7,
okay, and I'm going to come down here, and this is a nice one just to start with.
This is the server, and what it's doing,
after the handshake, it starts to set up its streams.
So it's advertising to the client, hey, this is a stream that I'm going to use,
and here's some of its attributes.
So if I come down here past the QUIC information,
I'm going to collapse this, going to collapse this,
let's go ahead and go to the STREAM identifier.
In this case, remember that stream IDs that are odd,
those are always server initiated.
So in this one, I've got a unidirectional stream,
Stream ID: 3, and then the server can put contents,
the application layer contents, in that stream.
So in this case, in this packet, we only have one stream,
so there's only one lane on the highway here.
So this is just a control stream.
This is so the two endpoint applications can communicate to
each other and start to inform one another about the data
that they're going to exchange.
Great.
So the client then, it's finishing its handshake,
and let's go and take a look at packet number 9.
This is where we have a few more streams and start to see some interesting data.
So client‑to‑server,
I'm not going to look at the QUIC connection
information anymore or the short header.
We've already talked about that.
Now, this is where the client is setting up its streams.
So it's saying, hey, server, I want 3 lanes on the highway,
and I'm going to be using client‑initiated even numbers,
Stream ID: 2, 6, and 10.
Now, in those streams, I'm going to have,
all of them are going to be unidirectional data.
I'm going to be sending to you.
So, hey, server, You can't send to me in this lane.
This is just one way, so that's why we see unidirectional,
unidirectional, unidirectional.
So if we come down here, now we can see,
in each of those streams,
we actually have application data that's sent along with it.
So we've defined the stream, and now we can actually use it.
So that's why the client is able to say,
okay, here's HTTP/3's stuff,
and here is the actual SETTINGS and Payload for that stream.
If I come down to the next one, this is where we can see QPACK Encoder,
and the last one is the same.
Now, like we said in our course content,
if stream data is ever lost,
this is where one side or the other can take that initiative to
retransmit just the stream data that was lost. So just that one
QUIC packet that went dropped, I no longer have to retransmit all my streams, just the ones that were contained and affected by that packet loss.