Applied stage summary
Foundations gave you the vocabulary of the request path and the order the steps happen in. The Applied stage takes each protocol standing on that path and asks the harder question: how does it behave when the link is congested, when a packet is lost, when a firewall is in the way, when the address family runs out, and when somebody is lying to it. Ten modules work along the path in order, from the byte stream that carries most of the web, through the name lookup that starts every connection, out to the inter-domain routing that decides whose network the packets cross.
One argument runs through the stage. Every protocol on the path solves a specific problem by holding state somewhere, and almost every networking misconception comes from crediting a protocol with a promise it never made. UDP was never faster, it just made you wait for less. NAT was never a firewall, it just cannot match return traffic it has no record of. HTTPS was never a judgement about a site, it just proves control of a name. Encrypted DNS was never anonymity, it just moved the log. Learn what each protocol actually contracts for and the folklore stops being persuasive.
The sections follow the stage's teaching order, so you can read straight through to rebuild the stage in your head, or jump to the protocol you need. Each section links back to its module for the full treatment, the worked evidence and the standards text behind the claim.
What you carry out of this stage
- Read a TCP trace and say whether the sender was held back by the advertised receive window, by its own congestion window, or by a retransmission timeout
- Contrast loss-based CUBIC with model-based BBR, explain bufferbloat, and say why buying bandwidth does not empty a full buffer
- Choose a transport from a stated requirement and explain what QUIC redesigned, instead of repeating that UDP is faster
- Trace a DNS resolution end to end, pick between DoT, DoH and DoQ against a real firewall constraint, and state exactly what encrypted DNS still leaks
- Classify a BGP announcement as Valid, Invalid or NotFound and say what a validating router does with each
- Predict which return packet a NAT admits, and describe how an IPv6 network reaches the same default-deny position without translation
- Plan an IPv6-mostly segment, naming what DHCPv4 option 108, NAT64 with DNS64, and 464XLAT each rescue
- State what TLS promises and what it does not, and work out when the next certificate renewal deadline lands under the published validity schedule
- Run the diagnostic loop on an unfamiliar fault: state the symptom precisely, isolate by layer, name the cheapest next test, and separate the finding from the fault in writing
Four stages carry a learner from vocabulary to frontier judgement
Foundations, Applied and Practice run along the top row and Frontiers returns to the exam terminus, and each connector names what the stage before it hands on, so a stage taken out of order arrives without the language the next one assumes.
The course is one request path learned four times over, each pass deeper than the last, then examined: vocabulary, protocol behaviour, operational judgement, frontier readiness, two papers. Source: blueprint sections 1 and 4.
TCP builds reliability out of inferences, and two separate windows decide the sending rate
TCP has no view of the network. It opens with a three-way handshake to agree starting sequence numbers, then numbers every byte and infers from the acknowledgements coming back what the far end received. Loss is never reported to it; loss is deduced. Duplicate acknowledgements say a later segment arrived while an earlier one did not, which is a fast and specific signal. A retransmission timeout says nothing came back at all, which is slower and much less specific. Reading which of the two a sender reacted to is the first piece of evidence any transport diagnosis needs, because the two describe very different paths.
Two windows limit how much data is in flight, and they belong to different parties. The receive window is the receiver's own statement of what it can absorb, advertised in every acknowledgement, and it shrinks to zero when the receiving application stops keeping up. Wireshark labels those moments TCP Window Full and TCP ZeroWindow, and they explain the connection that crawls on a link with no loss at all. The congestion window is the sender's private estimate of what the path between them can carry, built by probing because no switch or queue on the way advertises its limit. The effective sending rate is the smaller of the two, which is why the sentence bandwidth is fine settles nothing.
RFC 9293 describes what TCP provides in one line: a reliable, in-order, byte-stream service. Each word is a boundary. Reliable means lost segments are retransmitted, not that delivery is guaranteed under any condition, because a path that fails entirely ends with the connection closing and the application seeing an error. In-order means segments are handed up in sequence, which is also why one lost segment stalls everything queued behind it. Byte-stream means TCP does not preserve message boundaries at all, so framing is the application's job. TCP can confirm bytes reached the receiving kernel; it cannot confirm anybody processed them.
TCP reliability is sequence, acknowledgement, and repair
The same sequence and acknowledgement counters that open the TCP connection also number the data, so the lost DATA 2 segment announces itself only as a missing acknowledgement and the sender waits out the retransmission timer before sending those bytes again.
Every TCP segment carries a sequence number and an acknowledgement number. The same mechanism that opens the connection also detects loss and triggers retransmission.
Congestion control is distributed cooperation, so loss is a signal before it is a fault
The network gives senders no explicit capacity signal, so every congestion control algorithm is a way of guessing from indirect evidence. That framing matters more than any single algorithm: congestion control is millions of independent senders cooperating without negotiating, and the shape of the guess decides how the internet shares a bottleneck. CUBIC, standardised in RFC 9438 in August 2023 and the default in both Linux and Windows, still infers congestion from loss, but grows its window in a shape designed for the long, fast paths the classical Reno-era algorithms handled badly.
BBR takes the other route. Rather than waiting for loss, it estimates the bottleneck bandwidth and the round-trip time of the path and paces against that model, which keeps queues shorter on paths where loss is a poor proxy for congestion. Version 3 is an Internet-Draft, draft-ietf-ccwg-bbr, and calling it a published standard is a citation error the stage keeps refusing. That the field needed RFC 9743 in March 2025 to set out what any new congestion control algorithm must demonstrate is itself evidence that this is live engineering rather than settled history.
Bufferbloat is where the theory meets a user complaint. Deep buffers in home routers and access equipment absorb bursts instead of dropping them, which converts congestion into latency and hides the signal the sender needed. L4S, specified across RFC 9330, RFC 9331 and RFC 9332 in January 2023, marks packets with ECN before queues build so senders slow down while latency stays low, loss stays low and throughput still scales. It ships in DOCSIS low-latency modes and has been interoperability-tested by Comcast, Apple, Google and NVIDIA. The operational lesson is blunt: a latency problem caused by a full buffer does not improve when you buy more bandwidth.
CUBIC reacts to loss while BBR models the path
The two lanes react to different signals: CUBIC's window collapses at every marked loss event while BBR's rate holds against its own bandwidth estimate and dips only when it chooses to probe, and only the left one is a published RFC.
CUBIC (RFC 9438, August 2023) is the loss-based default in Linux and Windows; BBRv3 (draft-ietf-ccwg-bbr, still an Internet-Draft) paces to a measured bandwidth and round-trip model instead.
UDP is not faster than TCP, and QUIC is the proof that this was never the contest
Both transports put bits on the wire at the same rate, because the link, the queues along the path and the distance decide that, and an eight-byte header does not travel faster than a twenty-byte one. What differs is what each makes you wait for. TCP asks for a handshake before the first byte of data, holds itself back when it detects loss, and delivers one ordered byte stream, so one lost segment stalls everything behind it. UDP skips all three, which is why a DNS query feels instant and why voice and video reach for it: late data is worse than missing data when the deadline has already passed.
QUIC, specified in RFC 9000, keeps the guarantees and removes the waiting. It folds the transport and TLS handshakes into a single exchange, carries independent streams that recover separately so a loss on one does not block the others, and identifies a connection by an identifier rather than by the four-tuple, so a session survives a phone moving from Wi-Fi to cellular. Version 2, RFC 9369, exists mainly to keep middleboxes from ossifying around one wire image. HTTP/3, RFC 9114, is the application layer built on top of it.
The 2026 picture needs a dated, method-qualified number rather than a headline. Measured on 13 July 2026, QUIC carried roughly 21 to 35 percent of traffic depending on the window and method used by Cloudflare Radar, while about 39 percent of websites advertised HTTP/3 support according to W3Techs. Two different questions, two different numbers, both worth quoting with their source. MASQUE has also standardised proxying inside the protocol, with CONNECT-UDP in RFC 9298 and CONNECT-IP in RFC 9484 underpinning products such as iCloud Private Relay. Multipath QUIC remains an Internet-Draft.
Choose the delivery contract, not the protocol reputation
TCP, UDP and QUIC each pair what the transport provides with what the application still owns: UDP hands back the connection state, reliability, ordering and congestion control that TCP provides, so the choice is only where that work lives, never whether it is done.
Choose a transport by what you can afford to own. UDP gives the application everything; TCP gives a reliable byte stream; QUIC gives independent reliable streams plus connection migration.
Encrypted DNS moved the trust question rather than removing it
Resolution is a hierarchy with three roles: the stub resolver in the operating system asks a recursive resolver, and the recursive resolver walks the authoritative servers from the root down until it holds an answer. Caching sits over the whole thing with time-to-live values attached, which is the real reason a DNS change appears to work for some users and not others for hours afterwards. Nothing was rejected; different recursive resolvers simply hold copies with different remaining lifetimes. RFC 9499, published as BCP 219 in March 2024, is the canonical vocabulary for all of it.
Three standards now carry those queries over an encrypted channel, and the difference between them is which existing traffic they resemble. DNS over TLS, RFC 7858, uses a dedicated TCP port 853, so a network can see the category and permit or block it without reading the names. DNS over QUIC, RFC 9250, keeps that dedicated-port honesty on UDP 853 while taking QUIC's faster setup and freedom from head-of-line blocking. DNS over HTTPS, RFC 8484, shares port 443 with the rest of the web and is correspondingly hard to single out. Discovery of Designated Resolvers, RFC 9462, lets a client upgrade automatically without anybody changing a setting.
In practice the firewall picks the transport, not the design document: sites that permit outbound TCP 443 and little else block DoQ and DoT by default, and DoH survives because blocking it means blocking the web. What none of them deliver is anonymity. The resolver now holds an attributable log of every name asked for, the destination IP address of the connection that follows is in the clear, and without Encrypted Client Hello the Server Name Indication field names the site in plain text during the TLS handshake. RFC 9849 closes that gap only where client, DNS records and server deployment all support it, and only down to the fronting deployment rather than the individual tenant.
A cold DNS lookup walks authority, then caches the result
Root and TLD only refer and just the authority answers, making the recursive resolver pay for the whole walk once and then serve the same name from its own cache until the three hundred second TTL runs out.
A cold lookup walks the DNS hierarchy. Each tier refers the resolver to the next; only the authority answers; the recursive resolver caches what it learned.
Routing builds the table, forwarding does the lookup, and route origin validation is a measurable partial fix
The two words name two different planes. The control plane runs the routing protocols, exchanges reachability with neighbours, applies policy and produces a forwarding table. The data plane takes each arriving packet and does one thing with it: a longest prefix match against that table, then out of the matching interface. A packet for 10.0.0.5 leaves by the interface for 10.0.0.0/24 rather than 10.0.0.0/16 because the more specific entry wins, and no fresh path calculation happens per packet. Traceroute reads off this machinery, which is why it is evidence about one direction at one moment and not proof of the return path.
BGP-4, RFC 4271, has no way to decide whether an announcement is truthful. A router checks that the message is well formed and that policy permits the neighbour, then believes what the neighbour said. That is the design, not a defect nobody noticed. Route Origin Validation, RFC 6811, adds the missing check: the address holder publishes a Route Origin Authorisation naming the prefix, the maximum length permitted and the autonomous system authorised to originate it, and routers compare announcements against the validated set. The comparison yields Valid, Invalid or NotFound, and RFC 6811 deliberately leaves the action to local policy.
The settled operational norm is to drop Invalid, accept Valid and accept NotFound, because rejecting NotFound would disconnect every network that has not signed its space yet. The numbers turn this into engineering rather than an anecdote about a bad day: reading the NIST RPKI Monitor, ROAs now cover more than half the IPv4 routes in the global table from a published set of roughly 480,000 ROAs, while only about 12 percent of stub autonomous systems are fully protected. The limit is worth stating too. Validation checks the origin of a route, not the AS path attached to it, so a forged path with a correct origin still passes.
Routing decides paths; forwarding moves packets
The planes run on different clocks, minutes on the left and microseconds on the right, and only the compile arrow joins them, so a route can already be correct in the RIB while packets keep following a FIB entry that has not been pushed yet.
Routing builds knowledge; forwarding spends it. A router can hold a route and still drop a packet because the two planes answer different questions on different clocks.
NAT is address sharing, and the protection people credit it with is a side effect of keeping state
A NAT device rewrites addresses, and in the port-translating form almost everyone runs it rewrites ports as well, so many inside hosts share one outside address. The record of each rewrite is the state table, and it is the only reason return traffic can find its way home: an arriving packet is matched against an existing entry or it is dropped for want of one. Entries expire when idle, and the expiry timers are why an SSH session left alone over lunch is dead when you return, while the same session at home survives. Keepalives shorter than the timeout are the fix, not a longer wait.
That drop-unsolicited behaviour is what gets mistaken for security. RFC 4787 is the specification for how NAT must behave, covering mapping, filtering and hairpinning, and it is a behavioural document rather than a protective one; its own text is clear that its mapping choices do not determine the security properties of the device. NAT offers no authentication, no access-control policy you can express or audit, and no view of what a permitted connection carries once it is open. A network that names NAT as its security boundary has a boundary it cannot describe.
The IPv6 comparison settles the argument cleanly. An IPv6 network reaches the same default-deny position with a stateful firewall and no translation at all, on addresses that stay end to end from source to destination. The state that admits return traffic is still there; the address rewriting is gone. That separation is worth holding, because it shows the two functions were never the same thing, and it explains why removing NAT does not remove protection when the firewall is doing the job it was always doing.
PAT works because the NAT owns a state table
Laptop and Phone both chose source port 53144, so the only thing telling their return traffic apart is the public port the gateway assigned, 62000 against 62001, and a reply can be delivered only while that row is still in the table.
PAT works because the gateway remembers which translated port belongs to which internal host:port. Without that state table, return traffic has nowhere to go.
IPv6-mostly is the ratchet that dual-stack never had
Dual-stack was a truce rather than a transition. Running two internets side by side indefinitely doubles the addressing, the firewall rules, the monitoring and the troubleshooting, and gives nobody a reason to stop. An IPv6-mostly segment changes the incentive by putting three kinds of host on one network: IPv6-only hosts that have let go of IPv4, dual-stack hosts that have not, and IPv4-only devices that never will. DHCPv4 option 108, RFC 8925, is the polite question that makes it work: a capable host asks whether it may drop IPv4 on this network, and the network answers. The operational guidance, draft-ietf-v6ops-6mops, is a draft and is cited as one.
Two translation mechanisms cover what the IPv6-only hosts still need. NAT64, RFC 6146, translates between the address families in the network, and DNS64, RFC 6147, synthesises the IPv6 answers that steer traffic into it, so an IPv6-only client reaches an IPv4-only server without knowing anything happened. The predictable break is the IPv4 literal: an application that carries a hard-coded IPv4 address in configuration or in its own protocol payload never asks DNS, so the synthesis never happens and the connection fails in a way that looks like the network.
464XLAT, RFC 6877, is the fix that runs in your pocket. A CLAT on the host presents a local IPv4 interface to applications that insist on one and translates their traffic into IPv6 for the NAT64 in the network, so the literal case works again. Android, macOS and iOS have shipped it for years, Windows has announced expansion beyond cellular, and Fedora with NetworkManager gained an eBPF-based CLAT in July 2026. That transition works at population scale is not a projection: APNIC Labs measures India above 70 percent IPv6 capability.
One segment, three kinds of host, no second network
Each host answers DHCPv4 option 108 for itself, so the segment sheds IPv4 leases one capable client at a time, and the IPv4-only host in the third lane is the single reason the address pool cannot yet be switched off.
An IPv6-mostly segment runs three kinds of host at once: DHCPv4 option 108 (RFC 8925) lets capable hosts drop IPv4 while NAT64 keeps the IPv4-only server reachable.
TLS authenticates a name and encrypts a channel, and the certificate behind it now expires in months
TLS 1.3 was republished in July 2026 as RFC 9846, obsoleting RFC 8446 while keeping the protocol version at 1.3; the revision forbids KeyShare reuse and bans negotiating TLS 1.0 and 1.1. Where it sits differs by transport. Over TCP it is a second handshake layered on a connection that is already up, which is why a capture shows the connection and the negotiation as separate events. Inside QUIC the transport and cryptographic handshakes are one exchange, which is why the same capture shows far less and why the placement question changes what evidence you can gather at all.
What it promises is narrow and worth saying out loud. The chain of certificates is validated back to a trust store, Certificate Transparency under RFC 9162 makes issuance publicly auditable, and forward secrecy means a later key compromise does not decrypt yesterday's recorded sessions. None of that is a judgement about the site. Proving control of a domain is exactly what a phishing operator can do, so phishing sites hold valid certificates as a matter of routine, and the padlock reports that proof rather than any opinion about honesty. Read the name in the address bar, not the icon beside it.
The economics of certificates changed on a published schedule. The CA/Browser Forum approved ballot SC-081v3 on 11 April 2025: the maximum validity of a publicly trusted TLS certificate is 200 days from 15 March 2026, 100 days from March 2027 and 47 days from March 2029, with the reuse period for domain validation data shrinking on the same curve. A 47-day certificate cannot be a diary entry owned by a named person. ACME automation stops being an efficiency and becomes the baseline, and any manual step left in the renewal path is an outage waiting for a holiday. Private internal CAs sit outside the schedule, which is precisely why an inventory matters.
TLS protects the channel, not every system risk
Every property in the left column belongs to bytes while they are in transit, so the right column is not a weakness in TLS but the set of questions a valid certificate never answers, including whether the operator you reached deserves trust.
TLS gives confidentiality, integrity, and server identity for bytes in transit. It does not stop a buggy endpoint from leaking keys, nor does it certify that the server you reached deserves your trust.
The method is a loop: state the symptom, isolate by layer, name the cheapest next test
Most bad diagnoses fail at the first step, because the symptom was never stated precisely enough to be tested. Slow is not a symptom; slow for these users, to this name, since this time, while another location is unaffected, is a symptom with edges. From there the discipline is to isolate by layer and let each layer's tools produce a different class of evidence, then to pick the next test by what it costs against what it would rule out. The loop closes when the remaining hypotheses are narrow enough that one measurement separates them.
Error messages are distinctions, not noise. A connection refused means something answered and declined; a timeout means nothing answered at all; a negotiated h2 where h3 was expected means the connection succeeded over a different transport from the one the client wanted. That last one is the stage's worked example. A site feels slower in the office than on a hotspot, and the only evidence is the browser's protocol column reading h2 in one place and h3 in the other. HTTP/3 runs QUIC over UDP port 443, per RFC 9114, so a rule set written as allow 443 for TCP only drops the QUIC attempt silently and the client falls back. A short capture filtered to udp port 443 settles it in seconds, and an ICMP administratively-prohibited reply names the device doing it.
The downgrade is the finding, not yet the fault. HTTP/2 over a healthy path is not slow, and blocking UDP 443 is sometimes deliberate policy so traffic stays inspectable. What the evidence established is that the two networks were never running the same protocol, so any comparison of their performance was measuring a mixture. Writing that down as a diagnosis note, with the measurement, the hypothesis it supports and the hypothesis it does not, is what makes an escalation useful to the person who receives it.
A repeatable diagnostic routine prevents random fixes
The loop can only close on a pass, and a fail leaves it standing at the named fault: keep to one change and one test per lap and the reading at nine o'clock belongs to the thing you altered rather than to the last three.
Diagnosis is a loop, not a guess. Find the first function that did not succeed, test it, read the result, then act. Never change two things at once.
A slow website is diagnosed by measurement order, never by the last thing anybody changed
The capstone runs the method on a case with no obvious culprit. Users in the London office report that a checkout site loads slowly or times out, but only since 09:00 today; the same site is fine from New York; no code was deployed and no server was restarted. The symptom is therefore environment-specific and time-bounded, and that shape alone rules out whole families of cause before a single tool is opened. The first measurement is taken from the affected location and against a control: a lookup through the London resolver returning in 3800 ms against the same lookup elsewhere returning in 45 ms is a finding about the resolver, not about the site.
Two branches then have to be considered rather than assumed away. The first is congestion instead of failure. If DNS is healthy, the connection is clean, and only the first byte arrives late while the office backup window runs, nothing is broken; queues are building on a shared link. Loss or an explicit congestion mark in that capture is the signal a working transport depends on, not proof of a fault, and the test that separates the two is idle latency compared with loaded latency. If idle is fine and loaded is not, more bandwidth will not fix it.
The second branch is that the client never used the resolver you tested. A browser or operating system configured for DNS over HTTPS sends its queries inside an HTTPS session to a resolver of its own choosing, so the corporate resolver logs stay empty and its cache state is irrelevant to what the user experienced. Establish which resolver actually answered before drawing any conclusion from resolver-side evidence. Neither branch changes the method. Both change which measurement counts as evidence, and that is the difference between a diagnosis that holds up under challenge and one that names the last thing anybody touched.
A slow website diagnosis separates each delay bucket
Split the page into DNS, TCP, TLS or QUIC, HTTP and transfer and four of those buckets measure the same in both runs, so the entire difference between a 4200 millisecond page and a 445 millisecond one sits in DNS, and the dominant bar rather than the total names the boundary.
Break a slow load into its phases. The dominant phase points at the right boundary. The London scenario showed 3.8 s of DNS hiding inside a 4.2 s 'slow page'.
The traps this stage warns against
Reaching for UDP because it is faster than TCP.
Instead: Both put bits on the wire at the same rate; the link, the queues and the distance decide that. What differs is what each transport makes you wait for: a handshake before data, a slowdown after loss, and one ordered stream that stalls behind a single missing segment. Choose by requirement, and note that QUIC (RFC 9000) removed most of the waiting without giving up reliability or congestion control.
Calling NAT the site's firewall because unsolicited inbound traffic does not get through.
Instead: NAT is address sharing. Unsolicited traffic is dropped because no translation state matches it, which is a side effect of keeping state rather than a policy. RFC 4787 specifies that behaviour, not protection, and states that its mapping choices do not determine the security properties of the device. An IPv6 network reaches the same default-deny position with a stateful firewall and no translation.
Reading a firewall rule that permits 443 as covering all HTTPS traffic.
Instead: Port numbers are per protocol and 443 exists over both. HTTP/1.1 and HTTP/2 use TCP 443; HTTP/3 carries HTTP over QUIC on UDP 443 (RFC 9114). A TCP-only allow does not fail loudly: the QUIC attempt goes unanswered, the client falls back, and the page still loads. Record which protocol was negotiated before comparing two networks.
Putting certificate renewal in the calendar once a year and giving it to a named owner.
Instead: CA/Browser Forum ballot SC-081v3, approved on 11 April 2025, cuts the maximum validity of a publicly trusted TLS certificate to 200 days from 15 March 2026, 100 days from March 2027 and 47 days from March 2029. Automate issuance and installation with ACME, and inventory which certificates are publicly trusted, because private internal CAs sit outside the schedule.
Treating a handful of lost packets in a capture as proof of a fault.
Instead: Loss, or an explicit ECN mark, is the congestion signal loss-based control depends on to find the right sending rate, so a small amount of it is evidence of a working transport. Compare idle latency with latency under load: if idle is fine and loaded is not, the problem is a full buffer and more bandwidth will not empty it (RFC 9330).
Telling a user that encrypted DNS makes their browsing private.
Instead: DoT, DoH and DoQ protect query confidentiality against the network between the client and the resolver, and hand the resolver an attributable log of every name asked for. The destination IP address is still in the clear, and without Encrypted Client Hello the SNI field names the site during the TLS handshake. RFC 9849 closes that gap only where client, DNS and server deployment all support it, and only down to the fronting deployment.
Citing BBRv3 or Multipath QUIC as though they were published RFCs.
Instead: Both are Internet-Drafts, draft-ietf-ccwg-bbr and draft-ietf-quic-multipath, and describing them as standards misstates what an operator can rely on. RFC 9743, published in March 2025, is the document that sets out what any new congestion control algorithm must demonstrate before it becomes one.
Core distinctions
- Flow control versus congestion control: flow control is the receiver protecting itself and travels in every acknowledgement; congestion control is the sender inferring the limit of a path that never advertises one
- The receive window is the receiver's stated capacity and the congestion window is the sender's own estimate of the path; the effective sending rate is the smaller of the two
- Routing versus forwarding: routing is the control plane building a table from protocol metrics and policy; forwarding is the data plane doing one longest-prefix-match lookup per packet, with no fresh calculation
- DNS over TLS on TCP 853 and DNS over QUIC on UDP 853 sit on a dedicated port a network can see and block as a category; DNS over HTTPS shares port 443 with the web, which is why it survives restrictive egress rules
- A Valid route origin state means a signed ROA covers the prefix and authorises the announcing AS; NotFound means no ROA covers it at all, which is the honest answer for unsigned space and is accepted rather than dropped
- NAT64 is translation performed in the network for hosts with no IPv4 at all; 464XLAT adds a CLAT on the host so an application that insists on IPv4, including one carrying an IPv4 literal, keeps working over that same NAT64
- CUBIC infers congestion from loss; BBR estimates bottleneck bandwidth and round-trip time and paces against that model, and BBRv3 is an Internet-Draft rather than a published RFC
- TLS over TCP is a second handshake on a connection that is already up; inside QUIC the transport and cryptographic handshakes are one exchange, which changes what a packet capture can still show you
- A protocol downgrade is a finding and a fault is a conclusion: h2 where h3 was expected names one hypothesis about UDP 443 and nothing more until a capture confirms it
That is the Applied stage in one place. TCP's two windows and the inferences behind them, congestion control from CUBIC through BBR to L4S, what QUIC actually removed, DNS resolution with three encrypted transports and an honest account of what they hide, routing against forwarding with route origin validation measured rather than asserted, NAT as address sharing, the IPv6-mostly transition kit, what TLS promises under 200-day certificates, and the diagnostic loop that turns all of it into evidence. The applied scenario practice now puts that under pressure with situations where the folklore answer is the tempting one, so the reflexes are corrected before stage 3 asks you to secure and observe the same path.
Sources and further reading
- RFC 9293, Transmission Control ProtocolThe current TCP specification behind the two-window teaching and the exact wording of what TCP guarantees.
- RFC 9330, Low Latency, Low Loss, and Scalable Throughput (L4S)The architecture behind the bufferbloat section and the reason loss or an ECN mark is a signal before it is a fault.
- RFC 9000, QUIC: A UDP-Based Multiplexed and Secure TransportThe transport behind the single handshake, per-stream recovery and connection migration, and the anchor for refuting the claim that UDP is faster than TCP.
- RFC 4787, NAT Behavioral Requirements for Unicast UDPThe behavioural specification for NAT mapping, filtering and hairpinning, and the source for the statement that its mapping choices do not determine the security properties of the device.
- NIST RPKI MonitorThe measurement behind the route origin validation figures: ROA coverage of the IPv4 table and the far smaller share of stub autonomous systems fully protected.
- CA/Browser Forum ballot SC-081v3The approved schedule cutting maximum public TLS certificate validity to 200 days from 15 March 2026, 100 days from March 2027 and 47 days from March 2029.
- RFC 9846, The Transport Layer Security (TLS) Protocol Version 1.3The July 2026 republication that obsoletes RFC 8446 while keeping protocol version 1.3, forbidding KeyShare reuse and banning negotiation of TLS 1.0 and 1.1.