DNS (Domain Name System) in Computer Networks - Time & Space Complexity
When we look at DNS, we want to understand how the time to find a website's address grows as more websites exist.
We ask: How does the process of looking up a domain name take longer or stay the same as the internet grows?
Analyze the time complexity of the following DNS lookup process.
function dnsLookup(domain) {
if (cache.has(domain)) {
return cache.get(domain); // quick return if cached
}
let server = rootServer;
while (server) {
let response = server.query(domain);
if (response.isAnswer) {
cache.set(domain, response.address);
return response.address;
}
server = response.nextServer;
}
return null; // not found
}
This code simulates how DNS looks up a domain by querying servers step-by-step until it finds the address or fails.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop querying DNS servers one after another.
- How many times: At most, it queries a fixed number of DNS servers in a chain (root, TLD, authoritative).
Each DNS lookup follows a set path through a few servers regardless of how many domains exist.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 3 to 5 server queries |
| 100 | 3 to 5 server queries |
| 1000 | 3 to 5 server queries |
Pattern observation: The number of queries stays about the same no matter how many domains exist.
Time Complexity: O(1)
This means the time to find a domain address does not grow with the number of domains; it stays constant.
[X] Wrong: "DNS lookup time grows as the number of websites grows because it has to check many domains."
[OK] Correct: DNS uses a hierarchical system and caching, so it only asks a few servers in a fixed order, not all domains.
Understanding DNS lookup time helps you explain how large systems stay fast even with huge data, showing your grasp of efficient design.
"What if DNS did not use caching? How would the time complexity change for repeated lookups?"