"The QCLASS is another field from a time when people thought DNS would be used for networks other than the Internet."
Depending on how one reads the RFC, it appears that the "sophomoric"1 compression scheme, which has been the source of numerous exploits/vulnerabilities in DNS software, also related to this thought about other classes besides Internet (IN). In the section on compression, RFC 1035 says that "pointers can be used where the format of the RR is not class specific."
But in practice, are the RRs in todays DNS packets class nonspecific? Other than IN and CH (sometimes used for testing), are there other classes that todays DNS software can be expected to handle? Do todays queries almost always fall into the same type (IN)? How many query classes are there?2
Note even support for the "ANY" class has been the source of controversy.
Compression is what makes writing DNS software more difficult than it needs to be. However, according to one authors reading of the RFC, compression is only "required" in recursive DNS servers, not authoritative ones.3
"DNS, however, was not designed by experienced programmers."
This is another reason I prefer using local and remote authoritative servers versus open shared resolvers/recursive caches, such as the ones run by third parties such as Google, Cisco or various ISPs.
No (sophomoric) compression needed. Whatever the reason was for having a method of compression in DNS packets4, I personally do not need it.
4 The blog post: "QDCOUNT: An unsigned 16 bit integer specifying the number of entries in the question section. We'll be sending 1 question."
Take a guess what would happen if he sent more than one question. The RFC just says the qdcount is "usually" one.
RFC 1035 is written for a future that never happened. (For better or worse.)
Depending on how one reads the RFC, it appears that the "sophomoric"1 compression scheme, which has been the source of numerous exploits/vulnerabilities in DNS software, also related to this thought about other classes besides Internet (IN). In the section on compression, RFC 1035 says that "pointers can be used where the format of the RR is not class specific."
1 https://news.ycombinator.com/item?id=503120
But in practice, are the RRs in todays DNS packets class nonspecific? Other than IN and CH (sometimes used for testing), are there other classes that todays DNS software can be expected to handle? Do todays queries almost always fall into the same type (IN)? How many query classes are there?2
2 https://www.iana.org/assignments/dns-parameters/dns-paramete...
Note even support for the "ANY" class has been the source of controversy.
Compression is what makes writing DNS software more difficult than it needs to be. However, according to one authors reading of the RFC, compression is only "required" in recursive DNS servers, not authoritative ones.3
3 https://cr.yp.to/djbdns/notes.html
"DNS, however, was not designed by experienced programmers."
This is another reason I prefer using local and remote authoritative servers versus open shared resolvers/recursive caches, such as the ones run by third parties such as Google, Cisco or various ISPs.
No (sophomoric) compression needed. Whatever the reason was for having a method of compression in DNS packets4, I personally do not need it.
4 The blog post: "QDCOUNT: An unsigned 16 bit integer specifying the number of entries in the question section. We'll be sending 1 question."
Take a guess what would happen if he sent more than one question. The RFC just says the qdcount is "usually" one.
RFC 1035 is written for a future that never happened. (For better or worse.)