Why does TCP even need a 3-way handshake?

The 3-way handshake. It’s inevitable in any TCP discussion that you mention the TCP connection establishment three-way handshake. After writing about QUIC and how it aims to have 0-RTT connection establishment cost, I started wondering why TCP needed that 1-RTT 3-way handshake in the first place.

June 6, 2018

TIL: QUIC is like TLS over UDP

QUIC (Quick UDP Internet Connections) is a new(ish) protocol for developing applications on the internet. It aims to provide TLS-like encryption without the overhead of TCP.

June 3, 2018

TIL: The difference between netstat and ss

Motivation In this post, I’m going to go over two tools for inspecting the socket states (netstat and ss), and why to choose one over the other (spoiler: you can really choose either). This is not going to be a 12 ways to inspect socket states article, there are lots of those. What is a socket? A socket is a Linux file descriptor for communicating with the network. In Linux, they say everything is a file....

May 31, 2018

TIL: There are 16 T1 Internet Service Providers

I’ve been collecting information for a “Practical Guide to Linux Networking” by reading material I can find. Two things I’ve been reading recently are: A Practical Guide to (Correctly) Troubleshooting with Traceroute a presentation by Richard A Steenbergen Compute Networking: A Top Down Approach a textbook by Kurose and Ross In the traceroute guide, Richard mentions that it’s useful to find the boundaries of your network and that it’s also useful to be able to translate DNS names to ISP’s....

May 30, 2018

Dumb dig clone in Rust

Why write a DNS client When I started digging in to DNS, I thought it would be interesting to try implementing a very simple DNS client similar to dig, but using Rust. My goal was to better understand DNS at the protocol level. I wanted to know what bytes were being sent and received to drive the system. The final result is in this repo). In the rest of the post, I’ll detail what I found out along the way....

February 19, 2018

Meandering History of DNS Authority

As a follow up to my DNS post, I started trying to answer “Who’s in charge of all this?”. Basically, I wanted to know what keeps me from claiming a different domain name or for that matter for claiming a different IP address. I went down a rabbit hole of RFC’s and never quite pulled out the answer to my question, but I wanted to post what I did find out since it’s been languishing in my drafts for too long....

February 14, 2018

Starting to figure out SSL

Introduction I’ve been slowly working towards a personal finance app, but before I can actually put it on the open web, I want to be reasonably confident that I am not opening myself up to being hacked. One of the pieces to that puzzle is having secure connections in the browser for accessing my site. That involves HTTPS. Progress Here’s what I’ve got so far. There’s symmetric and asymmetric encryption. Symmetric is when both parties share the same secret....

February 14, 2018

DNS End to End

Domain Name System: End to End We all interact with the Domain Name System (DNS) every day. Every time we load a web page, or click a link, our software relies on DNS to figure out what address to send requests to. In this post, I will dig into how DNS works by tracing through the machinery that happens behind the scenes. What is the purpose of DNS? It is first worth calling out what DNS is and why anybody should care about it....

November 25, 2017