From bc51df1c455e6c9fb7cbd42fcb6d62d16047818d Mon Sep 17 00:00:00 2001
From: Ingo Bauersachs <ingo@jitsi.org>
Date: Sun, 21 Jul 2024 13:34:12 +0200
Subject: [PATCH] Fix links to RFCs and IANA registries

---
 EXAMPLES.md                                   |   2 +-
 README.adoc                                   |   8 +-
 pom.xml                                       |   2 +-
 src/main/java/org/xbill/DNS/A6Record.java     |   3 +-
 src/main/java/org/xbill/DNS/AAAARecord.java   |   4 +-
 src/main/java/org/xbill/DNS/AFSDBRecord.java  |   2 +-
 src/main/java/org/xbill/DNS/APLRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/ARecord.java      |   4 +-
 src/main/java/org/xbill/DNS/CAARecord.java    |   4 +-
 .../java/org/xbill/DNS/CDNSKEYRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/CDSRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/CERTRecord.java   |   4 +-
 src/main/java/org/xbill/DNS/CNAMERecord.java  |   4 +-
 .../org/xbill/DNS/ClientSubnetOption.java     |   4 +-
 src/main/java/org/xbill/DNS/CookieOption.java |   3 +-
 src/main/java/org/xbill/DNS/DHCIDRecord.java  |   4 +-
 src/main/java/org/xbill/DNS/DLVRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/DNAMERecord.java  |   3 +-
 src/main/java/org/xbill/DNS/DNSKEYRecord.java |   4 +-
 src/main/java/org/xbill/DNS/DNSSEC.java       |   3 +-
 src/main/java/org/xbill/DNS/DSRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/DohResolver.java  |   6 +-
 src/main/java/org/xbill/DNS/EDNSOption.java   | 108 +++++++++++++++---
 .../xbill/DNS/ExtendedErrorCodeOption.java    |   4 +-
 src/main/java/org/xbill/DNS/GPOSRecord.java   |   4 +-
 src/main/java/org/xbill/DNS/HINFORecord.java  |   4 +-
 src/main/java/org/xbill/DNS/HTTPSRecord.java  |   5 +-
 .../java/org/xbill/DNS/IPSECKEYRecord.java    |  22 +++-
 src/main/java/org/xbill/DNS/ISDNRecord.java   |   2 +-
 src/main/java/org/xbill/DNS/KEYRecord.java    |   8 +-
 src/main/java/org/xbill/DNS/KXRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/LOCRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/MBRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/MDRecord.java     |   2 +-
 src/main/java/org/xbill/DNS/MFRecord.java     |   2 +-
 src/main/java/org/xbill/DNS/MGRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/MINFORecord.java  |   4 +-
 src/main/java/org/xbill/DNS/MRRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/MXRecord.java     |   8 +-
 src/main/java/org/xbill/DNS/NAPTRRecord.java  |   4 +-
 src/main/java/org/xbill/DNS/NSAPRecord.java   |   3 +-
 .../java/org/xbill/DNS/NSAP_PTRRecord.java    |   3 +-
 .../java/org/xbill/DNS/NSEC3PARAMRecord.java  |   4 +-
 src/main/java/org/xbill/DNS/NSEC3Record.java  |   4 +-
 src/main/java/org/xbill/DNS/NSECRecord.java   |   4 +-
 src/main/java/org/xbill/DNS/NSIDOption.java   |   4 +-
 src/main/java/org/xbill/DNS/NSRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/NULLRecord.java   |   4 +-
 src/main/java/org/xbill/DNS/NXTRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/NioTcpClient.java |   2 +-
 src/main/java/org/xbill/DNS/NioUdpClient.java |   2 +-
 .../java/org/xbill/DNS/OPENPGPKEYRecord.java  |   4 +-
 src/main/java/org/xbill/DNS/OPTRecord.java    |   3 +-
 src/main/java/org/xbill/DNS/Opcode.java       |   6 +-
 src/main/java/org/xbill/DNS/PTRRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/PXRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/RPRecord.java     |   2 +-
 src/main/java/org/xbill/DNS/RRSIGRecord.java  |   4 +-
 src/main/java/org/xbill/DNS/RTRecord.java     |   4 +-
 src/main/java/org/xbill/DNS/SIGRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/SMIMEARecord.java |   4 +-
 src/main/java/org/xbill/DNS/SOARecord.java    |   4 +-
 src/main/java/org/xbill/DNS/SPFRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/SRVRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/SSHFPRecord.java  |   4 +-
 src/main/java/org/xbill/DNS/SVCBBase.java     |   3 +-
 src/main/java/org/xbill/DNS/SVCBRecord.java   |   3 +-
 src/main/java/org/xbill/DNS/TKEYRecord.java   |   4 +-
 src/main/java/org/xbill/DNS/TLSARecord.java   |  28 ++++-
 src/main/java/org/xbill/DNS/TSIG.java         |   4 +-
 src/main/java/org/xbill/DNS/TSIGRecord.java   |   2 +-
 src/main/java/org/xbill/DNS/TXTRecord.java    |   4 +-
 .../org/xbill/DNS/TcpKeepaliveOption.java     |   2 +-
 src/main/java/org/xbill/DNS/Type.java         |  25 ++--
 src/main/java/org/xbill/DNS/URIRecord.java    |   4 +-
 src/main/java/org/xbill/DNS/WKSRecord.java    |   6 +-
 src/main/java/org/xbill/DNS/X25Record.java    |   2 +-
 .../org/xbill/DNS/lookup/LookupSession.java   |   2 +-
 .../DNS/lookup/NoSuchRRSetException.java      |   5 +-
 .../org/xbill/DNS/dnssec/ResolveExample.java  |   4 +-
 80 files changed, 294 insertions(+), 178 deletions(-)

