Try to fix rendering issues
This commit is contained in:
parent
a7e50b9008
commit
e6382dcbc1
18
tcpquic.md
18
tcpquic.md
|
@ -5,7 +5,7 @@ connection is doing fine at around 100 Mbps. So how come it took 3 seconds to sh
|
||||||
|
|
||||||
Let's say our network has 3 nodes:
|
Let's say our network has 3 nodes:
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---------> our router ---------> the server
|
your phone ---------> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
```
|
```
|
||||||
|
@ -17,7 +17,7 @@ the server, it takes 2\*n seconds (n seconds to go from you to our router, then
|
||||||
server). As such, we want to keep this n very low. Ideally, it'd be 0, but in practice we're limited by things like the
|
server). As such, we want to keep this n very low. Ideally, it'd be 0, but in practice we're limited by things like the
|
||||||
speed of light.
|
speed of light.
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---------> our router ---------> the server
|
your phone ---------> our router ---------> the server
|
||||||
<--------- <--DATA---
|
<--------- <--DATA---
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ So you might be thinking, "it takes 3 seconds for the server to send me the page
|
||||||
Before the server can send you anything, it first needs to know what you want. You need to tell the server what you want.
|
Before the server can send you anything, it first needs to know what you want. You need to tell the server what you want.
|
||||||
So our n is no longer 1.5s but 0.75s instead.
|
So our n is no longer 1.5s but 0.75s instead.
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---HTTP--> our router ---------> the server
|
your phone ---HTTP--> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ Transmission Control Protocol, or TCP, is the protocol used to prevent evil hack
|
||||||
accomplishes that by employing a 3-way handshake. So, how does it work? Well, first, you ask for a connection. This is
|
accomplishes that by employing a 3-way handshake. So, how does it work? Well, first, you ask for a connection. This is
|
||||||
called a SYN in TCP:
|
called a SYN in TCP:
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---SYN---> our router ---------> the server
|
your phone ---SYN---> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ This lets the server know you want to send data.
|
||||||
When the server receives the SYN, it then tells you that it got the SYN, and asks *you* for a connection. This is called
|
When the server receives the SYN, it then tells you that it got the SYN, and asks *you* for a connection. This is called
|
||||||
a SYN-ACK:
|
a SYN-ACK:
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---------> our router ---------> the server
|
your phone ---------> our router ---------> the server
|
||||||
<--------- <-SYN-ACK-
|
<--------- <-SYN-ACK-
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ This lets you know the server wants to send data, and acknowledges that you want
|
||||||
We still need to acknowledge that the server wants to send data. So, we send an ACK:
|
We still need to acknowledge that the server wants to send data. So, we send an ACK:
|
||||||
|
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---ACK---> our router ---------> the server
|
your phone ---ACK---> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ basically a map/instructions on how to get the packets to the destination.
|
||||||
|
|
||||||
Thankfully, DNS is usually stored in the router. Additionally, it doesn't use TCP, so there's no 3-way handshake.
|
Thankfully, DNS is usually stored in the router. Additionally, it doesn't use TCP, so there's no 3-way handshake.
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---NAME--> our router ---------> the server
|
your phone ---NAME--> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ can do anything. But can we improve the TCP? What if we terminate the TCP at the
|
||||||
While not strictly allowed by the internet specifications, it's not strictly disallowed either. If implemented, our flow can
|
While not strictly allowed by the internet specifications, it's not strictly disallowed either. If implemented, our flow can
|
||||||
look like this:
|
look like this:
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---NAME--> our router ---------> the server
|
your phone ---NAME--> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ Rather than terminating just TCP at the router, can we go one step further?
|
||||||
|
|
||||||
Can we create a protocol such that the great majority of the connections look more like this:
|
Can we create a protocol such that the great majority of the connections look more like this:
|
||||||
|
|
||||||
```
|
```text
|
||||||
your phone ---NAME--> our router ---------> the server
|
your phone ---NAME--> our router ---------> the server
|
||||||
<--------- <---------
|
<--------- <---------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue