COMP3331/9331 Computer Networks and Applications
Computer Networks and Applications
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
COMP3331/9331 Computer Networks and Applications
Assignment
This is the short version. A longer version proving more details will be released soon.
Assignment Due: 11:59 am (noon) Friday, 28 Jul 2023
Designing and implementing a DNS Resolver
A DNS (Domain Name System) resolver is a crucial component in computer networking that translates
human-readable domain names into corresponding IP addresses (such as
192.0.2.1). The DNS resolver performs the task of querying DNS servers to obtain the IP address
associated with a given domain name. You are required to implement a DNS resolver that can resolve
domain names to their corresponding IP addresses.
Initially, you will design and develop a basic version (worth a small fraction of the total marks) of the
DNS resolver that will include the following:
1. User Interface: Create a command-line interface for the DNS resolver, which will allow users to
enter domain names and display the resolved IP addresses.
2. DNS Query Handler: Implement the DNS query functionality within your resolver. When the user
enters a domain name, your resolver should send DNS queries to the appropriate DNS servers on
the Internet to obtain the IP address information.
3. DNS Response Handler: Handle DNS responses received from the DNS Servers on the Internet.
Extract the IP addresses and any additional information provided in the response.
Then, you will enhance the basic version with some additional features such as the following (worth the
remaining marks):
1. Caching: Implement a caching mechanism within the resolver to store DNS records retrieved
from previous queries. This caching feature should improve performance by avoiding repetitive
queries for the same domain names. You may be asked to implement different types of caching
algorithms and compare their performances.
2. Error Handling: Handle cases where the domain name does not exist or the DNS server does not
respond (in time). You need to capture these situations and provide some graceful feedback to the
user.
3. Advanced DNS Record Handling: Implement MX, CNAME, and NS types in addition to type A
in the basic version.
4. Reverse DNS Lookup: Given an IP address, the resolver should return the corresponding domain
name.
5. Performance reporting: Collect performance data for your resolver in terms of percentile of
resolving time and compare against some standard (public) resolvers, such as Google DNS.
By completing this assignment, students will gain a deeper and practical understanding of DNS
resolution, network protocols, socket programming, and client-server architectures.