ECE4016 Assignment 1 |
In this assignment, you are required to implement a simple Local DNS Server . Introduction |
The Domain Name System (DNS) is the hierarchical and decentralized naming system used to identify computers reachable through the Internet or other Internet Protocol (IP) networks. The resource records contained in the DNS associate domain names with other forms of information. These are most commonly used to map human-friendly domain names to the numerical IP addresses computers need to locate services and devices using the underlying network protocols, but have been extended over time to perform many other functions as well. The Domain Name System has been an essential component of the functionality of the Internet since 1985. (wikipedia) Iterative query and Recursive query Detailed grading rule |
The local DNS server should have the following function: |
Listen and accept the DNS queries Send response to the clients Maintain a cache(20 points). If the ip address is queried before, it should be stored in the cache. if the answer for the query is found in cache, Local DNS Server send this answer to Client as the DNS response Support the DNS queries of www.baidu.com through recursive or iterative searching (30 points) Support the DNS queries of www.example.com through recursive or iterative searching (20 points) Support the DNS queries of www.baidu.com through public DNS server (15 points) Support the DNS queries of www.example.com through public DNS server (15 points) Requirements |
Print the ip address of all the servers you pass by during the searching Use a variable flag to indicate whether ask the public server for the IP address. When the flag is set to be 0 , ask the public server for the IP address. When the flag is set to be 1 do the recursive or iterative searching Make sure your program works under ubuntu 20 Useful tools |
There are some useful tools that may help you in your programming. (Dnspython is not allowed to use in this lab) socket dnslib |
Simple test by yourself |
You can use dig to test your local NDS server. An example test code: dig www.example.com @127.0.0.1 -p 1234 dig www.baidu.com @127.0.0.1 -p 1234 Note that this test code will be used in the evaluation of this project, make sure your program works given this test code. |