Hacker DirectoryHacker Directory

WEB / WEB-22.01

From URL to a secure connection

Connect URL records, DNS knowledge, routes, transport, and peer identity in one public read plan.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mechanism

Read every scenario without motion

New connection

  1. Navigation intent

    The browser knows https://public.example.invalid/notes/tea?view=compact#details. The resolver has received no question; this initial state sends neither a DNS query nor an HTTP request.

    Browser
    Raw URL ready
    Resolver
    No question yet
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  2. Parsed URL fields

    The browser separates host from target, keeps the fragment out, and prepares the resolver question.

    Browser
    Host known; DNS question prepared
    Resolver
    No question yet
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  3. Resolver question

    The conceptual DNS question arrives at the resolver; the browser retains its prior prepared state.

    Browser
    Host known; DNS question prepared
    Resolver
    Hostname question received
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  4. Address answer ready

    The resolver prepares the supplied local documentation-address answer; the browser does not yet know it.

    Browser
    Host known; DNS question prepared
    Resolver
    203.0.113.10 answer prepared
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  5. Address at browser

    The conceptual DNS answer reaches the browser; resolver and other owners remain unchanged.

    Browser
    Parsed host and address known
    Resolver
    203.0.113.10 answer prepared
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  6. Transport context

    Supplied route=true and selected TCP/H2 context are evaluated; no socket or handshake runs here.

    Browser
    Parsed host and address known
    Resolver
    203.0.113.10 answer prepared
    Connection context
    Route true; TCP/H2 supplied
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  7. Peer identity binding

    Supplied trust/path=true combines with intended ASCII hostname match=true; this is not real X.509 validation.

    Browser
    Parsed host and address known
    Resolver
    203.0.113.10 answer prepared
    Connection context
    Route true; TCP/H2 supplied
    Peer identity
    Peer predicate accepted
    HTTP planner
    No HTTP plan
  8. HTTP plan ready

    The dependency-gated plan carries host/path/query; neither fragment forwarding nor application permission follows.

    Browser
    Parsed host and address known
    Resolver
    203.0.113.10 answer prepared
    Connection context
    Route true; TCP/H2 supplied
    Peer identity
    Peer predicate accepted
    HTTP planner
    GET target plan ready; not sent

Peer mismatch

  1. Peer check intent

    Connection context is supplied; the next decision separately evaluates trust/path and intended-name binding.

    Browser
    Parsed host known
    Resolver
    Address supplied
    Connection context
    Transport supplied
    Peer identity
    Peer pending
    HTTP planner
    Plan pending
  2. Chain assumption

    Trust/path=true is a supplied predicate; no certificate file or cryptographic validation is executed.

    Browser
    Parsed host known
    Resolver
    Address supplied
    Connection context
    Transport supplied
    Peer identity
    Trust/path true; name unknown
    HTTP planner
    Plan pending
  3. Name binding differs

    other.example.invalid differs from public.example.invalid; the exact ASCII fixture match becomes false.

    Browser
    Parsed host known
    Resolver
    Address supplied
    Connection context
    Transport supplied
    Peer identity
    Name match false; peer rejected
    HTTP planner
    Plan pending
  4. Request plan stopped

    With peer accepted=false the selected plan is not ready, and no invented HTTP status is produced.

    Browser
    Parsed host known
    Resolver
    Address supplied
    Connection context
    Transport supplied
    Peer identity
    Name match false; peer rejected
    HTTP planner
    Plan false; no HTTP status

No address

  1. Address needed

    The parsed host is supplied but no usable answer exists; this ordinary fixture is not a real NXDOMAIN diagnosis.

    Browser
    Parsed host; address missing
    Resolver
    No question yet
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  2. Missing resolver data

    The resolver observation is supplied as usable address=false; no timeout or offline cause is invented.

    Browser
    Parsed host; address missing
    Resolver
    No usable answer
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  3. Transport not started

    The missing address dependency leaves transport attempted=false; no new route evidence is created.

    Browser
    Parsed host; address missing
    Resolver
    No usable answer
    Connection context
    Transport attempted false
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  4. Plan remains incomplete

    TLS remains not-evaluated and HTTP status absent; the application handler is not considered reached.

    Browser
    Parsed host; address missing
    Resolver
    No usable answer
    Connection context
    Transport attempted false
    Peer identity
    Peer unknown
    HTTP planner
    Plan false; peer not-evaluated

