diff --git a/resolver.md b/resolver.md index dc337c7..a12957a 100644 --- a/resolver.md +++ b/resolver.md @@ -2,6 +2,22 @@ **A warm welcome to DNS** # Resolver -... +Writing a modern resolver is the hardest part of DNS. A fully standards +compliant DNS resolver is not a resolver that can be used in practice. + +In reality, resolvers are expected to process malformed queries coming from +clients (stub-resolvers). Furthermore, many authoritative servers respond +incorrectly to modern DNS queries. Zones are frequently misconfigured on +authoritative servers but still expected to work correctly. + +Meanwhile, operators desire top performance, with individual CPU cores +expected to satisfy the DNS needs of hundreds of thousands of users. + +To top this off, a modern DNS resolver will have to validate DNSSEC +correctly. This may be among the hardest challenges of any widely used +Internet protocol. + +So in short, before attempting to write a DNS resolver, ponder if you really +need to. \ No newline at end of file