From e25b8418bcd2297d0ecc6a350e9d4c11219c6c5c Mon Sep 17 00:00:00 2001 From: Paul Grosu Date: Wed, 7 Dec 2016 16:28:15 -0500 Subject: submit --- chapter/1/gRPC.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'chapter') diff --git a/chapter/1/gRPC.md b/chapter/1/gRPC.md index 953cfdd..e61e432 100644 --- a/chapter/1/gRPC.md +++ b/chapter/1/gRPC.md @@ -49,6 +49,30 @@ As streams are core to the implementation of HTTP/2, it is important to discuss Figure 2: The lifecycle of a HTTP/2 stream.

+To better understand this diagram, it is important to define some of the terms in it: + +PUSH_PROMISE - This is being performed by one endpoint to alert another that it will be sending some data over the wire. + +RST_STREAM - This makes termination of a stream possible. + +PRIORITY - This is sent by an endpoint on the priority of a stream. + +END_STREAM - This flag denotes the end of a DATA frame. + +HEADERS - This frame will open a stream. + +Idle - This is a state that a stream can be in when it is opened by receiving a HEADERS frame. + +Reserved (Local) - To be in this state is means that one has sent a PUSH_PROMISE frame. + +Reserved (Remote) - To be in this state is means that it has been reserved by a remote endpoint. + +Open - To be in this state means that both endpoints can send frames. + +Closed - This is a terminal state. + +Half-Closed (Local) - This means that no frames can be sent except for WINDOW_UPDATE, PRIORITY, and RST_STREAM. +

1.4 Flow Control of Streams

Since many streams will compete for the bandwidth of a connection, in order to prevent bottlenecks and collisions in the transmission. This is done via the WINDOW_UPDATE payload for every stream - and the overall connection as well - to let the sender know how much room the receiving endpoint has for processing new data. -- cgit v1.2.3