Connection reuse

  1. Repeated read intent

    A new public read is planned for the same supplied origin; an existing connection is not yet selected.

    Browser
    Same origin parsed
    Resolver
    No question yet
    Connection context
    No connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  2. Pool context suitable

    The existing connection is supplied as suitable for origin/partition/credential context; no real browser pool is read.

    Browser
    Same origin parsed
    Resolver
    No question yet
    Connection context
    Suitable existing H2 connection
    Peer identity
    Peer unknown
    HTTP planner
    No HTTP plan
  3. No fresh handshake

    This branch assumes a verified existing context; fresh DNS or TLS handshake stages are not portrayed as repeated.

    Browser
    Same origin parsed
    Resolver
    No question yet
    Connection context
    Suitable existing H2 connection
    Peer identity
    Existing verified context supplied
    HTTP planner
    No HTTP plan
  4. Reused plan ready

    The suitable existing H2 connection makes the request plan ready without a fresh DNS lookup or TLS handshake; the HTTP request has not yet been sent.

    Browser
    Same origin parsed
    Resolver
    No question yet
    Connection context
    Suitable existing H2 connection
    Peer identity
    Existing verified context supplied
    HTTP planner
    Plan ready; fresh DNS/handshake false

ACTORS · STATE · DATA FLOW

Address components belong to different decisions

Consider https://public.example.invalid/notes/tea?view=compact#details. Scheme, hostname, port, path, query, and fragment are not one server instruction. A URL parser separates a record; the default HTTPS port can disappear from canonical serialization. /notes/tea?view=compact contributes to the HTTP target, while #details remains client-side selection. This capstone examines the record using a URL API from the same standards family without pretending to run an address bar, history, or document navigation.

The browser initially owns the intended origin but may not know its destination address. A resolver question concerns the selected hostname and record type, not the full URL. A resolver can answer from local/cache information or consult name servers. The supplied answer uses documentation address 203.0.113.10. Arrival creates new browser knowledge: a prepared resolver answer does not mean the browser has already received it.

A DNS answer, a network route, and server identity answer different questions. IP forwarding selects next hops toward a destination; an existing DNS record does not prove reachability or application health. An unavailable route can stop connection establishment. routeAvailable is an explicit fixture predicate here, with no invented hop list, latency, or packet capture. Connecting WEB-06 and WEB-11 retains the layer from which every fact came.

Separate transport selection from the trusted peer

An HTTPS request does not require a fresh TCP handshake every time. A suitable existing connection may be reused, and a cache or service worker may answer earlier. New HTTP/1.1 or HTTP/2 connections separate TCP from TLS. HTTP/3 uses QUIC; QUIC v1 combines transport and TLS cryptographic handshakes rather than adding a TCP handshake. Protocol selection, pooling, and resumption depend on implementation policy. One animation cannot impose a universal browser timeline.

Certificate-based TLS server authentication gives the certificate chain, CertificateVerify, and Finished different responsibilities. Receiving a certificate is not validation. Trust/path/time and intended reference identity checks matter; the expected hostname comes from the intended service. DNS pointing to a different address does not automatically replace that reference identity. TLS does not grant an application user permission to a note; WEB-14 and WEB-15 still own those decisions.

The normal ledger links URL parsing, supplied resolution, route/transport selection, and supplied peer-validation results to an HTTP plan. The native example actually parses the URL but performs no lookup, socket, TLS, or X.509 validation. Its exact-name predicate covers simple ASCII aliases only, not wildcard/IDNA/IP-ID matching. The plan becomes ready only when selected dependency predicates hold. The scene ends before sending the request; peer-failed and no-address branches never become successful connections.

2. Red · Trust & Impact

Read every scenario without motion

