Skip to content

Commit

Permalink
deploy: 614fef6
Browse files Browse the repository at this point in the history
  • Loading branch information
djc committed Feb 21, 2024
1 parent a72021b commit bde9825
Show file tree
Hide file tree
Showing 8 changed files with 106 additions and 106 deletions.
22 changes: 11 additions & 11 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -174,12 +174,12 @@ <h1 class="menu-title">Quinn</h1>
<div id="content" class="content">
<main>
<h1 id="networking-introduction"><a class="header" href="#networking-introduction">Networking Introduction</a></h1>
<p>In this chapter, you will find a very short introduction to various networking concepts.
<p>In this chapter, you will find a very short introduction to various networking concepts.
These concepts are important to understanding when to use QUIC.</p>
<h2 id="1-tcpip-and-udp-comparison"><a class="header" href="#1-tcpip-and-udp-comparison">1. TCP/IP and UDP Comparison</a></h2>
<p>Let's compare TCP, UDP, and QUIC.</p>
<ul>
<li><strong>unreliable</strong>: Transport packets are not assured of arrival and ordering. </li>
<li><strong>unreliable</strong>: Transport packets are not assured of arrival and ordering.</li>
<li><strong>reliable</strong>: Transport packets are assured of arrival and ordering.</li>
</ul>
<div class="table-wrapper"><table><thead><tr><th style="text-align: center">Feature</th><th style="text-align: center">TCP</th><th style="text-align: center">UDP</th><th style="text-align: center">QUIC</th></tr></thead><tbody>
Expand All @@ -192,22 +192,22 @@ <h2 id="1-tcpip-and-udp-comparison"><a class="header" href="#1-tcpip-and-udp-com
</tbody></table>
</div>
<p>'a. Unreliable is supported as an extension.<br />
'b. QUIC control flow/congestion implementations will run in userspace whereas in TCP it's running in kernel space,
'b. QUIC control flow/congestion implementations will run in userspace whereas in TCP it's running in kernel space,
however, there might be a kernel implementation for QUIC in the future.</p>
<h2 id="2-issues-with-tcp"><a class="header" href="#2-issues-with-tcp">2. Issues with TCP</a></h2>
<p>TCP has been around for a long time and was not designed with the modern internet in mind.
It has several difficulties that QUIC tries to resolve. </p>
<p>TCP has been around for a long time and was not designed with the modern internet in mind.
It has several difficulties that QUIC tries to resolve.</p>
<h3 id="head-of-line-blocking"><a class="header" href="#head-of-line-blocking">Head-of-line Blocking</a></h3>
<p>One of the biggest issues with TCP is that of Head-of-line blocking.
It is a convenient feature because it ensures that all packages are sent and arrive in order.
<p>One of the biggest issues with TCP is that of Head-of-line blocking.
It is a convenient feature because it ensures that all packages are sent and arrive in order.
However, in cases of high throughput (multiplayer game networking) and big load in a short time (web page load), this can severely impact latency.</p>
<p>The issue is demonstrated in the following animation:</p>
<p><img src="./images/hol.gif" alt="Head of line blocking" /> </p>
<p><img src="./images/hol.gif" alt="Head of line blocking" /></p>
<p>This animation shows that if a certain packet drops in transmission, all packets have to wait at the transport layer until it is resent by the other end. Once the delayed packet arrives at its destination, all later packets are passed on to the destination application together.</p>
<p>Let's look at two areas where head-of-line blocking causes problems. </p>
<p>Let's look at two areas where head-of-line blocking causes problems.</p>
<p><strong>Web Networking</strong></p>
<p>As websites increasingly need a larger number of HTTP requests (HTML, CSS, JavaScript, images) to display all content, the impact of head-of-line blocking has also increased.
To improve on this, HTTP 2 introduced request multiplexing within a TCP data stream, which allows servers to stream multiple responses at the same time.
<p>As websites increasingly need a larger number of HTTP requests (HTML, CSS, JavaScript, images) to display all content, the impact of head-of-line blocking has also increased.
To improve on this, HTTP 2 introduced request multiplexing within a TCP data stream, which allows servers to stream multiple responses at the same time.
However, data loss of a single packet will still block all response streams because they exist within the context of a single TCP stream.</p>
<h3 id="connection-setup-duration"><a class="header" href="#connection-setup-duration">Connection Setup Duration</a></h3>
<p>In the usual TCP + TLS + HTTP stack, TCP needs 6 handshake messages to set up a session between server and client. TLS performs its own, sending 4 messages for setting up an initial connection over TLS 1.3. By integrating the transport protocol and TLS handshakes, QUIC can make connection setup more efficient.</p>
Expand Down
22 changes: 11 additions & 11 deletions networking-introduction.html
Original file line number Diff line number Diff line change
Expand Up @@ -174,12 +174,12 @@ <h1 class="menu-title">Quinn</h1>
<div id="content" class="content">
<main>
<h1 id="networking-introduction"><a class="header" href="#networking-introduction">Networking Introduction</a></h1>
<p>In this chapter, you will find a very short introduction to various networking concepts.
<p>In this chapter, you will find a very short introduction to various networking concepts.
These concepts are important to understanding when to use QUIC.</p>
<h2 id="1-tcpip-and-udp-comparison"><a class="header" href="#1-tcpip-and-udp-comparison">1. TCP/IP and UDP Comparison</a></h2>
<p>Let's compare TCP, UDP, and QUIC.</p>
<ul>
<li><strong>unreliable</strong>: Transport packets are not assured of arrival and ordering. </li>
<li><strong>unreliable</strong>: Transport packets are not assured of arrival and ordering.</li>
<li><strong>reliable</strong>: Transport packets are assured of arrival and ordering.</li>
</ul>
<div class="table-wrapper"><table><thead><tr><th style="text-align: center">Feature</th><th style="text-align: center">TCP</th><th style="text-align: center">UDP</th><th style="text-align: center">QUIC</th></tr></thead><tbody>
Expand All @@ -192,22 +192,22 @@ <h2 id="1-tcpip-and-udp-comparison"><a class="header" href="#1-tcpip-and-udp-com
</tbody></table>
</div>
<p>'a. Unreliable is supported as an extension.<br />
'b. QUIC control flow/congestion implementations will run in userspace whereas in TCP it's running in kernel space,
'b. QUIC control flow/congestion implementations will run in userspace whereas in TCP it's running in kernel space,
however, there might be a kernel implementation for QUIC in the future.</p>
<h2 id="2-issues-with-tcp"><a class="header" href="#2-issues-with-tcp">2. Issues with TCP</a></h2>
<p>TCP has been around for a long time and was not designed with the modern internet in mind.
It has several difficulties that QUIC tries to resolve. </p>
<p>TCP has been around for a long time and was not designed with the modern internet in mind.
It has several difficulties that QUIC tries to resolve.</p>
<h3 id="head-of-line-blocking"><a class="header" href="#head-of-line-blocking">Head-of-line Blocking</a></h3>
<p>One of the biggest issues with TCP is that of Head-of-line blocking.
It is a convenient feature because it ensures that all packages are sent and arrive in order.
<p>One of the biggest issues with TCP is that of Head-of-line blocking.
It is a convenient feature because it ensures that all packages are sent and arrive in order.
However, in cases of high throughput (multiplayer game networking) and big load in a short time (web page load), this can severely impact latency.</p>
<p>The issue is demonstrated in the following animation:</p>
<p><img src="./images/hol.gif" alt="Head of line blocking" /> </p>
<p><img src="./images/hol.gif" alt="Head of line blocking" /></p>
<p>This animation shows that if a certain packet drops in transmission, all packets have to wait at the transport layer until it is resent by the other end. Once the delayed packet arrives at its destination, all later packets are passed on to the destination application together.</p>
<p>Let's look at two areas where head-of-line blocking causes problems. </p>
<p>Let's look at two areas where head-of-line blocking causes problems.</p>
<p><strong>Web Networking</strong></p>
<p>As websites increasingly need a larger number of HTTP requests (HTML, CSS, JavaScript, images) to display all content, the impact of head-of-line blocking has also increased.
To improve on this, HTTP 2 introduced request multiplexing within a TCP data stream, which allows servers to stream multiple responses at the same time.
<p>As websites increasingly need a larger number of HTTP requests (HTML, CSS, JavaScript, images) to display all content, the impact of head-of-line blocking has also increased.
To improve on this, HTTP 2 introduced request multiplexing within a TCP data stream, which allows servers to stream multiple responses at the same time.
However, data loss of a single packet will still block all response streams because they exist within the context of a single TCP stream.</p>
<h3 id="connection-setup-duration"><a class="header" href="#connection-setup-duration">Connection Setup Duration</a></h3>
<p>In the usual TCP + TLS + HTTP stack, TCP needs 6 handshake messages to set up a session between server and client. TLS performs its own, sending 4 messages for setting up an initial connection over TLS 1.3. By integrating the transport protocol and TLS handshakes, QUIC can make connection setup more efficient.</p>
Expand Down
Loading

0 comments on commit bde9825

Please sign in to comment.