aboutsummaryrefslogtreecommitdiff
path: root/chapter/1
diff options
context:
space:
mode:
authorPaul Grosu <pgrosu@gmail.com>2016-12-07 16:28:15 -0500
committerPaul Grosu <pgrosu@gmail.com>2016-12-07 16:28:15 -0500
commite25b8418bcd2297d0ecc6a350e9d4c11219c6c5c (patch)
tree5b6279cc005ca848a2757070f1c1131e43c9c859 /chapter/1
parent63e77966fd35ce0cbc88a70615069122ba33a1d9 (diff)
submit
Diffstat (limited to 'chapter/1')
-rw-r--r--chapter/1/gRPC.md24
1 files changed, 24 insertions, 0 deletions
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
<em>Figure 2: The lifecycle of a HTTP/2 stream.</em>
</p>
+To better understand this diagram, it is important to define some of the terms in it:
+
+<em>PUSH_PROMISE</em> - This is being performed by one endpoint to alert another that it will be sending some data over the wire.
+
+<em>RST_STREAM</em> - This makes termination of a stream possible.
+
+<em>PRIORITY</em> - This is sent by an endpoint on the priority of a stream.
+
+<em>END_STREAM</em> - This flag denotes the end of a <em>DATA</em> frame.
+
+<em>HEADERS</em> - This frame will open a stream.
+
+<em>Idle</em> - This is a state that a stream can be in when it is opened by receiving a <em>HEADERS</em> frame.
+
+<em>Reserved (Local)</em> - To be in this state is means that one has sent a PUSH_PROMISE frame.
+
+<em>Reserved (Remote)</em> - To be in this state is means that it has been reserved by a remote endpoint.
+
+<em>Open</em> - To be in this state means that both endpoints can send frames.
+
+<em>Closed</em> - This is a terminal state.
+
+<em>Half-Closed (Local)</em> - This means that no frames can be sent except for <em>WINDOW_UPDATE</em>, <em>PRIORITY</em>, and <em>RST_STREAM</em>.
+
<h3>1.4 <em>Flow Control of Streams</em></h3>
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 <em>WINDOW_UPDATE</em> 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.