Peer name

  1. Retain intended host

    The URL selects public.example.invalid. Resolution supplies 203.0.113.10; address discovery changes neither intended hostname nor its trust binding.

    URL and resolver ledger
    Reference public.example.invalid / address supplied
    Peer acceptance gate
    Not yet evaluated
    Request-plan outcome
    Not yet evaluated
  2. Two peer conditions

    peerFailed has trustPath true but peerName other.example.invalid and nameMatch false. Passing a path condition does not compensate for reference-name mismatch.

    URL and resolver ledger
    Reference public.example.invalid / address supplied
    Peer acceptance gate
    Trust path true / name match false
    Request-plan outcome
    Not yet evaluated
  3. Stop the HTTP plan

    peerAccepted false leaves requestPlanReady false and httpStatus null. There is no HTTP response; connection rejection is not reported as a server 404 or 500.

    URL and resolver ledger
    Reference public.example.invalid / address supplied
    Peer acceptance gate
    Trust path true / name match false
    Request-plan outcome
    Peer rejected / plan stopped / no HTTP status
  4. Separate the fragment

    Parsed hash details is client navigation information; target /notes/tea?view=compact excludes it. Successful URL parsing proves neither DNS, sockets nor certificate validation.

    URL and resolver ledger
    Target excludes #details
    Peer acceptance gate
    Trust path true / name match false
    Request-plan outcome
    Peer rejected / plan stopped / no HTTP status
  5. Channel and authority

    Normal peer acceptance and plan readiness can be true while applicationAuthorized stays false. Encryption grants neither private-note authority, session validity nor ownership.

    URL and resolver ledger
    Target excludes #details
    Peer acceptance gate
    Accepted peer ≠ application grant
    Request-plan outcome
    Peer rejected / plan stopped / no HTTP status
  6. Plan versus transmission

    Normal requestSent is false; a ready plan is not HTTP delivery. Peer booleans are supplied without executing X509 or TLS, so the conclusion stays at dependency level.

    URL and resolver ledger
    Target excludes #details
    Peer acceptance gate
    Accepted peer ≠ application grant
    Request-plan outcome
    Ready plan / request unsent / crypto unmeasured

Stage boundary

  1. No usable address

    noAddress has no usable address and neither transport attempt nor peer evaluation. Without a supplied resolver cause, no timeout or NXDOMAIN diagnosis is added.

    URL and resolver ledger
    No address / transport and peer unevaluated
    Peer acceptance gate
    Not yet evaluated
    Request-plan outcome
    Not yet evaluated
  2. Failed versus not evaluated

    Labelling an unevaluated peer check as failed assigns cause to another gate. No application status or certificate error is inserted into this branch.

    URL and resolver ledger
    No address / transport and peer unevaluated
    Peer acceptance gate
    Unevaluated peer ≠ rejected peer
    Request-plan outcome
    Not yet evaluated
  3. No request readiness

    noAddress has requestPlanReady false and null HTTP status. No browser result does not prove server receipt or note absence; an earlier stage stopped.

    URL and resolver ledger
    No address / transport and peer unevaluated
    Peer acceptance gate
    Unevaluated peer ≠ rejected peer
    Request-plan outcome
    No plan / no inferred server event
  4. Suitable reuse

    Reuse is suitable with freshDns and freshHandshake false. Missing fresh stages are not failure here; suitability of the existing context is supplied.

    URL and resolver ledger
    Suitable reuse / no fresh DNS or handshake
    Peer acceptance gate
    Unevaluated peer ≠ rejected peer
    Request-plan outcome
    No plan / no inferred server event
  5. Transport-type distinction

    The selected H1/H2 HTTPS path is TCP+TLS; H3 uses QUIC v1 over UDP without TCP. These alternatives explain protocols; quicExecuted false bounds execution evidence.

    URL and resolver ledger
    Suitable reuse / no fresh DNS or handshake
    Peer acceptance gate
    H1/H2 TCP+TLS / H3 QUIC-over-UDP
    Request-plan outcome
    No plan / no inferred server event
  6. Keep boundaries specific

    No address, peer rejection and suitable reuse are distinct outcomes. Collapsing them into retries or fresh-handshake success loses connection-lifecycle information.

    URL and resolver ledger
    Suitable reuse / no fresh DNS or handshake
    Peer acceptance gate
    H1/H2 TCP+TLS / H3 QUIC-over-UDP
    Request-plan outcome
    Discovery / identity / reuse distinct

ASSUMPTION · BOUNDARY · CONTROL

