This is a simple computer networks project a friend of mine and I made for our university class. Through the use of sockets, we created a simulated DNS network based on a hierarchical and recursive mode. Then we added a traceroute and an external DNS system: the external DNS system is used in case the requested address is not present in our simulated network and the traceroute which is just a traceroute function.
Credits for the external DNS: https://github.com/riveraj/dns-resolver
Credits for the Traceroute: https://github.com/krishpranav/traceroute