Articles on Networking

Last updated: 2023/01/25

Top deep-dives on Networking

What happens when...

Apparently asking what happens when you open a page in your browser is a popular interview questions for developers. I didn't know that, and this article by a number of authors/contributors (exactly 69 gigiddy gigiddy) spares no details in answering the question, from the first keystroke to the last render.

What Does It Take To Resolve A Hostname

Content delivery networks (CDNs)

Another great part of the internet is being able to use resources from other people. This is a popular way of getting things done in web development (npm install check-if-variable-is-false??). But in web dev, you can use these scripts in real-time, when a user loads the page. Katie Hempenius' article discusses CDNs, one of the main ways of achieving this real-time resource sharing. Katie covers how they work, why caching is good, and how performance can be improved overall.

RTC (Real-Time Communication) at scale

Although this is a bit of an older article, its depth and breadth are impressive enough to warrant featuring. Horatiu Lazu gives an overview and history of signalling and media streaming, followed by an analysis of a number of different web communication protocols; ultimately concluding with a case study on Skype's P2P signaling protocol.

TLDs -- Putting the 'Fun' in the top of the DNS

Have you ever wondered what the difference between .com vs .net is? Or why all the hip hew startups use .io? Well although this article doesn't answer those questions directly, it providers enough inforamtion for you to determine that on your own. Jan Schaumann presents the initial list of top level domains, then goes on to give interesting factoids about other domains as they were added with references to the respective RFCs or events.

How Does NTP Work?

Hope you've been keeping all of that networking knowledge from previous articles sharp, because this one by Kevin Sookocheff is all about the Network Time Protocol (NTP). It's not actually tied to the previous articles, it would just be a nice cherry on top. Kevin explains the NTP network architecture, the local clock model, the phase and frequency locked loop, the algorithm for keeping clocks synchronized, and message format.

A Primer on Proxies

Lucas Pardue and Christopher Wood give a thorough overview of the technologies behind proxies, including TCP, HTTP. CONNECT, and QUIC.

No, It's Not Always DNS

Matt Pogue delves into the five standard layers of networking.

The HTTP crash course nobody asked for

Amos discusses the HTTP protocol, specifically the 1.1 and 2.0 versions. He starts by discussing how HTTP works in general, then moves on to the practicalities of proxying HTTP 1.1 and 2.0. Amos also covers making HTTP requests, both with and without a proxy, and discusses the differences between the two versions of the protocol. The article ends with a discussion of some of the bugs that have been found in HTTP 2.0.

The Two Generals Problem

Seth Archer Brown gives a high level overview of how handling guarantees in networks.

Good-bye ESNI, hello ECH!s

When you're using encryption on the web for communication, often times you'll have to first exchange an encryption key between client and server so that the messages sent between one another can be decrypted. Unfortunately this process happens in the open, allowing malicious users to get a peak of the key. In this article, Christopher Patton presents the new changes coming to TLS that will completely move the handshaking process to being encrypted. Christopher also gives some background on the current state of things.

The perils of the “real” client IP

Adam Pritchard illuminates why it's so darn hard to get the real IP address from a request.

The perils of the “real” client IP

Adam Pritchard explains the difficulties in identifying the "correct" IP address of a client.

Writing a toy traceroute from scratch

Alex Ellis gives a basic explanation of how traceroute works and presents an implementation in Python.

The tale of a single register value

Software debugging makes me feel a lot like a detective piecing together clues to reproduce the set of events that led to a specific error. Well Jakub Sitnicki's article is a tribute to such sleuthing. In it, Jakub uncovers the secrets of a bug so heinous, network admins have been known to wake up at night in cold sweats at a mere hint of its occurence; "a software bug where the network stack crashes in reaction to a single received network packet, taking down the whole operating system with it".

How masscan works

Artem Golubin goes into the nitty gritty of masscan, a "fast port scanner capable of scanning the entire IPv4 internet in under five minutes".

IPv4 addresses are silly, inet_aton(3) doubly so.

You're probably used to IPv4 addresses being specified in the a.b.c.d style notation, but did you know that technically "an IPv4 address is just a 32-bit number"? In this informative article, Jan Schaumann dives into the different notations accepted by the inet_aton(3) function and some of the inherent weirdness.

A tale of a trailing dot

Daniel Stenberg explains how trailing dots on host names in URLs are ridiculously annoying.

Implementing TLS Encrypted Client Hello

"TLS is one of the basic building blocks of the internet, it is what puts the S in HTTPS". Hans-Christoph Steiner's article explores the difficulties and nuances of implementing of Encrypted Client Hello (ECH); "the next step in improving Transport Layer Security (TLS)".

Matrix notes

Antoine Beaupré does a deep-dive on the Matrix communication protocol.

The Challenges of Fuzzing 5G Protocols

5G has been touted as the next step in enabling modern technology, from self-driving cars to smart cities. In this article, the author explores the results of testing three separate fuzzers on three different 5G protocols, and highlights the implications of the results. Damn Daniel! Back at it again with the networking!

Work-In-Progress: Studying Ethernet Physical Layer 1

Mete Balci is working on an article that dives deeply into the ethernet physical layer.
Some highlights:

  • Mete explains the different technologies used for 10Base-TX, 100Base-TX, and 1000Base-TX
  • Mete describes the equipment required for testing
  • More hardware related than software

Getting web proxys and certificates working on Linux or "if it's all the same to you, I'd rather take a thousand years of the Sarlacc pit, thankyouverymuch"

Jussi Pakkanen discusses the mind numbing problems of getting all network traffic for a "Very Big customer who [has] a Very Corporative network setup" to flow through their own proxy using their own SSL certs.

Reasons for servers to support IPv6

More of a long distance swim than a deep dive (the analogy checks out), in this article Julia Evans explores why supporting IPv6 is actually good.

35 Million Hot Dogs: Benchmarking Caddy vs. Nginx

This blog post is about benchmarking Caddy against Nginx and their respective performance metrics as reverse proxies. Tyler Langlois providers a methodology and tons of stats and graphs.
Some highlights:

  • Nginx will fail by refusing or dropping connections, Caddy will fail by slowing everything down.
  • Nginx’s caching behaviors let it really shine with static asset files
  • Nginx uses an almost effortless amount of memory. Caddy peaked at almost 160MB real memory allocated for non-breaking tests, which may or may not be significant depending on what amount of total memory is available to the OS
  • Caddy’s default configuration is good

Anycast in Segment Routing

There are a lot of technologies that go into making the internet work. Among these, routing protocols are of vital importance. Dmytro Shypovalov's technical article explains how segment routing, a modern variant of source routing that is being developed within the SPRING and IPv6 working groups of the IETF, can enable the use of anycast routing to be more widespread.


Want to see more in-depth content?

subscribe to my newsletter!

Other Articles