Articles on Networking
Last updated: 2023/01/25
Top deep-dives on Networking
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.
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.
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.
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.
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.
Lucas Pardue and Christopher Wood give a thorough overview of the technologies behind proxies, including TCP, HTTP. CONNECT, and QUIC.
Matt Pogue delves into the five standard layers of networking.
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.
Seth Archer Brown gives a high level overview of how handling guarantees in networks.
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.
Adam Pritchard illuminates why it's so darn hard to get the real IP address from a request.
Adam Pritchard explains the difficulties in identifying the "correct" IP address of a client.
Alex Ellis gives a basic explanation of how traceroute works and presents an implementation in Python.
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".
Artem Golubin goes into the nitty gritty of masscan, a "fast port scanner capable of scanning the entire IPv4 internet in under five minutes".
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.
Daniel Stenberg explains how trailing dots on host names in URLs are ridiculously annoying.
"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)".
Antoine Beaupré does a deep-dive on the Matrix communication protocol.
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!
Mete Balci is working on an article that dives deeply into the ethernet physical layer.
- 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.
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.
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.
- 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
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.