A resolved address is not a trusted service

The normal purpose is to reach the origin selected by the URL. The required trust relationship is validation for the intended service identity. Substituting a DNS answer or reachable transport for that relationship risks sending application data to an unintended peer. The broken assumption is that address discovery authenticates an endpoint. An ordinary other.example.invalid alias produces nameMatch=false here, without connecting to a real server or bypassing validation.

The control preserves the intended hostname throughout connection selection, distinguishes trust/path from name checks, and stops the HTTP plan on a failed peer predicate. This is not a certificate parser test. Even a successful channel leaves application authorization separate: encryption, a public response, or carrying a session cookie grants no private object permission. The scope is the connection identity boundary, not an automatic account compromise from every DNS error.

Do not invent completion of an absent stage

The no-address branch has no usable answer for this fixture. It does not invent a real NXDOMAIN, timeout, or offline diagnosis; only missing observed address information exists. Route and TLS owners remain untouched. Rendering this as HTTP500 or application404 invents a server result before the request reaches a server. Connection failure and application responses carry different evidence.

The reuse branch supplies a suitable existing connection. Absence of fresh DNS and a fresh handshake is therefore not failure. Review asks which connection context, origin, and credential/partition scope made reuse suitable. Forcing every box to animate on every request teaches a false runtime. Browser policy, cache, and connection-management sources constrain the alternatives; the model explicitly names its selected branch.

3. Blue · Secure development & defense

Read every scenario without motion

Plan controls

  1. Compare URL fields

    Raw input, normalized origin, target and hash are calculated separately. Explicit default port does not change origin; query enters the target, fragment does not.

    Plan fact ledger
    Origin/target/hash distinct
    Dependency comparison
    Not yet evaluated
    Evidence outcome
    Not yet evaluated
  2. Bind reference and answer

    questionName is intended host and answer address is supplied resolver data. actualDnsQuery is false, so discovery is not reported as an observed DNS exchange.

    Plan fact ledger
    Origin/target/hash distinct
    Dependency comparison
    Supplied address / query unexecuted
    Evidence outcome
    Not yet evaluated
  3. Positive peer control

    Normal trustPath and nameMatch yield peerAccepted true. Their conjunction supports readiness while applicationAuthorized and requestSent remain false.

    Plan fact ledger
    Origin/target/hash distinct
    Dependency comparison
    Supplied address / query unexecuted
    Evidence outcome
    Peer accepted / plan ready / app grant false
  4. Three branch evidence

    peerFailed is evaluated rejection, noAddress unevaluated, and reuse a suitable context. Evidence stage is identified before any generic status label.

    Plan fact ledger
    Rejected / unevaluated / reused contexts
    Dependency comparison
    Supplied address / query unexecuted
    Evidence outcome
    Peer accepted / plan ready / app grant false
  5. Selector coverage boundary

    The selector looks for peerAccepted false with ready true. Normal gives zero and an inconsistent control one; missing observation does not prove a safe channel.

    Plan fact ledger
    Rejected / unevaluated / reused contexts
    Dependency comparison
    Contradiction controls / missing coverage separate
    Evidence outcome
    Peer accepted / plan ready / app grant false
  6. Transition to the next owner

    The ledger identifies dependencies passed by the ready plan. HTTP receipt and handling belong to the next capstone and are not added retroactively to the connection plan.

    Plan fact ledger
    Rejected / unevaluated / reused contexts
    Dependency comparison
    Contradiction controls / missing coverage separate
    Evidence outcome
    Plan evidence only / HTTP owner separate

