Okay, here is the detailed article on the role of TCP and UDP in the Domain Name System, aiming for approximately 5000 words.
The Unsung Duet: Unraveling the Critical Roles of TCP and UDP in the Domain Name System
The internet, as we experience it daily, is a seamless tapestry of interconnected services and information. We type www.example.com
into our browser, and moments later, the desired webpage appears. This seemingly simple act masks an intricate dance of protocols and systems working tirelessly behind the scenes. Central to this magic is the Domain Name System (DNS), the internet’s global phonebook, translating human-friendly domain names into the numerical IP addresses computers use to communicate. But DNS itself doesn’t operate in a vacuum; it relies on underlying transport protocols to ferry its requests and responses across the network. The two primary players in this crucial transport role are the User Datagram Protocol (UDP) and the Transmission Control Protocol (TCP).
Understanding why DNS utilizes both UDP and TCP, and the specific circumstances dictating the use of one over the other, is fundamental to grasping the resilience, efficiency, and scalability of the internet’s naming infrastructure. This isn’t an arbitrary choice; it’s a carefully considered design reflecting the diverse needs of DNS operations, balancing the need for speed and low overhead with the requirement for reliability and handling large data volumes.
This article delves deep into the symbiotic relationship between DNS and its transport layer partners, UDP and TCP. We will explore the fundamental characteristics of each protocol, dissect the historical context and design decisions that led to their adoption within DNS, examine the specific scenarios where each protocol shines, analyze the mechanisms for switching between them, and discuss the impact of modern extensions like EDNS0 and DNSSEC. Finally, we will touch upon performance, security implications, and the evolution of DNS transport. By the end, the reader will have a comprehensive understanding of this often-overlooked but vital aspect of internet infrastructure.
I. Foundational Concepts: DNS, UDP, and TCP
Before diving into their interplay, let’s establish a clear understanding of the three core components: DNS, UDP, and TCP.
A. The Domain Name System (DNS): The Internet’s Directory
At its core, DNS is a globally distributed, hierarchical database system. Its primary function is name resolution: converting domain names (like www.google.com
) into corresponding IP addresses (like 172.217.160.142
for IPv4 or 2607:f8b0:4004:809::200e
for IPv6). It also performs reverse lookups (IP address to domain name) and provides information about mail servers (MX records), name servers (NS records), text information (TXT records), and more.
Key characteristics of DNS include:
- Distributed Database: No single server holds all DNS information. Data is distributed across countless servers worldwide.
- Hierarchical Structure: The DNS namespace resembles an inverted tree, starting from the root (
.
), branching to Top-Level Domains (TLDs) like.com
,.org
,.net
, and country codes (.uk
,.de
), then to second-level domains (example
inexample.com
), and potentially further subdomains (www
inwww.example.com
). - Client-Server Model: DNS operates on a request-response basis. A client (usually a stub resolver on an end-user’s machine or a recursive resolver operated by an ISP or public provider) sends a query, and a DNS server responds with the requested information or directions to another server.
- Caching: To improve performance and reduce load on authoritative servers, DNS responses are cached at various levels (client OS, browser, recursive resolvers) for a specific duration defined by the Time-To-Live (TTL) value associated with the record.
B. User Datagram Protocol (UDP): Fast and Lightweight
Defined in RFC 768, UDP is one of the core members of the Internet Protocol suite. It operates at the Transport Layer (Layer 4) of the OSI model.
Key characteristics of UDP include:
- Connectionless: UDP does not establish a dedicated end-to-end connection before sending data. Each UDP packet, called a datagram, is sent independently.
- Unreliable: UDP provides “best-effort” delivery. It doesn’t guarantee that datagrams will arrive, arrive in order, or arrive without duplication. There’s no built-in mechanism for retransmission of lost packets at the UDP layer.
- Low Overhead: UDP headers are very small (8 bytes), adding minimal overhead to the data being transmitted. This makes it efficient for small, frequent messages.
- Fast: The lack of connection setup (like TCP’s three-way handshake) and acknowledgment/retransmission mechanisms means UDP communication typically has lower latency than TCP.
- Message-Oriented: UDP preserves message boundaries. Data sent as one UDP datagram by the application is received as one UDP datagram (if it arrives).
- Stateless: Servers handling UDP requests generally don’t need to maintain state information about ongoing communications for each client, making them potentially more scalable for handling numerous small, independent requests.
- Integrity Check: UDP includes an optional checksum to detect data corruption during transmission within the header and payload.
C. Transmission Control Protocol (TCP): Reliable and Robust
Defined primarily in RFC 793 (and numerous updates), TCP is the other major Transport Layer protocol in the IP suite. It’s designed to provide reliable, ordered delivery of a stream of bytes.
Key characteristics of TCP include:
- Connection-Oriented: TCP requires a connection to be established between the client and server before data transfer can begin. This involves a three-way handshake (SYN, SYN-ACK, ACK). Similarly, a connection termination process is followed.
- Reliable Delivery: TCP guarantees that data sent will be delivered to the receiver. It uses sequence numbers to track data segments and acknowledgments (ACKs) to confirm receipt. If a segment is lost, TCP retransmits it.
- Ordered Delivery: TCP ensures that data is delivered to the receiving application in the same order it was sent, even if network conditions cause segments to arrive out of order. It uses sequence numbers to reassemble the stream correctly.
- Flow Control: TCP uses a sliding window mechanism to prevent a fast sender from overwhelming a slow receiver. The receiver advertises its available buffer space (receive window).
- Congestion Control: TCP incorporates algorithms to detect network congestion and reduce the transmission rate accordingly, helping to prevent network collapse.
- Higher Overhead: TCP headers are larger (20 bytes minimum, plus options) than UDP headers. The connection setup, acknowledgments, retransmissions, and state maintenance add significant overhead compared to UDP.
- Stream-Oriented: TCP treats data as a continuous stream of bytes, not distinct messages. The application layer must handle message delineation if needed.
- Stateful: Both the client and server must maintain state information (sequence numbers, window sizes, connection status) for each active TCP connection.
With these fundamentals established, we can now explore how DNS leverages the contrasting strengths of UDP and TCP.
II. The Default Choice: UDP for Standard DNS Queries
The vast majority of DNS queries traversing the internet use UDP as their transport protocol, specifically targeting port 53 on the DNS server. This was a deliberate design choice made early in the development of DNS (RFC 1034 and RFC 1035, published in 1987). The rationale behind favoring UDP is compelling:
A. The Need for Speed and Efficiency:
DNS resolution is often a prerequisite for accessing almost any internet resource. Users expect web pages to load quickly, emails to send promptly, and applications to connect without delay. Every millisecond counts. Introducing significant latency into the name resolution process would negatively impact the perceived performance of the entire internet.
UDP’s connectionless nature is a major advantage here. A DNS client can simply format a query message, wrap it in a UDP datagram, and send it to the server’s IP address and port 53. It doesn’t need to perform the three-way handshake required by TCP. This saves round-trip times (RTTs), particularly crucial when a recursive resolver might need to query multiple authoritative servers sequentially (root -> TLD -> authoritative) to resolve a single name. The low overhead of the 8-byte UDP header also minimizes bandwidth consumption, which was a more significant concern in the early days of the internet but still relevant today, especially with the sheer volume of DNS traffic.
B. Simplicity of Request-Response:
Most standard DNS lookups (e.g., for A, AAAA, MX, CNAME records) involve a single, relatively small query packet from the client and a single, relatively small response packet from the server. This simple, transactional nature maps well to UDP’s datagram model. The client sends a question; the server sends an answer. If the query or response is lost (a rare event on most reliable networks, but possible), the client’s resolver library is typically responsible for handling it, usually by timing out and retransmitting the query, potentially to a different server if available. This application-level reliability mechanism was deemed sufficient for the common case, avoiding the complexity and overhead of TCP’s built-in reliability for every lookup.
C. Server Scalability:
DNS servers, especially recursive resolvers serving many users or authoritative servers for popular domains, handle an enormous volume of queries. UDP’s stateless nature (from the transport perspective) is beneficial. A server receiving a UDP query can process it and send a response without needing to maintain any connection state related to that specific transaction afterwards. This reduces memory and processing requirements on the server, allowing it to handle more concurrent requests efficiently compared to managing potentially thousands or millions of stateful TCP connections.
D. The Historical 512-Byte Limit:
A critical factor shaping UDP’s role in DNS was the original specification’s limitation on DNS message size over UDP. RFC 1035 stated: “Messages carried by UDP are restricted to 512 bytes (not counting the IP or UDP headers). Longer messages should be truncated and sent using TCP.”
This 512-byte limit was a practical compromise in 1987. It ensured that DNS messages would typically fit within the Minimum Transmission Unit (MTU) of common network links of the era, minimizing the risk of IP fragmentation. IP fragmentation can lead to increased overhead and potential packet loss, especially if fragments are lost, requiring reassembly failure. By keeping UDP DNS messages small, the designers aimed to maximize the chances of successful, efficient delivery using the lightweight UDP protocol.
This limit, however, became a significant constraint as DNS evolved.
III. When Reliability and Size Matter: TCP’s Role in DNS
While UDP handles the bulk of DNS traffic efficiently, there are specific scenarios where its limitations – unreliability and the historical size constraint – make it unsuitable. In these cases, DNS mandates or strongly prefers the use of TCP, also typically over port 53.
A. Zone Transfers (AXFR and IXFR): The Bulk Data Scenario
The most prominent and originally mandated use of TCP in DNS is for zone transfers. A zone file contains all the resource records for a particular domain (or a specific part of the DNS hierarchy managed by an authoritative server). Zone transfers are the mechanism by which DNS data is replicated from a primary (master) authoritative server to secondary (slave) authoritative servers. This replication ensures redundancy and load balancing for serving authoritative answers for a domain.
There are two main types of zone transfers:
- Full Zone Transfer (AXFR): Transfers the entire contents of a zone file.
- Incremental Zone Transfer (IXFR): Transfers only the changes made to a zone since the last successful transfer, using zone serial numbers (defined in the SOA record) to track versions.
Zone transfers, especially AXFR for large zones, can involve significant amounts of data, far exceeding the 512-byte UDP limit (and often even modern EDNS0-extended UDP limits). Transferring potentially megabytes of critical configuration data requires absolute reliability.
- Reliability: Losing even a single record during a zone transfer could lead to inconsistencies between the master and slave servers, potentially causing resolution failures or serving stale data. TCP’s guaranteed, ordered delivery ensures the entire zone file arrives intact and correctly sequenced.
- Size: TCP’s stream-oriented nature is well-suited for transferring large amounts of data without arbitrary size limitations imposed by the transport protocol itself. It handles segmentation, reassembly, and flow control automatically.
Therefore, RFC 1035 explicitly required TCP for AXFR requests, and subsequent standards (RFC 1995 for IXFR) maintained this requirement. Attempting a zone transfer over UDP is generally not supported or feasible.
B. Handling Truncated Responses: The Switch from UDP
The 512-byte UDP message size limit created a direct mechanism for invoking TCP. When a DNS server prepares a response to a UDP query, but the necessary data (including all required resource records, authority records, and additional information) exceeds the 512-byte payload limit, it cannot simply send the oversized UDP datagram.
Instead, the server performs the following steps:
- Truncates the Response: The server creates a partial response that fits within the 512-byte limit. It includes as many records as possible, usually starting with the answer section.
- Sets the Truncation (TC) Bit: Crucially, the server sets the TC (Truncation) flag in the header of the DNS response packet.
- Sends the Truncated UDP Response: The server sends this partial, TC-flagged response back to the client over UDP.
When the DNS client (resolver) receives a UDP response with the TC bit set, it understands that the complete answer was too large for UDP under the original rules. The client’s expected behavior is then:
- Discard the Truncated Response: The partial information received via UDP is usually discarded.
- Retry the Query over TCP: The client opens a TCP connection to the same DNS server (on port 53) and re-sends the exact same query.
The server, upon receiving the query via TCP, knows it can send a response of virtually any size. It generates the full response and sends it back over the established TCP connection. The client receives the complete answer, and the TCP connection is typically closed shortly after.
This UDP-to-TCP fallback mechanism ensures that even large responses can be delivered reliably, albeit with the added latency and overhead of establishing and using a TCP connection.
C. The Impact of EDNS0 (Extension Mechanisms for DNS)
The 512-byte UDP limit became increasingly problematic as the internet grew and DNS functionalities expanded. New record types, IPv6 addresses (AAAA records, which are larger than IPv4 A records), and especially the introduction of DNSSEC (DNS Security Extensions) led to response sizes frequently exceeding this limit. Relying on TCP fallback for common queries due to size constraints would introduce significant performance penalties across the internet.
To address this, EDNS0 (Extension Mechanisms for DNS) was introduced (RFC 2671, later updated by RFC 6891). EDNS0 allows clients and servers to signal their capabilities beyond the original DNS specifications, primarily using a pseudo-resource record called OPT.
Key features of EDNS0 relevant to transport include:
- Advertising Larger UDP Payload Size: The most crucial feature is that a client can use an OPT record in its query to advertise the maximum UDP payload size it can handle (beyond 512 bytes). A typical value might be 4096 bytes, but it can vary.
- Server Response: A server supporting EDNS0 includes an OPT record in its response, confirming the EDNS0 version and potentially indicating its own maximum UDP payload size or other options. If the full response fits within the client’s advertised UDP buffer size (and also within the server’s own limits), the server can send the complete response over UDP, even if it exceeds 512 bytes.
- No Truncation (Unless Necessary): Truncation (setting the TC bit) only occurs if the response size exceeds the UDP payload size negotiated via EDNS0 (or 512 bytes if EDNS0 is not used or supported by either party).
EDNS0 significantly reduces the frequency of TCP fallback solely due to message size for standard queries. It allows larger responses, common with DNSSEC, to be efficiently delivered over UDP.
However, EDNS0 does not eliminate the need for TCP:
- If a response exceeds even the larger UDP size advertised via EDNS0, the server will still set the TC bit, and the client must retry over TCP.
- Zone transfers (AXFR/IXFR) still require TCP due to their potentially massive size and the paramount need for reliability.
- If firewalls or middleboxes block EDNS0 queries or large UDP packets, communication might fail, potentially forcing a fallback to standard DNS (512-byte limit) and thus increasing the likelihood of needing TCP.
D. DNSSEC (DNS Security Extensions)
DNSSEC aims to mitigate DNS spoofing and cache poisoning attacks by providing data origin authentication and data integrity verification for DNS responses. It achieves this by adding cryptographic signatures to DNS records.
Relevant record types introduced by DNSSEC include:
- RRSIG (Resource Record Signature): Contains the cryptographic signature for a specific record set (e.g., all A records for a name).
- DNSKEY (DNS Public Key): Contains the public keys used to verify the RRSIG records.
- DS (Delegation Signer): Used to create a chain of trust between parent and child zones.
- NSEC/NSEC3 (Next Secure): Used to authenticatedly deny the existence of a domain name or record type.
The inclusion of these records, especially RRSIG and DNSKEY, significantly increases the size of DNS responses. A response for a DNSSEC-signed domain might include the requested record (e.g., A record), its corresponding RRSIG record, and potentially several DNSKEY records needed for validation.
EDNS0 is practically essential for the widespread deployment of DNSSEC, as it allows these larger responses to be transmitted over UDP most of the time. Without EDNS0, almost every DNSSEC query would likely exceed the 512-byte limit and require a TCP fallback, severely impacting performance.
Even with EDNS0, some complex DNSSEC responses, particularly those involving many keys or long chains of CNAMEs with signatures, can still exceed the negotiated UDP buffer size (e.g., 4096 bytes). In these cases, the TC bit is set, and the client must retry over TCP to get the complete, verifiable response. Therefore, robust DNSSEC deployment absolutely relies on both EDNS0-capable UDP and functional TCP transport.
IV. The Switching Mechanism: How DNS Chooses Its Path
The process of choosing between UDP and TCP in DNS isn’t arbitrary; it follows specific rules and signaling mechanisms:
- Client Initiates with UDP (Usually): For standard queries (A, AAAA, MX, NS, PTR, etc.), a DNS client (resolver) almost always initiates the query using UDP towards port 53 of the target server. It may include an EDNS0 OPT record advertising its supported UDP payload size.
- Server Processes and Responds: The server receives the UDP query.
- It formulates the response.
- It checks the size of the response against the relevant UDP limit:
- If EDNS0 was used in the query and supported by the server: the limit is the smaller of the client’s advertised size and the server’s own configured maximum UDP response size.
- If EDNS0 was not used or not supported: the limit is 512 bytes.
- If the response fits within the limit: The server sends the complete response back over UDP (potentially including an EDNS0 OPT record if applicable).
- If the response exceeds the limit: The server creates a truncated response (fitting within the limit), sets the TC bit in the DNS header, and sends this partial response back over UDP.
- Client Receives Response:
- If TC bit is clear: The client accepts the response as complete.
- If TC bit is set: The client recognizes the response is incomplete. It discards the UDP response and initiates a new connection.
- Client Retries over TCP: The client establishes a TCP connection to the same server on port 53. Once the connection is established (three-way handshake), it sends the identical DNS query over TCP. Note: When sending DNS messages over TCP, a 2-byte length field is prepended to the DNS message itself to indicate its size, as TCP is stream-oriented and doesn’t preserve message boundaries inherently.
- Server Responds over TCP: The server receives the query via TCP. It formulates the full response (which can now be larger than any UDP limit) and sends it back over the established TCP connection, prefixed with the 2-byte length field.
- Client Receives TCP Response: The client reads the 2-byte length field, then reads that many bytes to get the complete DNS message. It processes the response.
- Connection Teardown: The TCP connection is typically closed by either the client or the server after the response is successfully transferred.
Explicit TCP Initiation:
There are scenarios where a client might initiate directly with TCP:
- Zone Transfers (AXFR/IXFR): As mandated, clients requesting zone transfers must initiate the request using TCP.
- Known Large Responses (Less Common): While not standard behavior, a specialized client application that knows a particular query will always result in a huge response could theoretically decide to use TCP directly, though this bypasses the normal discovery mechanism and is generally discouraged for standard resolution.
- Network Policies/Troubleshooting: In some restricted network environments or during specific troubleshooting, an administrator might force DNS queries over TCP.
V. Performance and Reliability Trade-offs
The dual-protocol nature of DNS represents a classic engineering trade-off:
UDP Advantages (Primary Mode):
- Low Latency: No connection setup time, ideal for quick lookups.
- Low Overhead: Smaller headers, less bandwidth usage per query.
- Server Scalability: Statelessness reduces server resource consumption per query.
UDP Disadvantages:
- Unreliability: Packet loss requires application-level timeouts and retries.
- Size Limitation: Even with EDNS0, there’s a practical limit to UDP datagram size, necessitating a fallback mechanism.
- Vulnerability: Easier to spoof source IP addresses; susceptible to amplification attacks (though mitigations exist).
TCP Advantages (Fallback/Specific Uses):
- Reliability: Guaranteed delivery and order ensures complete data transfer (critical for zone transfers and large responses).
- Arbitrary Size: Handles large responses and zone transfers without transport-imposed size limits.
- Robustness: Built-in flow control and congestion control adapt to network conditions.
TCP Disadvantages:
- Higher Latency: Connection setup (three-way handshake) adds at least one RTT delay.
- Higher Overhead: Larger headers, ACK packets, connection state maintenance consume more bandwidth and server resources (CPU, memory).
- Statefulness: Servers must maintain state for each active TCP connection, potentially limiting scalability compared to UDP handling if TCP usage becomes excessive.
- Firewall Issues: TCP port 53 is sometimes blocked by overly restrictive firewalls expecting all DNS traffic to be UDP.
The Balance:
DNS achieves a remarkably effective balance by using UDP for the vast majority (>99%) of queries where speed and efficiency are paramount, while seamlessly falling back to the robustness and reliability of TCP only when necessary (large responses, zone transfers). EDNS0 further optimizes this balance by pushing the boundary for UDP usage, making TCP fallback less frequent than it would otherwise be in the modern internet with larger response sizes.
VI. Security Considerations
The choice of transport protocol also has security implications:
- UDP Spoofing and Amplification: Because UDP is connectionless, it’s easier for an attacker to spoof the source IP address in a DNS query. This is the basis for DNS amplification/reflection attacks, where an attacker sends small queries (with a spoofed source IP of the victim) to open resolvers, eliciting large responses directed at the victim, overwhelming their bandwidth. While EDNS0 can increase the potential amplification factor, mitigations like Response Rate Limiting (RRL) and proper server configuration (disabling open recursion) are crucial.
- TCP and Connection State: Establishing a TCP connection requires a handshake that validates reachability (though not identity) of the source IP address to some extent, making simple source IP spoofing harder for initiating TCP connections. However, TCP connections consume server resources (state), making servers potentially vulnerable to resource exhaustion attacks (e.g., SYN floods targeting TCP port 53) if not properly protected.
- Zone Transfer Security: Zone transfers contain potentially sensitive information about a domain’s infrastructure. Transmitting them over TCP doesn’t inherently secure the content. Access Control Lists (ACLs) restricting which IP addresses can request zone transfers and using Transaction Signatures (TSIG – RFC 2845) or DNS over TLS/HTTPS for secure transport are essential to protect zone data during transfer. TSIG can authenticate and ensure the integrity of DNS messages over both UDP and TCP, but it’s particularly vital for protecting zone transfers over TCP.
- Firewall Traversal: As mentioned, firewalls must allow traffic on both UDP port 53 and TCP port 53 for DNS to function correctly, especially with EDNS0 and DNSSEC deployed. Blocking TCP port 53 can break resolution for domains with large records or prevent zone transfers. Similarly, blocking UDP packets larger than 512 bytes or blocking EDNS0 can cripple modern DNS performance and functionality.
VII. Evolution and Future Directions (DoT, DoH, DoQ)
While the UDP/TCP dynamic remains central to traditional DNS (often called Do53), the landscape is evolving with newer protocols designed primarily to enhance privacy and security by encrypting DNS traffic:
- DNS over TLS (DoT – RFC 7858): Encapsulates DNS queries and responses within a Transport Layer Security (TLS) tunnel. DoT typically runs over TCP port 853. Since TLS itself requires a reliable transport, DoT inherently relies on TCP.
- DNS over HTTPS (DoH – RFC 8484): Encapsulates DNS queries and responses within HTTPS messages. DoH typically runs over TCP port 443 (the standard HTTPS port). As HTTPS predominantly uses TCP (specifically TLS over TCP), DoH also largely relies on TCP. Some experimental work explores DoH over QUIC (see below).
- DNS over QUIC (DoQ – RFC 9250): Uses the QUIC transport protocol, which itself runs over UDP but provides features similar to TCP (reliability, ordering, congestion control) plus benefits like reduced connection establishment latency and better handling of packet loss. DoQ is designed to offer encrypted transport with potentially lower latency than DoT/DoH in some scenarios.
These newer protocols shift the transport mechanism away from direct UDP/TCP on port 53 towards encrypted sessions typically running over TCP (DoT, DoH) or QUIC (DoQ). However, understanding the foundational UDP/TCP interplay in Do53 remains crucial, as it’s still the bedrock protocol used for resolver-to-authoritative communication and within many internal networks, even if end-user-to-resolver traffic increasingly uses encrypted methods. Furthermore, the bootstrapping process to find the IP addresses of DoT/DoH servers often still relies on traditional DNS (Do53).
VIII. Conclusion: An Elegant and Enduring Design
The Domain Name System’s use of both UDP and TCP is not an accident or a historical quirk; it is a testament to thoughtful engineering that balances competing requirements. UDP provides the speed and low overhead necessary for the billions of routine DNS lookups happening every second, making the internet feel responsive. Its inherent simplicity and statelessness allow DNS servers to scale remarkably well.
Simultaneously, TCP provides the essential safety net of reliability and the capacity to handle large data volumes. It ensures that critical operations like zone transfers occur without data corruption and guarantees that even the largest, most complex DNS responses (often necessitated by modern extensions like DNSSEC) can be delivered completely when UDP’s limits are reached. The TC bit mechanism provides an elegant, standardized way to signal the need to switch from the fast lane (UDP) to the reliable lane (TCP).
The introduction of EDNS0 modernized this balance, allowing UDP to carry much larger payloads and significantly reducing the need for TCP fallback in many common scenarios, thereby preserving performance in the face of increasing response sizes. Yet, TCP’s role remains indispensable.
For network administrators, developers, and anyone seeking a deeper understanding of internet infrastructure, grasping the distinct and complementary roles of UDP and TCP within DNS is vital. It informs firewall configuration (allowing both UDP/53 and TCP/53), troubleshooting resolution issues (differentiating between UDP timeouts and TCP connection problems), understanding performance characteristics, and appreciating the security considerations associated with each transport.
The UDP/TCP duet in DNS is a foundational element of the internet’s architecture – an unsung but critical partnership that has enabled the Domain Name System to scale and adapt for decades, underpinning the seamless connectivity we often take for granted. It remains a cornerstone of internet communication, even as newer encrypted protocols build upon its legacy.