#tcpip

waynerad@diasp.org

The Internet just changed. What this is about is a protocol called QUIC, that is in essence a replacement for TCP. This video does an impressive job of distilling knowledge from dry RFCs into something us mere mortals can understand. The underlying protocol of the internet is IP, which stands for Internet Protocol. It basically deals with moving a packet of information from one place to another. And that's all it does. It doesn't have any concept of a "connection", and any notion of reliability, i.e. if a packet gets lost, IP doesn't notice. That's why TCP, which stands for Transmission Control Protocol, was invented. It creates the concept of "connections", it gives packets "sequence numbers", it notices when packets arrive out of order and rearranges them, and if they don't arrive at all in which case it will request they get retransmitted. It is the TCP protocol that QUIC aims to replace.

But since TCP is embedded deeply in operating system kernels, replacing it with anything else would be hard. But alongside TCP, the makers of IP also made a parallel networking service called UDP, which stands for User Datagram Protocol. It is almost IP packets and nothing else. Well, there is a little more -- UDP provides checksums to detect errors and it also has the TCP concept of port numbers. But that's it. It has no concept of connections. With QUIC, they figured out how to invent a new TCP replacement by building it on UDP. In fact QUIC stands for Quick UDP Internet Connections.

But first, we have to ask, why would anyone want to replace TCP? It turns out that engineers since the invention of TCP have figured out how to make the "handshake" process more efficient. The "handshake" is the initial back-and-fourth process that enables the two sides to set up a connection between each other. Not only that, but immediately after a browser sets up a TCP connection, it has to do another handshake to set up the encryption, so the communication connection is secure. The protocol to do this is called TLS, which stands for Transport Layer Security. What the inventors of QUIC figured out how to do is do both the connection handshake and the encryption handshake simultaneously, and efficiently. In practice this means when you connect to a website, you get the first part of your webpage faster (what in computer science parlance is called lower latency).

QUIC doesn't stop there. With regular TCP connections, missing packets can cause one side or the other to wait while retransmission is requested and packets arriving out of order get properly resequenced. QUIC is smart enough to know when packets are interdependent and when they're not. So for example it can figure out it's got all the packets for an image so the browser can go ahead and display the image to you, but it doesn't have all the packets for the JavaScript so it can't run the JavaScript yet.

QUIC was invented by Google and has already been deployed in the Chrome browser, so if you're using Chrome, you're using it already. Microsoft Edge and Firefox already support it. On the server side, not just Google but many other major companies like Facebook (er, Meta), have already rolled it out. This was all possible because it's able to run on UDP and doesn't require operating systems to be upgraded to upgrade TCP.

The only downside is that many routers and firewalls block UDP completely for security reasons. But even here, rather than have to have everyone buy new routers and firewalls, it's possible to enable it by changing the settings on existing routers and firewalls. It will take time for security professionals to make this change, and some will never do it because the higher encryption level of QUIC means it's harder to tell what traffic is going through a router or firewall, and some people will never be comfortable allowing traffic they can't see. That's why browsers have to have the ability to fall back to regular TCP.

The Internet just changed. - David Bombal

#networking #internet #protocols #tcpip