Peer evidence gap

  1. Address-only evidence

    The review sees only 203.0.113.10, without route or peer-acceptance records. An address proves neither endpoint identity nor encrypted-channel success.

    Plan fact ledger
    Address known / route and peer missing
    Dependency comparison
    Not yet evaluated
    Evidence outcome
    Not yet evaluated
  2. Do not copy normal results

    Normal nameMatch true belongs to another fixture branch. accepted true cannot be recorded for this incomplete event without intended-name and peer-check evidence.

    Plan fact ledger
    Address known / route and peer missing
    Dependency comparison
    Expected peer acceptance ≠ observed result
    Evidence outcome
    Not yet evaluated
  3. Do not invent an HTTP outcome

    Readiness and sending remain UNKNOWN, with no HTTP status observed. Neither name failure nor application 404 follows from the address-only record.

    Plan fact ledger
    Address known / route and peer missing
    Dependency comparison
    Expected peer acceptance ≠ observed result
    Evidence outcome
    Plan/send/HTTP outcome UNKNOWN
  4. Required dependency fields

    Reference hostname, address source, transport selection, suitable reuse and peer result are needed. Connection errors and server receipts come from separate sources.

    Plan fact ledger
    Needed: reference/context/peer/recipient
    Dependency comparison
    Expected peer acceptance ≠ observed result
    Evidence outcome
    Plan/send/HTTP outcome UNKNOWN
  5. Parser-evidence boundary

    A URL API calculates normalized origin, not X509 validation. Native parsing does not replace certificate trust, socket reachability or browser navigation evidence.

    Plan fact ledger
    Needed: reference/context/peer/recipient
    Dependency comparison
    URL computation ≠ connection verification
    Evidence outcome
    Plan/send/HTTP outcome UNKNOWN
  6. Retain the unknown outcome

    New observations must answer connection context and peer gating separately. This record retains only the address without adding HTTP readiness or application authority.

    Plan fact ledger
    Needed: reference/context/peer/recipient
    Dependency comparison
    URL computation ≠ connection verification
    Evidence outcome
    Retain address / collect scoped peer evidence

IMPLEMENTATION · SECURITY CONTROL · VERIFICATION

Track dependencies of a request plan

Keep raw input, parsed origin/target, reference hostname, address source, and transport mode separate. Show fragment exclusion using parser output. Compare an explicit :443 or an ordinary query value change to see exactly which record component changes. This check covers a URL API; it establishes neither document navigation policy nor certificate verification.

Connect observation points with typed outcomes: usable address, supplied route predicate, selected protocol, peerValidation, and requestPlanReady. Do not default missing fields to true. Preserve the arrival boundary where a prepared resolver answer has not yet updated browser knowledge. A validated peer result does not become application authorization; the next capstone takes the same plan toward a handler. Readers see known and unknown facts rather than a single status label.

Record failure reasons and trust boundaries

The peer-failed example keeps trustPath=true beside nameMatch=false; an apparently acceptable chain cannot erase a name mismatch. In no-address, the peer check is not evaluated rather than failed. A reused context explains freshHandshake=false together with selectedSuitable=true. These outcomes need not share one retry or error category; the native predicate decides only over supplied ASCII names and booleans.

An XPath over own XML observations selects peerAccepted=false together with requestPlanReady=true. A benign stopped plan matches zero, a deliberately inconsistent inert record matches one, and a missing record proves no safe connection. The selector performs neither time correlation nor TLS transcript decoding. Browser timing, connection errors, and server access observations would be separate real evidence sources; this lesson teaches their decision dependency without fabricating such output.

NOW APPLY IT TO THE CASE

What trust does a DNS answer provide for an HTTPS request?

The public-note URL fragment stays client-side; its request target contains path and query. The supplied DNS answer gives an address, but other.example.invalid does not match the intended peer name. Another branch reuses a suitable connection; each request need not repeat DNS and handshake.

Reconstruct the owner chain from the case records. Attach each observation to its supported outcome without borrowing another request’s success for a missing hop.

Open the related case file ↗

READ THE EXAMPLE TOGETHER

URL and connection decision ledger

Select a field and examine what it supports and where the evidence ends.

