Assignment Description
DNS servers communicate with each other using their own protocol. It is your job to implement your own DNS server
that adheres to this protocol and performs recursive queries. Start by reading the official specification, RFC 1035.6 The
RFC mentions in detail the request formats, the queries that you will receive, and many other valuable information.
Requirements
Typically, a client application forwards a domain name to the operating system, which in turn forwards it to a DNS
server that performs recursive queries. Performing a recursive query means that the DNS server will query other DNS
servers until it finds the address that belongs to the given domain name. This address is then returned to the application
via the operating system.
Your task is to implement your own DNS server with the following requirements:
1. Perform recursive DNS queries.
2. Handle requests from multiple operating systems.
3. Implement the RTT (Round Trip Time) algorithm to choose a name server.
4. Implement the caching policy specified in the RFC section “7.4. Using the cache”
5. Handles mail exchange servers requests.
Evaluation
Your implementation is evaluated by the TAs. To test your server implementation, you can configure your Web browser
or operating system to use it as its DNS server. Make sure that your server is able to handle requests from different
operating systems. Your implementation must resolve requests by communicating with the root server and the servers
it lists in its replies. You cannot pass the assignment if you simply forward requests to another DNS server that performs
recursive queries.
Resources
Below is a list of free, popular, and public DNS servers. You can analyze their responses to learn more about how to
implement your own server.
(8.8.8.8 and 8.8.4.4)
Quad9
(9.9.9.9 and 149.112.112.112)
OpenDNS
(208.67.222.222 and 208.67.220.220)
You can find the addresses of the DNS root servers at
https://www.iana.org/domains/root/server
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of