Loading...

Build your own DNS server

Learn about the DNS protocol, DNS record types and more.

Start Building
dns-server
C
dns-server
C++
dns-server
C#
dns-server
JavaScript
dns-server
Go
dns-server
Python
dns-server
Rust
dns-server
Java
dns-server
Ruby
dns-server
TypeScript

This challenge requires a CodeCrafters Membership.

You're welcome to study the full challenge structure and stage instructions for free. A membership is needed for submitting code and viewing solutions.

Want to try a free challenge? Try Build your own Kafka — it's free during beta.

DNS is a protocol used to resolve domain names to IP addresses. In this challenge, you'll build a DNS server that's capable of responding to basic DNS queries.

Along the way you'll learn about the DNS protocol, DNS packet format, DNS record types, UDP servers and more.

Stages

DNS is a protocol used to resolve domain names to IP addresses. In this challenge, you'll build a DNS server that's capable of responding to basic DNS queries.

Along the way you'll learn about the DNS protocol, DNS packet format, DNS record types, UDP servers and more.

Setup UDP server
Very easy
We'd expect a proficient developer to take < 5 minutes to complete this stage.
Write header section
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Write question section
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Write answer section
Easy
We'd expect a proficient developer to take 5-10 minutes to complete this stage.
Parse header section
Hard
We'd expect a proficient developer to take more than 1 hour to complete this stage.
Parse question section
Easy
We'd expect a proficient developer to take 5-10 minutes to complete this stage.
Parse compressed packet
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Forwarding Server
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.