Read the raw artifact and field explanations
{
  "input": "https://public.example.invalid/notes/tea?view=compact#details",
  "parsed": {
    "protocol": "https:",
    "hostname": "public.example.invalid",
    "port": "",
    "origin": "https://public.example.invalid",
    "pathname": "/notes/tea",
    "search": "?view=compact",
    "hash": "#details",
    "target": "/notes/tea?view=compact"
  },
  "resolution": {
    "questionName": "public.example.invalid",
    "address": "203.0.113.10",
    "source": "supplied local resolver answer",
    "actualDnsQuery": false
  },
  "normal": {
    "routeAvailable": true,
    "transport": "tcp",
    "httpVersion": "h2",
    "trustPath": true,
    "peerName": "public.example.invalid",
    "nameMatch": true,
    "peerAccepted": true,
    "requestPlanReady": true,
    "applicationAuthorized": false,
    "requestSent": false
  },
  "peerFailed": {
    "trustPath": true,
    "peerName": "other.example.invalid",
    "nameMatch": false,
    "peerAccepted": false,
    "requestPlanReady": false,
    "httpStatus": null
  },
  "noAddress": {
    "usableAddress": false,
    "transportAttempted": false,
    "peerEvaluated": false,
    "requestPlanReady": false,
    "httpStatus": null
  },
  "reuse": {
    "origin": "https://public.example.invalid",
    "suitable": true,
    "freshDns": false,
    "freshHandshake": false,
    "httpVersion": "h2",
    "requestPlanReady": true
  },
  "transportAlternatives": {
    "h1h2": "TCP plus TLS for selected HTTPS path",
    "h3": "QUIC v1 over UDP integrates TLS handshake; no TCP",
    "quicExecuted": false
  },
  "limits": {
    "browserNavigation": false,
    "dnsQuery": false,
    "socketRouteProbe": false,
    "tcpQuicTlsHandshake": false,
    "x509Validation": false,
    "httpDelivery": false,
    "realCredentials": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<audit><plan peerAccepted=\"false\" ready=\"false\"/></audit>",
    "xpath": "count(/audit/plan[@peerAccepted='false' and @ready='true'])",
    "expected": 0,
    "positiveFixtureXml": "<audit><plan peerAccepted=\"false\" ready=\"true\"/></audit>",
    "positiveExpected": 1,
    "scope": "Own inert decision observations, not real vendor logs.",
    "missingFieldBehavior": "Missing observation is insufficient evidence, not a proven healthy or authorized result."
  }
}
parsed
Origin, path, query, and client fragment examined with an actual URL API.
normal
Selected supplied dependency outcomes, not application authority.
peerFailed
Trust/path and name matching are separate predicates.
reuse
A suitable supplied context without a fresh handshake.

Fixed synthetic example; protocol edges are conceptual, and local execution evidence has a separate scope.

Two reality checks

Every HTTPS request performs fresh DNS, TCP, and TLS handshakes.

Caches and suitable connection reuse create other branches; H3 also uses QUIC rather than TCP.

The address resolves and TLS encrypts, so I have permission to the note.

Service identity and channel protection remain separate from application authorization.

YOUR TURN

Work through this story.

Predict the outcome, find the evidence boundary, and explain it in your own words.

The certificate path is trusted, but peerName=other.example.invalid and nameMatch=false. Is the request plan ready for this URL?

  1. No. peerAccepted=false and requestPlanReady=false.
  2. Yes. A trusted path makes hostname checking unnecessary.
Read the explained answer

No. peerAccepted=false and requestPlanReady=false. — A trusted path does not make another service name valid for this URL. No HTTP response is received in this branch, so httpStatus remains null.

Which parts of this URL become the HTTP request target?

Selected lesson artifact fields; teaching example

parsed.pathname
/notes/tea
parsed.search
?view=compact
parsed.hash
#details
parsed.target
/notes/tea?view=compact
  1. The fragment is included in the target, so the server selects the details route.
  2. /notes/tea?view=compact is sent; #details is not.
Read the explained answer

/notes/tea?view=compact is sent; #details is not. — The target combines path and query. The fragment remains browser context and is not added as a resource path to TLS or DNS.

Reuse has freshDns=false and freshHandshake=false, yet requestPlanReady=true. Why is that possible, and why does readiness not prove application permission or HTTP delivery?

Read the explained answer

A suitable connection can be reused; not every request requires fresh DNS and a handshake. Origin and suitability are supplied conditions here. The normal branch keeps requestSent=false and applicationAuthorized=false: a prepared transport plan is neither a sent request nor application permission. The H3 alternative uses QUIC/UDP, not TCP. No real DNS, socket, TLS or HTTP delivery runs here.

□ I distinguished connection reuse from a fresh handshake per request.

□ I did not treat plan readiness as application permission or delivery.

Open the application console · request / response / browser
Also open request, URL, cookie and DOM examples

Sources and scope