diff --git a/EXAMPLES.md b/EXAMPLES.md
index 18a0eaf..bdb4b24 100644
--- a/EXAMPLES.md
+++ b/EXAMPLES.md
@@ -144,7 +144,7 @@ public class ResolveExample {
 
         // Send the same queries using the validating resolver with the
         // trust anchor of the root zone
-        // http://data.iana.org/root-anchors/root-anchors.xml
+        // https://data.iana.org/root-anchors/root-anchors.xml
         ValidatingResolver vr = new ValidatingResolver(sr);
         vr.loadTrustAnchors(new ByteArrayInputStream(ROOT.getBytes(StandardCharsets.US_ASCII)));
         System.out.println("\n\nValidating resolver:");
diff --git a/README.adoc b/README.adoc
index 9a0aebd..9c76545 100644
--- a/README.adoc
+++ b/README.adoc
@@ -122,7 +122,7 @@ Do NOT use it.
 |5000
 
 .2+|org.jitsi.dnssec.nsec3.iterations.N
-3+a|Maximum iteration count for the NSEC3 hashing function depending on the key size N. The defaults are from https://www.rfc-editor.org/rfc/rfc5155.html#section-10.3[RFC5155].
+3+a|Maximum iteration count for the NSEC3 hashing function depending on the key size N. The defaults are from https://datatracker.ietf.org/doc/html/rfc5155#section-10.3[RFC5155].
 |Integer
 2+a|- 1024 bit keys: 150 iterations
 - 2048 bit keys: 500 iterations
@@ -169,7 +169,7 @@ https://www.rfc-editor.org/rfc/rfc8624.html#section-3.1[RFC8624] for recommended
 .2+|dnsjava.dnssec.digest_enabled.ID
 3+|Enable or disable a DS record digest algorithm.
 See
-https://www.rfc-editor.org/rfc/rfc8624.html#section-3.3[RFC8624] for recommended values.
+https://datatracker.ietf.org/doc/html/rfc8624#section-3.3[RFC8624] for recommended values.
 |Boolean
 2+|Disable SHA.1:
 `dnsjava.dnssec.digest_enabled.1=false`
@@ -219,7 +219,7 @@ To migrate from dnssecjava, replace `org.jitsi` with `org.xbill.DNS` in Java pac
 Validated, secure responses contain the DNS `AD`-flag, while responses that failed validation return the `SERVFAIL`-RCode.
 Insecure responses return the actual return code without the `AD`-flag set.
 The reason why the validation failed or is insecure is provided as a localized string in the additional section under the record ./65280/TXT (a TXT record for the owner name of the root zone in the private query class `ValidatingResolver.VALIDATION_REASON_QCLASS`).
-The Extended DNS Errors (EDE, https://www.rfc-editor.org/rfc/rfc8914.html[RFC8914]) also provides the failure reason, although in less detail.
+The Extended DNS Errors (EDE, https://datatracker.ietf.org/doc/html/rfc8914[RFC8914]) also provides the failure reason, although in less detail.
 
 The link:EXAMPLES.md[examples] contain a small demo.
 
@@ -230,7 +230,7 @@ The most important changes are:
 
 * Requires at least Java 8
 
-* Uses http://www.slf4j.org/[slf4j] for logging and thus needs `slf4j-api`
+* Uses https://www.slf4j.org/[slf4j] for logging and thus needs `slf4j-api`
 on the classpath
 
 * The link:USAGE.md[command line tools] were moved to the `org.xbill.DNS.tools`
diff --git a/pom.xml b/pom.xml
index 0135f64..b2edf41 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/main/java/org/xbill/DNS/A6Record.java b/src/main/java/org/xbill/DNS/A6Record.java
index 3d8441e..7f19152 100644
--- a/src/main/java/org/xbill/DNS/A6Record.java
+++ b/src/main/java/org/xbill/DNS/A6Record.java
@@ -11,7 +11,8 @@ import java.net.UnknownHostException;
  * A6 Record - maps a domain name to an IPv6 address (historic)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc6563">RFC 6563: Moving A6 to Historic Status</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc6563">RFC 6563: Moving A6 to Historic
+ *     Status</a>
  */
 public class A6Record extends Record {
   private int prefixBits;
diff --git a/src/main/java/org/xbill/DNS/AAAARecord.java b/src/main/java/org/xbill/DNS/AAAARecord.java
index 6f7c4b9..cd9a4be 100644
--- a/src/main/java/org/xbill/DNS/AAAARecord.java
+++ b/src/main/java/org/xbill/DNS/AAAARecord.java
@@ -11,8 +11,8 @@ import java.net.UnknownHostException;
  * IPv6 Address Record - maps a domain name to an IPv6 address
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc3596">RFC 3596: DNS Extensions to Support IP Version
- *     6</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc3596">RFC 3596: DNS Extensions to Support
+ *     IP Version 6</a>
  */
 public class AAAARecord extends Record {
   private byte[] address;
diff --git a/src/main/java/org/xbill/DNS/AFSDBRecord.java b/src/main/java/org/xbill/DNS/AFSDBRecord.java
index 6a41251..6ca2f05 100644
--- a/src/main/java/org/xbill/DNS/AFSDBRecord.java
+++ b/src/main/java/org/xbill/DNS/AFSDBRecord.java
@@ -7,7 +7,7 @@ package org.xbill.DNS;
  * AFS Data Base Record - maps a domain name to the name of an AFS cell database server.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
  */
 public class AFSDBRecord extends U16NameBase {
   AFSDBRecord() {}
diff --git a/src/main/java/org/xbill/DNS/APLRecord.java b/src/main/java/org/xbill/DNS/APLRecord.java
index 3a5d3ee..fab315c 100644
--- a/src/main/java/org/xbill/DNS/APLRecord.java
+++ b/src/main/java/org/xbill/DNS/APLRecord.java
@@ -19,8 +19,8 @@ import org.xbill.DNS.utils.base16;
  * APL - Address Prefix List.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc3123">RFC 3123: A DNS RR Type for Lists of Address
- *     Prefixes (APL RR)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc3123">RFC 3123: A DNS RR Type for Lists of
+ *     Address Prefixes (APL RR)</a>
  */
 public class APLRecord extends Record {
 
diff --git a/src/main/java/org/xbill/DNS/ARecord.java b/src/main/java/org/xbill/DNS/ARecord.java
index a4739fc..4cccc55 100644
--- a/src/main/java/org/xbill/DNS/ARecord.java
+++ b/src/main/java/org/xbill/DNS/ARecord.java
@@ -11,8 +11,8 @@ import java.net.UnknownHostException;
  * Address Record - maps a domain name to an Internet address
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class ARecord extends Record {
   private int addr;
diff --git a/src/main/java/org/xbill/DNS/CAARecord.java b/src/main/java/org/xbill/DNS/CAARecord.java
index 47a4dd2..2fc61ce 100644
--- a/src/main/java/org/xbill/DNS/CAARecord.java
+++ b/src/main/java/org/xbill/DNS/CAARecord.java
@@ -9,8 +9,8 @@ import java.io.IOException;
  * Certification Authority Authorization
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc6844">RFC 6844: DNS Certification Authority
- *     Authorization (CAA) Resource Record</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc6844">RFC 6844: DNS Certification
+ *     Authority Authorization (CAA) Resource Record</a>
  */
 public class CAARecord extends Record {
   public static class Flags {
diff --git a/src/main/java/org/xbill/DNS/CDNSKEYRecord.java b/src/main/java/org/xbill/DNS/CDNSKEYRecord.java
index 8879027..778ac69 100644
--- a/src/main/java/org/xbill/DNS/CDNSKEYRecord.java
+++ b/src/main/java/org/xbill/DNS/CDNSKEYRecord.java
@@ -7,8 +7,8 @@ import java.security.PublicKey;
  * Child DNSKEY record as specified in RFC 8078.
  *
  * @see DNSSEC
- * @see <a href="https://tools.ietf.org/html/rfc8078">RFC 8078: Managing DS Records from the Parent
- *     via CDS/CDNSKEY</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc8078">RFC 8078: Managing DS Records from
+ *     the Parent via CDS/CDNSKEY</a>
  */
 public class CDNSKEYRecord extends DNSKEYRecord {
   CDNSKEYRecord() {}
diff --git a/src/main/java/org/xbill/DNS/CDSRecord.java b/src/main/java/org/xbill/DNS/CDSRecord.java
index d3e8382..c9eee1f 100644
--- a/src/main/java/org/xbill/DNS/CDSRecord.java
+++ b/src/main/java/org/xbill/DNS/CDSRecord.java
@@ -5,8 +5,8 @@ package org.xbill.DNS;
  * Child Delegation Signer record as specified in RFC 8078.
  *
  * @see DNSSEC
- * @see <a href="https://tools.ietf.org/html/rfc8078">RFC 8078: Managing DS Records from the Parent
- *     via CDS/CDNSKEY</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc8078">RFC 8078: Managing DS Records from
+ *     the Parent via CDS/CDNSKEY</a>
  */
 public class CDSRecord extends DSRecord {
   CDSRecord() {}
diff --git a/src/main/java/org/xbill/DNS/CERTRecord.java b/src/main/java/org/xbill/DNS/CERTRecord.java
index 624f600..5ab7fd0 100644
--- a/src/main/java/org/xbill/DNS/CERTRecord.java
+++ b/src/main/java/org/xbill/DNS/CERTRecord.java
@@ -12,8 +12,8 @@ import org.xbill.DNS.utils.base64;
  *
  * @see KEYRecord
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4398">RFC 4398: Storing Certificates in the Domain
- *     Name System (DNS)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4398">RFC 4398: Storing Certificates in
+ *     the Domain Name System (DNS)</a>
  */
 public class CERTRecord extends Record {
 
diff --git a/src/main/java/org/xbill/DNS/CNAMERecord.java b/src/main/java/org/xbill/DNS/CNAMERecord.java
index 0359cf3..5033d9f 100644
--- a/src/main/java/org/xbill/DNS/CNAMERecord.java
+++ b/src/main/java/org/xbill/DNS/CNAMERecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * CNAME Record - maps an alias to its real name
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class CNAMERecord extends SingleCompressedNameBase {
   CNAMERecord() {}
diff --git a/src/main/java/org/xbill/DNS/ClientSubnetOption.java b/src/main/java/org/xbill/DNS/ClientSubnetOption.java
index 8d2730a..6d8df8d 100644
--- a/src/main/java/org/xbill/DNS/ClientSubnetOption.java
+++ b/src/main/java/org/xbill/DNS/ClientSubnetOption.java
@@ -7,8 +7,7 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 
 /**
- * The Client Subnet EDNS Option, defined in <a href="https://tools.ietf.org/html/rfc7871">Client
- * subnet in DNS requests</a>.
+ * The Client Subnet EDNS Option.
  *
  * <p>The option is used to convey information about the IP address of the originating client, so
  * that an authoritative server can make decisions based on this address, rather than the address of
@@ -22,6 +21,7 @@ import java.net.UnknownHostException;
  * length (where the final octet is padded with bits set to 0)
  *
  * @see OPTRecord
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc7871">RFC 7871</a>
  * @author Brian Wellington
  * @author Ming Zhou &lt;mizhou@bnivideo.com&gt;, Beaumaris Networks
  */
diff --git a/src/main/java/org/xbill/DNS/CookieOption.java b/src/main/java/org/xbill/DNS/CookieOption.java
index 17f2247..5228f31 100644
--- a/src/main/java/org/xbill/DNS/CookieOption.java
+++ b/src/main/java/org/xbill/DNS/CookieOption.java
@@ -6,9 +6,10 @@ import java.util.Optional;
 import org.xbill.DNS.utils.base16;
 
 /**
- * Cookie EDNS0 Option, as defined in https://tools.ietf.org/html/rfc7873
+ * Cookie EDNS0 Option.
  *
  * @see OPTRecord
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc7873">RFC 7873</a>
  * @author Klaus Malorny
  */
 public class CookieOption extends EDNSOption {
diff --git a/src/main/java/org/xbill/DNS/DHCIDRecord.java b/src/main/java/org/xbill/DNS/DHCIDRecord.java
index 827c976..be39470 100644
--- a/src/main/java/org/xbill/DNS/DHCIDRecord.java
+++ b/src/main/java/org/xbill/DNS/DHCIDRecord.java
@@ -10,8 +10,8 @@ import org.xbill.DNS.utils.base64;
  * DHCID - Dynamic Host Configuration Protocol (DHCP) ID (RFC 4701)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4701">RFC 4701: A DNS Resource Record (RR) for
- *     Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4701">RFC 4701: A DNS Resource Record (RR)
+ *     for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR)</a>
  */
 public class DHCIDRecord extends Record {
   private byte[] data;
diff --git a/src/main/java/org/xbill/DNS/DLVRecord.java b/src/main/java/org/xbill/DNS/DLVRecord.java
index f890427..c6d8ff6 100644
--- a/src/main/java/org/xbill/DNS/DLVRecord.java
+++ b/src/main/java/org/xbill/DNS/DLVRecord.java
@@ -14,8 +14,8 @@ import org.xbill.DNS.utils.base16;
  * @see DSRecord
  * @author David Blacka
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4431">RFC 4431: The DNSSEC Lookaside Validation
- *     (DLV) DNS Resource Record</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4431">RFC 4431: The DNSSEC Lookaside
+ *     Validation (DLV) DNS Resource Record</a>
  */
 public class DLVRecord extends Record {
 
diff --git a/src/main/java/org/xbill/DNS/DNAMERecord.java b/src/main/java/org/xbill/DNS/DNAMERecord.java
index 429aae5..d088d8f 100644
--- a/src/main/java/org/xbill/DNS/DNAMERecord.java
+++ b/src/main/java/org/xbill/DNS/DNAMERecord.java
@@ -7,7 +7,8 @@ package org.xbill.DNS;
  * DNAME Record - maps a nonterminal alias (subtree) to a different domain
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc6672">RFC 6672: DNAME Redirection in the DNS</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc6672">RFC 6672: DNAME Redirection in the
+ *     DNS</a>
  */
 public class DNAMERecord extends SingleNameBase {
   DNAMERecord() {}
diff --git a/src/main/java/org/xbill/DNS/DNSKEYRecord.java b/src/main/java/org/xbill/DNS/DNSKEYRecord.java
index 438fa1d..d0d9b34 100644
--- a/src/main/java/org/xbill/DNS/DNSKEYRecord.java
+++ b/src/main/java/org/xbill/DNS/DNSKEYRecord.java
@@ -12,8 +12,8 @@ import java.security.PublicKey;
  *
  * @see DNSSEC
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4034">RFC 4034: Resource Records for the DNS
- *     Security Extensions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4034">RFC 4034: Resource Records for the
+ *     DNS Security Extensions</a>
  */
 public class DNSKEYRecord extends KEYBase {
 
diff --git a/src/main/java/org/xbill/DNS/DNSSEC.java b/src/main/java/org/xbill/DNS/DNSSEC.java
index dbf684a..1b11631 100644
--- a/src/main/java/org/xbill/DNS/DNSSEC.java
+++ b/src/main/java/org/xbill/DNS/DNSSEC.java
@@ -43,8 +43,9 @@ public class DNSSEC {
     private Algorithm() {}
 
     /**
-     * Delete DS record in parent zone, RFC8078.
+     * Delete DS record in parent zone.
      *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc8078/">RFC 8078</a>
      * @since 3.5
      */
     public static final int DELETE = 0;
diff --git a/src/main/java/org/xbill/DNS/DSRecord.java b/src/main/java/org/xbill/DNS/DSRecord.java
index bcfeeed..9970d02 100644
--- a/src/main/java/org/xbill/DNS/DSRecord.java
+++ b/src/main/java/org/xbill/DNS/DSRecord.java
@@ -13,8 +13,8 @@ import org.xbill.DNS.utils.base16;
  * @see DNSSEC
  * @author David Blacka
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4034">RFC 4034: Resource Records for the DNS
- *     Security Extensions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4034">RFC 4034: Resource Records for the
+ *     DNS Security Extensions</a>
  */
 public class DSRecord extends Record {
 
diff --git a/src/main/java/org/xbill/DNS/DohResolver.java b/src/main/java/org/xbill/DNS/DohResolver.java
index 6e7d73f..0933ef1 100644
--- a/src/main/java/org/xbill/DNS/DohResolver.java
+++ b/src/main/java/org/xbill/DNS/DohResolver.java
@@ -35,9 +35,9 @@ import org.xbill.DNS.AsyncSemaphore.Permit;
 import org.xbill.DNS.utils.base64;
 
 /**
- * Proof-of-concept <a href="https://tools.ietf.org/html/rfc8484">DNS over HTTP (DoH)</a> resolver.
- * This class is not suitable for high load scenarios because of the shortcomings of Java's built-in
- * HTTP clients. For more control, implement your own {@link Resolver} using e.g. <a
+ * Proof-of-concept <a href="https://datatracker.ietf.org/doc/html/rfc8484">DNS over HTTP (DoH)</a>
+ * resolver. This class is not suitable for high load scenarios because of the shortcomings of
+ * Java's built-in HTTP clients. For more control, implement your own {@link Resolver} using e.g. <a
  * href="https://github.com/square/okhttp/">OkHttp</a>.
  *
  * <p>On Java 8, it uses HTTP/1.1, which is against the recommendation of RFC 8484 to use HTTP/2 and
diff --git a/src/main/java/org/xbill/DNS/EDNSOption.java b/src/main/java/org/xbill/DNS/EDNSOption.java
index 4de7ad1..81906f8 100644
--- a/src/main/java/org/xbill/DNS/EDNSOption.java
+++ b/src/main/java/org/xbill/DNS/EDNSOption.java
@@ -22,54 +22,129 @@ public abstract class EDNSOption {
   public static class Code {
     private Code() {}
 
-    /** Apple's DNS Long-Lived Queries protocol, draft-sekar-dns-llq-06 */
+    /**
+     * Apple's DNS Long-Lived Queries protocol.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc8764/">RFC 8764</a>
+     */
     public static final int LLQ = 1;
 
-    /** Dynamic DNS Update Leases, draft-sekar-dns-ul-02 */
+    /**
+     * Dynamic DNS Update Leases.
+     *
+     * @see <a
+     *     href="https://datatracker.ietf.org/doc/html/draft-sekar-dns-ul-03">draft-sekar-dns-ul-03</a>
+     */
     public static final int UL = 2;
 
-    /** Name Server Identifier, RFC 5001 */
+    /**
+     * Name Server Identifier.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc5001/">RFC 5001</a>
+     */
     public static final int NSID = 3;
 
-    /** DNSSEC Algorithm Understood (DAU), RFC 6975 */
+    /**
+     * DNSSEC Algorithm Understood (DAU).
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc6975/">RFC 6975</a>
+     */
     public static final int DAU = 5;
 
-    /** DNSSEC DS Hash Understood (DHU), RFC 6975 */
+    /**
+     * DNSSEC DS Hash Understood (DHU).
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc8764/">RFC 8764</a>
+     */
     public static final int DHU = 6;
 
-    /** DNSSEC NSEC3 Hash Understood (N3U), RFC 6975 */
+    /**
+     * DNSSEC NSEC3 Hash Understood (N3U).
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc6975/">RFC 6975</a>
+     */
     public static final int N3U = 7;
 
-    /** Client Subnet, RFC 7871 */
+    /**
+     * Client Subnet.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc7871/">RFC 7871</a>
+     */
     public static final int CLIENT_SUBNET = 8;
 
-    /** (EDNS) EXPIRE Option, RFC 7314 */
+    /**
+     * (EDNS) EXPIRE Option.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc7314/">RFC 7314</a>
+     */
     public static final int EDNS_EXPIRE = 9;
 
-    /** Cookie, RFC 7873 */
+    /**
+     * Cookie.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc7873/">RFC 7873</a>
+     */
     public static final int COOKIE = 10;
 
-    /** TCP Keepalive, RFC 7828 */
+    /**
+     * TCP Keepalive.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc7828/">RFC 7828</a>
+     */
     public static final int TCP_KEEPALIVE = 11;
 
-    /** EDNS(0) Padding Option, RFC 7830 */
+    /**
+     * EDNS(0) Padding Option.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc7830/">RFC 7830</a>
+     */
     public static final int PADDING = 12;
 
-    /** CHAIN Query Requests in DNS, RFC 7901 */
+    /**
+     * CHAIN Query Requests in DNS.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc7901/">RFC 7901</a>
+     */
     public static final int CHAIN = 13;
 
-    /** Signaling Trust Anchor Knowledge in DNS Security Extensions (DNSSEC), RFC 8145 */
+    /**
+     * Signaling Trust Anchor Knowledge in DNS Security Extensions (DNSSEC).
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc8145/">RFC 8145</a>
+     */
     public static final int EDNS_KEY_TAG = 14;
 
-    /** Extended DNS Errors, RFC 8914. */
+    /**
+     * Extended DNS Errors.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc8914/">RFC 8914</a>
+     */
     public static final int EDNS_EXTENDED_ERROR = 15;
 
-    /** DNS EDNS Tags, draft-bellis-dnsop-edns-tags-01 */
+    /**
+     * DNS EDNS Tags.
+     *
+     * @see <a
+     *     href="https://datatracker.ietf.org/doc/html/draft-bellis-dnsop-edns-tags-01">draft-bellis-dnsop-edns-tags-01</a>
+     */
     public static final int EDNS_CLIENT_TAG = 16;
 
-    /** DNS EDNS Tags, draft-bellis-dnsop-edns-tags-01 */
+    /**
+     * DNS EDNS Tags.
+     *
+     * @see <a
+     *     href="https://datatracker.ietf.org/doc/html/draft-bellis-dnsop-edns-tags-01">draft-bellis-dnsop-edns-tags-01</a>
+     */
     public static final int EDNS_SERVER_TAG = 17;
 
+    /**
+     * Report Channel.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc9567/">RFC 9567</a>
+     * @since 3.6
+     */
+    public static final int REPORT_CHANNEL = 18;
+
     private static final Mnemonic codes =
         new Mnemonic("EDNS Option Codes", Mnemonic.CASE_SENSITIVE);
 
@@ -95,6 +170,7 @@ public abstract class EDNSOption {
       codes.add(EDNS_EXTENDED_ERROR, "Extended_DNS_Error");
       codes.add(EDNS_CLIENT_TAG, "EDNS-Client-Tag");
       codes.add(EDNS_SERVER_TAG, "EDNS-Server-Tag");
+      codes.add(REPORT_CHANNEL, "Report-Channel");
     }
 
     /** Converts an EDNS Option Code into its textual representation */
diff --git a/src/main/java/org/xbill/DNS/ExtendedErrorCodeOption.java b/src/main/java/org/xbill/DNS/ExtendedErrorCodeOption.java
index d511465..6f04fba 100644
--- a/src/main/java/org/xbill/DNS/ExtendedErrorCodeOption.java
+++ b/src/main/java/org/xbill/DNS/ExtendedErrorCodeOption.java
@@ -40,7 +40,9 @@ public class ExtendedErrorCodeOption extends EDNSOption {
 
   /**
    * The resolver attempted to perform DNSSEC validation, but validation ended in the Indeterminate
-   * state [RFC4035].
+   * state.
+   *
+   * @see <a href="https://datatracker.ietf.org/doc/html/rfc4035>RFC 4035</a>
    */
   public static final int DNSSEC_INDETERMINATE = 5;
 
diff --git a/src/main/java/org/xbill/DNS/GPOSRecord.java b/src/main/java/org/xbill/DNS/GPOSRecord.java
index 8911b7f..1566ccd 100644
--- a/src/main/java/org/xbill/DNS/GPOSRecord.java
+++ b/src/main/java/org/xbill/DNS/GPOSRecord.java
@@ -10,8 +10,8 @@ import java.io.IOException;
  * limited early version of {@link LOCRecord})
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1712">RFC 1712: DNS Encoding of Geographical
- *     Location</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1712">RFC 1712: DNS Encoding of
+ *     Geographical Location</a>
  */
 public class GPOSRecord extends Record {
   private byte[] latitude, longitude, altitude;
diff --git a/src/main/java/org/xbill/DNS/HINFORecord.java b/src/main/java/org/xbill/DNS/HINFORecord.java
index 6981ee6..06d32ec 100644
--- a/src/main/java/org/xbill/DNS/HINFORecord.java
+++ b/src/main/java/org/xbill/DNS/HINFORecord.java
@@ -9,8 +9,8 @@ import java.io.IOException;
  * Host Information - describes the CPU and OS of a host
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class HINFORecord extends Record {
   private byte[] cpu, os;
diff --git a/src/main/java/org/xbill/DNS/HTTPSRecord.java b/src/main/java/org/xbill/DNS/HTTPSRecord.java
index 56659f4..785401c 100644
--- a/src/main/java/org/xbill/DNS/HTTPSRecord.java
+++ b/src/main/java/org/xbill/DNS/HTTPSRecord.java
@@ -4,11 +4,10 @@ package org.xbill.DNS;
 import java.util.List;
 
 /**
- * HTTPS Service Location and Parameter Binding Record
+ * HTTPS Service Location and Parameter Binding Record.
  *
- * @see <a
- *     href="https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06">draft-ietf-dnsop-svcb-https</a>
  * @since 3.3
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc9460">RFC 9460</a>
  */
 public class HTTPSRecord extends SVCBBase {
   HTTPSRecord() {}
diff --git a/src/main/java/org/xbill/DNS/IPSECKEYRecord.java b/src/main/java/org/xbill/DNS/IPSECKEYRecord.java
index 5a2439d..59c5be2 100644
--- a/src/main/java/org/xbill/DNS/IPSECKEYRecord.java
+++ b/src/main/java/org/xbill/DNS/IPSECKEYRecord.java
@@ -12,8 +12,8 @@ import org.xbill.DNS.utils.base64;
  * IPsec Keying Material (RFC 4025)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4025">RFC 4025: A Method for Storing IPsec Keying
- *     Material in DNS</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4025">RFC 4025: A Method for Storing IPsec
+ *     Keying Material in DNS</a>
  */
 public class IPSECKEYRecord extends Record {
   /**
@@ -24,13 +24,25 @@ public class IPSECKEYRecord extends Record {
   public static class Algorithm {
     private Algorithm() {}
 
-    /** A DSA key is present, in the format defined in [RFC2536] */
+    /**
+     * A DSA key is present.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc2536">RFC 2536</a>
+     */
     public static final int DSA = 1;
 
-    /** A RSA key is present, in the format defined in [RFC3110] */
+    /**
+     * A RSA key is present.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc3110">RFC 3110</a>
+     */
     public static final int RSA = 2;
 
-    /** An ECDSA key is present, in the format defined in [RFC6605] */
+    /**
+     * An ECDSA key is present.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc6605">RFC 6605</a>
+     */
     public static final int ECDSA = 3;
   }
 
diff --git a/src/main/java/org/xbill/DNS/ISDNRecord.java b/src/main/java/org/xbill/DNS/ISDNRecord.java
index 329f4e7..4e27574 100644
--- a/src/main/java/org/xbill/DNS/ISDNRecord.java
+++ b/src/main/java/org/xbill/DNS/ISDNRecord.java
@@ -9,7 +9,7 @@ import java.io.IOException;
  * ISDN - identifies the ISDN number and subaddress associated with a name.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
  */
 public class ISDNRecord extends Record {
   private byte[] address;
diff --git a/src/main/java/org/xbill/DNS/KEYRecord.java b/src/main/java/org/xbill/DNS/KEYRecord.java
index f5b40cb..2335964 100644
--- a/src/main/java/org/xbill/DNS/KEYRecord.java
+++ b/src/main/java/org/xbill/DNS/KEYRecord.java
@@ -14,10 +14,10 @@ import java.util.StringTokenizer;
  * @see DNSSEC
  * @see DNSKEYRecord
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc2535">RFC 2535: Domain Name System Security
- *     Extensions</a>
- * @see <a href="https://tools.ietf.org/html/rfc3755">RFC 3755: Legacy Resolver Compatibility for
- *     Delegation Signer (DS)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2535">RFC 2535: Domain Name System
+ *     Security Extensions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc3755">RFC 3755: Legacy Resolver
+ *     Compatibility for Delegation Signer (DS)</a>
  */
 public class KEYRecord extends KEYBase {
   /** KEY protocol identifiers. */
diff --git a/src/main/java/org/xbill/DNS/KXRecord.java b/src/main/java/org/xbill/DNS/KXRecord.java
index 5918bfa..7ea5cf9 100644
--- a/src/main/java/org/xbill/DNS/KXRecord.java
+++ b/src/main/java/org/xbill/DNS/KXRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Key Exchange - delegation of authority
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc2230">RFC 2230: Key Exchange Delegation Record for
- *     the DNS</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2230">RFC 2230: Key Exchange Delegation
+ *     Record for the DNS</a>
  */
 public class KXRecord extends U16NameBase {
   KXRecord() {}
diff --git a/src/main/java/org/xbill/DNS/LOCRecord.java b/src/main/java/org/xbill/DNS/LOCRecord.java
index 60d5724..25d06db 100644
--- a/src/main/java/org/xbill/DNS/LOCRecord.java
+++ b/src/main/java/org/xbill/DNS/LOCRecord.java
@@ -11,8 +11,8 @@ import java.text.NumberFormat;
  * Location - describes the physical location of hosts, networks, subnets.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1876">RFC 1876: A Means for Expressing Location
- *     Information in the Domain Name System</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1876">RFC 1876: A Means for Expressing
+ *     Location Information in the Domain Name System</a>
  */
 public class LOCRecord extends Record {
   private static final NumberFormat w2;
diff --git a/src/main/java/org/xbill/DNS/MBRecord.java b/src/main/java/org/xbill/DNS/MBRecord.java
index 626df3f..a2fbc91 100644
--- a/src/main/java/org/xbill/DNS/MBRecord.java
+++ b/src/main/java/org/xbill/DNS/MBRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Mailbox Record - specifies a host containing a mailbox.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc883">RFC 883: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc883">RFC 883: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class MBRecord extends SingleNameBase {
   MBRecord() {}
diff --git a/src/main/java/org/xbill/DNS/MDRecord.java b/src/main/java/org/xbill/DNS/MDRecord.java
index 84077db..78c6a18 100644
--- a/src/main/java/org/xbill/DNS/MDRecord.java
+++ b/src/main/java/org/xbill/DNS/MDRecord.java
@@ -7,7 +7,7 @@ package org.xbill.DNS;
  * Mail Destination Record - specifies a mail agent which delivers mail for a domain (obsolete)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc973">RFC 973: Domain System Changes and
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc973">RFC 973: Domain System Changes and
  *     Observations</a>
  */
 public class MDRecord extends SingleNameBase {
diff --git a/src/main/java/org/xbill/DNS/MFRecord.java b/src/main/java/org/xbill/DNS/MFRecord.java
index 55828b6..0e0d59c 100644
--- a/src/main/java/org/xbill/DNS/MFRecord.java
+++ b/src/main/java/org/xbill/DNS/MFRecord.java
@@ -7,7 +7,7 @@ package org.xbill.DNS;
  * Mail Forwarder Record - specifies a mail agent which forwards mail for a domain (obsolete)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc973">RFC 973: Domain System Changes and
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc973">RFC 973: Domain System Changes and
  *     Observations</a>
  */
 public class MFRecord extends SingleNameBase {
diff --git a/src/main/java/org/xbill/DNS/MGRecord.java b/src/main/java/org/xbill/DNS/MGRecord.java
index 4d0d0fb..fd5077b 100644
--- a/src/main/java/org/xbill/DNS/MGRecord.java
+++ b/src/main/java/org/xbill/DNS/MGRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Mail Group Record - specifies a mailbox which is a member of a mail group.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc883">RFC 883: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc883">RFC 883: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class MGRecord extends SingleNameBase {
   MGRecord() {}
diff --git a/src/main/java/org/xbill/DNS/MINFORecord.java b/src/main/java/org/xbill/DNS/MINFORecord.java
index 242600f..a730095 100644
--- a/src/main/java/org/xbill/DNS/MINFORecord.java
+++ b/src/main/java/org/xbill/DNS/MINFORecord.java
@@ -10,8 +10,8 @@ import java.io.IOException;
  * address to receive error messages relating to the mailing list/mailbox.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc883">RFC 883: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc883">RFC 883: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class MINFORecord extends Record {
   private Name responsibleAddress;
diff --git a/src/main/java/org/xbill/DNS/MRRecord.java b/src/main/java/org/xbill/DNS/MRRecord.java
index 574997e..68e9f15 100644
--- a/src/main/java/org/xbill/DNS/MRRecord.java
+++ b/src/main/java/org/xbill/DNS/MRRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Mailbox Rename Record - specifies a rename of a mailbox.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc883">RFC 883: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc883">RFC 883: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class MRRecord extends SingleNameBase {
   MRRecord() {}
diff --git a/src/main/java/org/xbill/DNS/MXRecord.java b/src/main/java/org/xbill/DNS/MXRecord.java
index 8a6689f..f5ec13c 100644
--- a/src/main/java/org/xbill/DNS/MXRecord.java
+++ b/src/main/java/org/xbill/DNS/MXRecord.java
@@ -7,10 +7,10 @@ package org.xbill.DNS;
  * Mail Exchange - specifies where mail to a domain is sent
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
- * @see <a href="https://tools.ietf.org/html/rfc7505">RFC 7505: A "Null MX" No Service Resource
- *     Record for Domains That Accept No Mail</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc7505">RFC 7505: A "Null MX" No Service
+ *     Resource Record for Domains That Accept No Mail</a>
  */
 public class MXRecord extends U16NameBase {
   MXRecord() {}
diff --git a/src/main/java/org/xbill/DNS/NAPTRRecord.java b/src/main/java/org/xbill/DNS/NAPTRRecord.java
index da3bf9a..6b07fe8 100644
--- a/src/main/java/org/xbill/DNS/NAPTRRecord.java
+++ b/src/main/java/org/xbill/DNS/NAPTRRecord.java
@@ -10,8 +10,8 @@ import java.io.IOException;
  * will produce a new domain.
  *
  * @author Chuck Santos
- * @see <a href="https://tools.ietf.org/html/rfc3403">RFC 3403: Dynamic Delegation Discovery System
- *     (DDDS) Part Three: The Domain Name System (DNS) Database</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc3403">RFC 3403: Dynamic Delegation
+ *     Discovery System (DDDS) Part Three: The Domain Name System (DNS) Database</a>
  */
 public class NAPTRRecord extends Record {
   private int order, preference;
diff --git a/src/main/java/org/xbill/DNS/NSAPRecord.java b/src/main/java/org/xbill/DNS/NSAPRecord.java
index 3be0047..8b88175 100644
--- a/src/main/java/org/xbill/DNS/NSAPRecord.java
+++ b/src/main/java/org/xbill/DNS/NSAPRecord.java
@@ -11,7 +11,8 @@ import org.xbill.DNS.utils.base16;
  * NSAP Address Record.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1706">RFC 1706: DNS NSAP Resource Records</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1706">RFC 1706: DNS NSAP Resource
+ *     Records</a>
  */
 public class NSAPRecord extends Record {
   private byte[] address;
diff --git a/src/main/java/org/xbill/DNS/NSAP_PTRRecord.java b/src/main/java/org/xbill/DNS/NSAP_PTRRecord.java
index 8e1da00..478ddd1 100644
--- a/src/main/java/org/xbill/DNS/NSAP_PTRRecord.java
+++ b/src/main/java/org/xbill/DNS/NSAP_PTRRecord.java
@@ -7,7 +7,8 @@ package org.xbill.DNS;
  * NSAP Pointer Record - maps a domain name representing an NSAP Address to a hostname. (obsolete)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1706">RFC 1706: DNS NSAP Resource Records</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1706">RFC 1706: DNS NSAP Resource
+ *     Records</a>
  */
 public class NSAP_PTRRecord extends SingleNameBase {
   NSAP_PTRRecord() {}
diff --git a/src/main/java/org/xbill/DNS/NSEC3PARAMRecord.java b/src/main/java/org/xbill/DNS/NSEC3PARAMRecord.java
index 9875040..f82f34c 100644
--- a/src/main/java/org/xbill/DNS/NSEC3PARAMRecord.java
+++ b/src/main/java/org/xbill/DNS/NSEC3PARAMRecord.java
@@ -15,8 +15,8 @@ import org.xbill.DNS.utils.base16;
  *
  * @author Brian Wellington
  * @author David Blacka
- * @see <a href="https://tools.ietf.org/html/rfc5155">RFC 5155: DNS Security (DNSSEC) Hashed
- *     Authenticated Denial of Existence</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc5155">RFC 5155: DNS Security (DNSSEC)
+ *     Hashed Authenticated Denial of Existence</a>
  */
 public class NSEC3PARAMRecord extends Record {
   private int hashAlg;
diff --git a/src/main/java/org/xbill/DNS/NSEC3Record.java b/src/main/java/org/xbill/DNS/NSEC3Record.java
index 8fe2dfe..b97b3b5 100644
--- a/src/main/java/org/xbill/DNS/NSEC3Record.java
+++ b/src/main/java/org/xbill/DNS/NSEC3Record.java
@@ -18,8 +18,8 @@ import org.xbill.DNS.utils.base32;
  *
  * @author Brian Wellington
  * @author David Blacka
- * @see <a href="https://tools.ietf.org/html/rfc5155">RFC 5155: DNS Security (DNSSEC) Hashed
- *     Authenticated Denial of Existence</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc5155">RFC 5155: DNS Security (DNSSEC)
+ *     Hashed Authenticated Denial of Existence</a>
  */
 public class NSEC3Record extends Record {
 
diff --git a/src/main/java/org/xbill/DNS/NSECRecord.java b/src/main/java/org/xbill/DNS/NSECRecord.java
index cf28f5d..6737594 100644
--- a/src/main/java/org/xbill/DNS/NSECRecord.java
+++ b/src/main/java/org/xbill/DNS/NSECRecord.java
@@ -14,8 +14,8 @@ import java.io.IOException;
  *
  * @author Brian Wellington
  * @author David Blacka
- * @see <a href="https://tools.ietf.org/html/rfc4034">RFC 4034: Resource Records for the DNS
- *     Security Extensions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4034">RFC 4034: Resource Records for the
+ *     DNS Security Extensions</a>
  */
 public class NSECRecord extends Record {
   private Name next;
diff --git a/src/main/java/org/xbill/DNS/NSIDOption.java b/src/main/java/org/xbill/DNS/NSIDOption.java
index 31dcef4..477e36e 100644
--- a/src/main/java/org/xbill/DNS/NSIDOption.java
+++ b/src/main/java/org/xbill/DNS/NSIDOption.java
@@ -8,8 +8,8 @@ package org.xbill.DNS;
  *
  * @see OPTRecord
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc5001">RFC 5001: DNS Name Server Identifier (NSID)
- *     Option</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc5001">RFC 5001: DNS Name Server Identifier
+ *     (NSID) Option</a>
  */
 public class NSIDOption extends GenericEDNSOption {
   NSIDOption() {
diff --git a/src/main/java/org/xbill/DNS/NSRecord.java b/src/main/java/org/xbill/DNS/NSRecord.java
index 1c48370..e5a0757 100644
--- a/src/main/java/org/xbill/DNS/NSRecord.java
+++ b/src/main/java/org/xbill/DNS/NSRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Name Server Record - contains the name server serving the named zone
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class NSRecord extends SingleCompressedNameBase {
   NSRecord() {}
diff --git a/src/main/java/org/xbill/DNS/NULLRecord.java b/src/main/java/org/xbill/DNS/NULLRecord.java
index 00e1a29..a96554f 100644
--- a/src/main/java/org/xbill/DNS/NULLRecord.java
+++ b/src/main/java/org/xbill/DNS/NULLRecord.java
@@ -9,8 +9,8 @@ import java.io.IOException;
  * The NULL Record. This has no defined purpose, but can be used to hold arbitrary data.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class NULLRecord extends Record {
   private byte[] data;
diff --git a/src/main/java/org/xbill/DNS/NXTRecord.java b/src/main/java/org/xbill/DNS/NXTRecord.java
index 9c600ed..ac1347f 100644
--- a/src/main/java/org/xbill/DNS/NXTRecord.java
+++ b/src/main/java/org/xbill/DNS/NXTRecord.java
@@ -12,8 +12,8 @@ import java.util.BitSet;
  * signifies a failed query for data in a DNSSEC-signed zone.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc2065">RFC 2065: Domain Name System Security
- *     Extensions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2065">RFC 2065: Domain Name System
+ *     Security Extensions</a>
  */
 public class NXTRecord extends Record {
   private Name next;
diff --git a/src/main/java/org/xbill/DNS/NioTcpClient.java b/src/main/java/org/xbill/DNS/NioTcpClient.java
index aacc189..80b7a42 100644
--- a/src/main/java/org/xbill/DNS/NioTcpClient.java
+++ b/src/main/java/org/xbill/DNS/NioTcpClient.java
@@ -89,7 +89,7 @@ final class NioTcpClient extends NioClient {
           queryData);
 
       // combine length+message to avoid multiple TCP packets
-      // https://tools.ietf.org/html/rfc7766#section-8
+      // https://datatracker.ietf.org/doc/html/rfc7766#section-8
       ByteBuffer buffer = ByteBuffer.allocate(queryData.length + 2);
       buffer.put((byte) (queryData.length >>> 8));
       buffer.put((byte) (queryData.length & 0xFF));
diff --git a/src/main/java/org/xbill/DNS/NioUdpClient.java b/src/main/java/org/xbill/DNS/NioUdpClient.java
index 3cd218a..3653f71 100644
--- a/src/main/java/org/xbill/DNS/NioUdpClient.java
+++ b/src/main/java/org/xbill/DNS/NioUdpClient.java
@@ -31,7 +31,7 @@ final class NioUdpClient extends NioClient {
   private static final Queue<Transaction> pendingTransactions = new ConcurrentLinkedQueue<>();
 
   static {
-    // https://tools.ietf.org/html/rfc6335#section-6
+    // https://datatracker.ietf.org/doc/html/rfc6335#section-6
     int ephemeralStartDefault = 49152;
     int ephemeralEndDefault = 65535;
 
diff --git a/src/main/java/org/xbill/DNS/OPENPGPKEYRecord.java b/src/main/java/org/xbill/DNS/OPENPGPKEYRecord.java
index 1801b8a..362a905 100644
--- a/src/main/java/org/xbill/DNS/OPENPGPKEYRecord.java
+++ b/src/main/java/org/xbill/DNS/OPENPGPKEYRecord.java
@@ -9,8 +9,8 @@ import org.xbill.DNS.utils.base64;
  *
  * @author Brian Wellington
  * @author Valentin Hauner
- * @see <a href="https://tools.ietf.org/html/rfc7929">RFC 7929: DNS-Based Authentication of Named
- *     Entities (DANE) Bindings for OpenPGP</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc7929">RFC 7929: DNS-Based Authentication
+ *     of Named Entities (DANE) Bindings for OpenPGP</a>
  */
 public class OPENPGPKEYRecord extends Record {
   private byte[] cert;
diff --git a/src/main/java/org/xbill/DNS/OPTRecord.java b/src/main/java/org/xbill/DNS/OPTRecord.java
index f026113..a8d7cae 100644
--- a/src/main/java/org/xbill/DNS/OPTRecord.java
+++ b/src/main/java/org/xbill/DNS/OPTRecord.java
@@ -18,7 +18,8 @@ import java.util.List;
  *
  * @see Message
  * @see Resolver
- * @see <a href="https://tools.ietf.org/html/rfc6891">RFC 6891: Extension Mechanisms for DNS</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc6891">RFC 6891: Extension Mechanisms for
+ *     DNS</a>
  * @author Brian Wellington
  */
 public class OPTRecord extends Record {
diff --git a/src/main/java/org/xbill/DNS/Opcode.java b/src/main/java/org/xbill/DNS/Opcode.java
index 2445736..b3d9a0d 100644
--- a/src/main/java/org/xbill/DNS/Opcode.java
+++ b/src/main/java/org/xbill/DNS/Opcode.java
@@ -25,7 +25,11 @@ public final class Opcode {
   /** A dynamic update message */
   public static final int UPDATE = 5;
 
-  /** DNS Stateful Operations (DSO, RFC8490) */
+  /**
+   * DNS Stateful Operations (DSO).
+   *
+   * @see <a href="https://datatracker.ietf.org/doc/html/rfc8490">RFC 8490</a>
+   */
   public static final int DSO = 6;
 
   private static final Mnemonic opcodes = new Mnemonic("DNS Opcode", Mnemonic.CASE_UPPER);
diff --git a/src/main/java/org/xbill/DNS/PTRRecord.java b/src/main/java/org/xbill/DNS/PTRRecord.java
index 2ecaffe..68c139d 100644
--- a/src/main/java/org/xbill/DNS/PTRRecord.java
+++ b/src/main/java/org/xbill/DNS/PTRRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Pointer Record - maps a domain name representing an Internet Address to a hostname.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class PTRRecord extends SingleCompressedNameBase {
   PTRRecord() {}
diff --git a/src/main/java/org/xbill/DNS/PXRecord.java b/src/main/java/org/xbill/DNS/PXRecord.java
index c81db60..135de5d 100644
--- a/src/main/java/org/xbill/DNS/PXRecord.java
+++ b/src/main/java/org/xbill/DNS/PXRecord.java
@@ -9,8 +9,8 @@ import java.io.IOException;
  * X.400 mail mapping record.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc2163">RFC 2163: Using the Internet DNS to Distribute
- *     MIXER Conformant Global Address Mapping (MCGAM)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2163">RFC 2163: Using the Internet DNS to
+ *     Distribute MIXER Conformant Global Address Mapping (MCGAM)</a>
  */
 public class PXRecord extends Record {
   private int preference;
diff --git a/src/main/java/org/xbill/DNS/RPRecord.java b/src/main/java/org/xbill/DNS/RPRecord.java
index 461306b..93c7eb5 100644
--- a/src/main/java/org/xbill/DNS/RPRecord.java
+++ b/src/main/java/org/xbill/DNS/RPRecord.java
@@ -11,7 +11,7 @@ import java.io.IOException;
  *
  * @author Tom Scola (tscola@research.att.com)
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
  */
 public class RPRecord extends Record {
   private Name mailbox;
diff --git a/src/main/java/org/xbill/DNS/RRSIGRecord.java b/src/main/java/org/xbill/DNS/RRSIGRecord.java
index 701973c..a7fef0c 100644
--- a/src/main/java/org/xbill/DNS/RRSIGRecord.java
+++ b/src/main/java/org/xbill/DNS/RRSIGRecord.java
@@ -14,8 +14,8 @@ import java.util.Date;
  * @see RRset
  * @see DNSSEC
  * @see KEYRecord
- * @see <a href="https://tools.ietf.org/html/rfc4034">RFC 4034: Resource Records for the DNS
- *     Security Extensions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4034">RFC 4034: Resource Records for the
+ *     DNS Security Extensions</a>
  * @author Brian Wellington
  */
 public class RRSIGRecord extends SIGBase {
diff --git a/src/main/java/org/xbill/DNS/RTRecord.java b/src/main/java/org/xbill/DNS/RTRecord.java
index a66b69e..143cfec 100644
--- a/src/main/java/org/xbill/DNS/RTRecord.java
+++ b/src/main/java/org/xbill/DNS/RTRecord.java
@@ -7,8 +7,8 @@ package org.xbill.DNS;
  * Route Through Record - lists a route preference and intermediate host.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class RTRecord extends U16NameBase {
   RTRecord() {}
diff --git a/src/main/java/org/xbill/DNS/SIGRecord.java b/src/main/java/org/xbill/DNS/SIGRecord.java
index e25c2d0..9a012bd 100644
--- a/src/main/java/org/xbill/DNS/SIGRecord.java
+++ b/src/main/java/org/xbill/DNS/SIGRecord.java
@@ -13,8 +13,8 @@ import java.util.Date;
  *
  * @see RRset
  * @see DNSSEC
- * @see KEYRecord <a href="https://tools.ietf.org/html/rfc2535">RFC 2535: Domain Name System
- *     Security Extensions</a>
+ * @see KEYRecord <a href="https://datatracker.ietf.org/doc/html/rfc2535">RFC 2535: Domain Name
+ *     System Security Extensions</a>
  * @author Brian Wellington
  */
 public class SIGRecord extends SIGBase {
diff --git a/src/main/java/org/xbill/DNS/SMIMEARecord.java b/src/main/java/org/xbill/DNS/SMIMEARecord.java
index fe3b502..d98302e 100644
--- a/src/main/java/org/xbill/DNS/SMIMEARecord.java
+++ b/src/main/java/org/xbill/DNS/SMIMEARecord.java
@@ -6,8 +6,8 @@ package org.xbill.DNS;
 /**
  * S/MIME cert association
  *
- * @see <a href="https://tools.ietf.org/html/rfc8162">RFC 8162: Using Secure DNS to Associate
- *     Certificates with Domain Names for S/MIME</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc8162">RFC 8162: Using Secure DNS to
+ *     Associate Certificates with Domain Names for S/MIME</a>
  * @author Brian Wellington
  */
 public class SMIMEARecord extends TLSARecord {
diff --git a/src/main/java/org/xbill/DNS/SOARecord.java b/src/main/java/org/xbill/DNS/SOARecord.java
index 58e97af..4eceb55 100644
--- a/src/main/java/org/xbill/DNS/SOARecord.java
+++ b/src/main/java/org/xbill/DNS/SOARecord.java
@@ -9,8 +9,8 @@ import java.io.IOException;
  * Start of Authority - describes properties of a zone.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class SOARecord extends Record {
   private Name host, admin;
diff --git a/src/main/java/org/xbill/DNS/SPFRecord.java b/src/main/java/org/xbill/DNS/SPFRecord.java
index 01a993c..074b4b0 100644
--- a/src/main/java/org/xbill/DNS/SPFRecord.java
+++ b/src/main/java/org/xbill/DNS/SPFRecord.java
@@ -9,8 +9,8 @@ import java.util.List;
  * Sender Policy Framework (discontinued in RFC 7208)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc7208">RFC 7208: Sender Policy Framework (SPF) for
- *     Authorizing Use of Domains in Email, Version 1</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc7208">RFC 7208: Sender Policy Framework
+ *     (SPF) for Authorizing Use of Domains in Email, Version 1</a>
  */
 public class SPFRecord extends TXTBase {
   SPFRecord() {}
diff --git a/src/main/java/org/xbill/DNS/SRVRecord.java b/src/main/java/org/xbill/DNS/SRVRecord.java
index be0805a..b48be11 100644
--- a/src/main/java/org/xbill/DNS/SRVRecord.java
+++ b/src/main/java/org/xbill/DNS/SRVRecord.java
@@ -11,8 +11,8 @@ import java.io.IOException;
  * (for the secure SIP protocol) and _http._tcp.example.com (if HTTP used SRV records)
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc2782">RFC 2782: A DNS RR for specifying the location
- *     of services (DNS SRV)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2782">RFC 2782: A DNS RR for specifying
+ *     the location of services (DNS SRV)</a>
  */
 public class SRVRecord extends Record {
   private int priority, weight, port;
diff --git a/src/main/java/org/xbill/DNS/SSHFPRecord.java b/src/main/java/org/xbill/DNS/SSHFPRecord.java
index ccf9a81..4d7e971 100644
--- a/src/main/java/org/xbill/DNS/SSHFPRecord.java
+++ b/src/main/java/org/xbill/DNS/SSHFPRecord.java
@@ -10,8 +10,8 @@ import org.xbill.DNS.utils.base16;
  * SSH Fingerprint - stores the fingerprint of an SSH host key.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc4255">RFC 4255: Using DNS to Securely Publish Secure
- *     Shell (SSH) Key Fingerprints</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc4255">RFC 4255: Using DNS to Securely
+ *     Publish Secure Shell (SSH) Key Fingerprints</a>
  */
 public class SSHFPRecord extends Record {
   public static class Algorithm {
diff --git a/src/main/java/org/xbill/DNS/SVCBBase.java b/src/main/java/org/xbill/DNS/SVCBBase.java
index 695f9da..19ae05a 100644
--- a/src/main/java/org/xbill/DNS/SVCBBase.java
+++ b/src/main/java/org/xbill/DNS/SVCBBase.java
@@ -20,9 +20,8 @@ import org.xbill.DNS.utils.base64;
 /**
  * Implements common functionality for SVCB and HTTPS records
  *
- * @see <a
- *     href="https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06">draft-ietf-dnsop-svcb-https</a>
  * @since 3.3
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc9460">RFC 9460</a>
  */
 public abstract class SVCBBase extends Record {
   protected int svcPriority;
diff --git a/src/main/java/org/xbill/DNS/SVCBRecord.java b/src/main/java/org/xbill/DNS/SVCBRecord.java
index bed4de0..1785e52 100644
--- a/src/main/java/org/xbill/DNS/SVCBRecord.java
+++ b/src/main/java/org/xbill/DNS/SVCBRecord.java
@@ -6,9 +6,8 @@ import java.util.List;
 /**
  * Service Location and Parameter Binding Record
  *
- * @see <a
- *     href="https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06">draft-ietf-dnsop-svcb-https</a>
  * @since 3.3
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc9460">RFC 9460</a>
  */
 public class SVCBRecord extends SVCBBase {
   SVCBRecord() {}
diff --git a/src/main/java/org/xbill/DNS/TKEYRecord.java b/src/main/java/org/xbill/DNS/TKEYRecord.java
index 0664604..27b5bb1 100644
--- a/src/main/java/org/xbill/DNS/TKEYRecord.java
+++ b/src/main/java/org/xbill/DNS/TKEYRecord.java
@@ -13,8 +13,8 @@ import org.xbill.DNS.utils.base64;
  *
  * @see TSIG
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc2930">RFC 2930: Secret Key Establishment for DNS
- *     (TKEY RR)</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2930">RFC 2930: Secret Key Establishment
+ *     for DNS (TKEY RR)</a>
  */
 public class TKEYRecord extends Record {
   private Name alg;
diff --git a/src/main/java/org/xbill/DNS/TLSARecord.java b/src/main/java/org/xbill/DNS/TLSARecord.java
index 1499180..46714fc 100644
--- a/src/main/java/org/xbill/DNS/TLSARecord.java
+++ b/src/main/java/org/xbill/DNS/TLSARecord.java
@@ -10,8 +10,8 @@ import org.xbill.DNS.utils.base16;
  * Transport Layer Security Authentication
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc6698">RFC 6698: The DNS-Based Authentication of
- *     Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc6698">RFC 6698: The DNS-Based
+ *     Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA</a>
  */
 public class TLSARecord extends Record {
   public static class CertificateUsage {
@@ -26,10 +26,18 @@ public class TLSARecord extends Record {
   public static class Selector {
     private Selector() {}
 
-    /** Full certificate; the Certificate binary structure defined in [RFC5280] */
+    /**
+     * Full certificate; the Certificate binary structure.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>
+     */
     public static final int FULL_CERTIFICATE = 0;
 
-    /** SubjectPublicKeyInfo; DER-encoded binary structure defined in [RFC5280] */
+    /**
+     * SubjectPublicKeyInfo; DER-encoded binary structure.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>
+     */
     public static final int SUBJECT_PUBLIC_KEY_INFO = 1;
   }
 
@@ -39,10 +47,18 @@ public class TLSARecord extends Record {
     /** Exact match on selected content */
     public static final int EXACT = 0;
 
-    /** SHA-256 hash of selected content [RFC6234] */
+    /**
+     * SHA-256 hash of selected content.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc6234">RFC 6234</a>
+     */
     public static final int SHA256 = 1;
 
-    /** SHA-512 hash of selected content [RFC6234] */
+    /**
+     * SHA-512 hash of selected content.
+     *
+     * @see <a href="https://datatracker.ietf.org/doc/html/rfc6234">RFC 6234</a>
+     */
     public static final int SHA512 = 2;
   }
 
diff --git a/src/main/java/org/xbill/DNS/TSIG.java b/src/main/java/org/xbill/DNS/TSIG.java
index 29ecbea..ac62da9 100644
--- a/src/main/java/org/xbill/DNS/TSIG.java
+++ b/src/main/java/org/xbill/DNS/TSIG.java
@@ -665,7 +665,7 @@ public class TSIG {
     }
 
     // validate time after the signature, as per
-    // https://www.rfc-editor.org/rfc/rfc8945.html#section-5.4
+    // https://datatracker.ietf.org/doc/html/rfc8945#section-5.4
     int badtime = verifyTime(tsig);
     if (badtime != Rcode.NOERROR) {
       return badtime;
@@ -804,7 +804,7 @@ public class TSIG {
      * Creates an instance to sign multiple message for use in a stream.
      *
      * <p>This class creates a {@link TSIGRecord} on every message to conform with <a
-     * href="https://www.rfc-editor.org/rfc/rfc8945.html#section-5.3.1">RFC 8945, 5.3.1</a>.
+     * href="https://datatracker.ietf.org/doc/html/rfc8945#section-5.3.1">RFC 8945, 5.3.1</a>.
      *
      * @param key The TSIG key used to create the signature records.
      * @param queryTsig The initial TSIG records, e.g. from a query to a server.
diff --git a/src/main/java/org/xbill/DNS/TSIGRecord.java b/src/main/java/org/xbill/DNS/TSIGRecord.java
index 2296994..fd00e0b 100644
--- a/src/main/java/org/xbill/DNS/TSIGRecord.java
+++ b/src/main/java/org/xbill/DNS/TSIGRecord.java
@@ -15,7 +15,7 @@ import org.xbill.DNS.utils.base64;
  *
  * @see Resolver
  * @see TSIG
- * @see <a href="https://tools.ietf.org/html/rfc2845">RFC 2845: Secret Key Transaction
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2845">RFC 2845: Secret Key Transaction
  *     Authentication for DNS (TSIG)</a>
  * @author Brian Wellington
  */
diff --git a/src/main/java/org/xbill/DNS/TXTRecord.java b/src/main/java/org/xbill/DNS/TXTRecord.java
index 6f338e4..221555f 100644
--- a/src/main/java/org/xbill/DNS/TXTRecord.java
+++ b/src/main/java/org/xbill/DNS/TXTRecord.java
@@ -9,8 +9,8 @@ import java.util.List;
  * Text - stores text strings
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class TXTRecord extends TXTBase {
   TXTRecord() {}
diff --git a/src/main/java/org/xbill/DNS/TcpKeepaliveOption.java b/src/main/java/org/xbill/DNS/TcpKeepaliveOption.java
index ea42698..f9e279f 100644
--- a/src/main/java/org/xbill/DNS/TcpKeepaliveOption.java
+++ b/src/main/java/org/xbill/DNS/TcpKeepaliveOption.java
@@ -7,7 +7,7 @@ import java.util.Optional;
 import java.util.OptionalInt;
 
 /**
- * TCP Keepalive EDNS0 Option, as defined in https://tools.ietf.org/html/rfc7828
+ * TCP Keepalive EDNS0 Option, as defined in https://datatracker.ietf.org/doc/html/rfc7828
  *
  * @see OPTRecord
  * @author Klaus Malorny
diff --git a/src/main/java/org/xbill/DNS/Type.java b/src/main/java/org/xbill/DNS/Type.java
index b87c38d..ebf2e41 100644
--- a/src/main/java/org/xbill/DNS/Type.java
+++ b/src/main/java/org/xbill/DNS/Type.java
@@ -104,18 +104,18 @@ public final class Type {
   public static final int NXT = 30;
 
   /**
-   * Endpoint identifier
+   * DNS Resource Records for Nimrod Routing Architecture, Endpoint identifier.
    *
-   * @see <a href="https://tools.ietf.org/html/draft-ietf-nimrod-dns-00">DNS Resource Records for
-   *     Nimrod Routing Architecture</a>
+   * @see <a
+   *     href="https://datatracker.ietf.org/doc/draft-ietf-nimrod-dns/">draft-ietf-nimrod-dns</a>
    */
   public static final int EID = 31;
 
   /**
-   * Nimrod locator
+   * DNS Resource Records for Nimrod Routing Architecture, Nimrod locator.
    *
-   * @see <a href="https://tools.ietf.org/html/draft-ietf-nimrod-dns-00">DNS Resource Records for
-   *     Nimrod Routing Architecture</a>
+   * @see <a
+   *     href="https://datatracker.ietf.org/doc/draft-ietf-nimrod-dns/">draft-ietf-nimrod-dns</a>
    */
   public static final int NIMLOC = 32;
 
@@ -188,7 +188,8 @@ public final class Type {
   /**
    * Zone Status (ZS).
    *
-   * @see <a href="https://tools.ietf.org/html/draft-reid-dnsext-zs-01">draft-reid-dnsext-zs-01</a>
+   * @see <a
+   *     href="https://datatracker.ietf.org/doc/html/draft-reid-dnsext-zs-01">draft-reid-dnsext-zs-01</a>
    */
   public static final int NINFO = 56;
 
@@ -196,7 +197,7 @@ public final class Type {
    * RKEY DNS Resource Record, used for encryption of NAPTR records.
    *
    * @see <a
-   *     href="https://tools.ietf.org/html/draft-reid-dnsext-rkey-00">draft-reid-dnsext-rkey-00</a>
+   *     href="https://datatracker.ietf.org/doc/html/draft-reid-dnsext-zs-01">draft-reid-dnsext-rkey-01</a>
    */
   public static final int RKEY = 57;
 
@@ -204,7 +205,7 @@ public final class Type {
    * DNSSEC Trust Anchor History Service.
    *
    * @see <a
-   *     href="https://tools.ietf.org/html/draft-wijngaards-dnsop-trust-history-02">draft-wijngaards-dnsop-trust-history-02</a>
+   *     href="https://datatracker.ietf.org/doc/html/draft-wijngaards-dnsop-trust-history-02">draft-wijngaards-dnsop-trust-history-02</a>
    */
   public static final int TALINK = 58;
 
@@ -226,16 +227,14 @@ public final class Type {
   /**
    * Service Location and Parameter Binding
    *
-   * @see <a
-   *     href="https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06">draft-ietf-dnsop-svcb-https</a>
+   * @see <a href="https://datatracker.ietf.org/doc/html/rfc9460">RFC 9460</a>
    */
   public static final int SVCB = 64;
 
   /**
    * HTTPS Service Location and Parameter Binding
    *
-   * @see <a
-   *     href="https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-06">draft-ietf-dnsop-svcb-https</a>
+   * @see <a href="https://datatracker.ietf.org/doc/html/rfc9460">RFC 9460</a>
    */
   public static final int HTTPS = 65;
 
diff --git a/src/main/java/org/xbill/DNS/URIRecord.java b/src/main/java/org/xbill/DNS/URIRecord.java
index c1035bb..f36e258 100644
--- a/src/main/java/org/xbill/DNS/URIRecord.java
+++ b/src/main/java/org/xbill/DNS/URIRecord.java
@@ -10,8 +10,8 @@ import java.io.IOException;
  * Uniform Resource Identifier (URI) DNS Resource Record
  *
  * @author Anthony Kirby
- * @see <a href="https://tools.ietf.org/html/rfc7553">RFC 7553: The Uniform Resource Identifier
- *     (URI) DNS Resource Record</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc7553">RFC 7553: The Uniform Resource
+ *     Identifier (URI) DNS Resource Record</a>
  */
 public class URIRecord extends Record {
   private int priority, weight;
diff --git a/src/main/java/org/xbill/DNS/WKSRecord.java b/src/main/java/org/xbill/DNS/WKSRecord.java
index dfac7d8..d726650 100644
--- a/src/main/java/org/xbill/DNS/WKSRecord.java
+++ b/src/main/java/org/xbill/DNS/WKSRecord.java
@@ -14,14 +14,14 @@ import java.util.List;
  * Well Known Services - Lists services offered by this host.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1035">RFC 1035: Domain Names - Implementation and
- *     Specification</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1035">RFC 1035: Domain Names -
+ *     Implementation and Specification</a>
  */
 public class WKSRecord extends Record {
   /**
    * IP protocol identifiers. This is basically copied out of RFC 1010.
    *
-   * @see <a href="https://tools.ietf.org/html/rfc1010">RFC 1010: Assigned Numbers</a>
+   * @see <a href="https://datatracker.ietf.org/doc/html/rfc1010">RFC 1010: Assigned Numbers</a>
    */
   public static class Protocol {
 
diff --git a/src/main/java/org/xbill/DNS/X25Record.java b/src/main/java/org/xbill/DNS/X25Record.java
index 80ec9c2..9b2ca5d 100644
--- a/src/main/java/org/xbill/DNS/X25Record.java
+++ b/src/main/java/org/xbill/DNS/X25Record.java
@@ -10,7 +10,7 @@ import java.io.IOException;
  * associated with a name.
  *
  * @author Brian Wellington
- * @see <a href="https://tools.ietf.org/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc1183">RFC 1183: New DNS RR Definitions</a>
  */
 public class X25Record extends Record {
   private byte[] address;
diff --git a/src/main/java/org/xbill/DNS/lookup/LookupSession.java b/src/main/java/org/xbill/DNS/lookup/LookupSession.java
index 2236b15..4abce77 100644
--- a/src/main/java/org/xbill/DNS/lookup/LookupSession.java
+++ b/src/main/java/org/xbill/DNS/lookup/LookupSession.java
@@ -482,7 +482,7 @@ public class LookupSession {
   private Message maybeAddToCache(Message message) {
     for (RRset set : message.getSectionRRsets(Section.ANSWER)) {
       if ((set.getType() == Type.CNAME || set.getType() == Type.DNAME) && set.size() != 1) {
-        throw new InvalidZoneDataException("Multiple CNAME RRs not allowed, see RFC1034 3.6.2");
+        throw new InvalidZoneDataException("Multiple CNAME RRs not allowed, see RFC 1034 3.6.2");
       }
     }
     Optional.ofNullable(caches.get(message.getQuestion().getDClass()))
diff --git a/src/main/java/org/xbill/DNS/lookup/NoSuchRRSetException.java b/src/main/java/org/xbill/DNS/lookup/NoSuchRRSetException.java
index 2002d88..cb7b6fc 100644
--- a/src/main/java/org/xbill/DNS/lookup/NoSuchRRSetException.java
+++ b/src/main/java/org/xbill/DNS/lookup/NoSuchRRSetException.java
@@ -5,7 +5,10 @@ import org.xbill.DNS.Name;
 
 /**
  * Thrown to indicate that records of the name and type queried does not exist, corresponding to the
- * NXRRSET return code as specified in RFC2136 Section 2.2.
+ * NXRRSET return code as specified in RFC 2136 Section 2.2.
+ *
+ * @since 3.4
+ * @see <a href="https://datatracker.ietf.org/doc/html/rfc2136#section-2">RFC 2136</a>
  */
 public class NoSuchRRSetException extends LookupFailedException {
   public NoSuchRRSetException(Name name, int type) {
diff --git a/src/test/java/org/xbill/DNS/dnssec/ResolveExample.java b/src/test/java/org/xbill/DNS/dnssec/ResolveExample.java
index bcc7f18..f578f0a 100644
--- a/src/test/java/org/xbill/DNS/dnssec/ResolveExample.java
+++ b/src/test/java/org/xbill/DNS/dnssec/ResolveExample.java
@@ -21,7 +21,7 @@ class ResolveExample {
   static String ROOT =
       ". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D";
 
-  static void main(String[] args) throws Exception {
+  public static void main(String[] args) throws Exception {
     // Send two sample queries using a standard DNSJAVA resolver
     SimpleResolver sr = new SimpleResolver("8.8.8.8");
     System.out.println("Standard resolver:");
@@ -30,7 +30,7 @@ class ResolveExample {
 
     // Send the same queries using the validating resolver with the
     // trust anchor of the root zone
-    // http://data.iana.org/root-anchors/root-anchors.xml
+    // https://data.iana.org/root-anchors/root-anchors.xml
     ValidatingResolver vr = new ValidatingResolver(sr);
     vr.loadTrustAnchors(new ByteArrayInputStream(ROOT.getBytes("ASCII")));
     vr.loadTrustAnchors(new ByteArrayInputStream(ROOT.getBytes(StandardCharsets.US_ASCII)));
-- 
2.33.0

