[implement-dns.wizardzines.com]

Implement DNS in a weekend

Hello! Our goal here is to implement a toy DNS resolver.

What’s a DNS resolver? It’s a program that knows how to figure out what the IP address for a domain is. Here’s what the command line interface of the resolver we’re going to write looks like:

$ python3 resolve.py example.com 93.184.216.34

The whole thing is about 200 lines of Python, including implementing all of the binary DNS parsing from scratch.

This project is a fun way to learn:

How to parse a binary network protocol like DNS How DNS works under the hood (what’s happening behind the scenes when you make a DNS query?) There are also some bonus exercises if you want to implement a few more of the features a real DNS resolver would have.

Everything is in a Jupyter notebook, which you can download and run. You can download all the code here: