[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: