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