diff --git a/css/style.css b/css/style.css index 457f9f2..49bba12 100644 --- a/css/style.css +++ b/css/style.css @@ -141,7 +141,7 @@ ul.tick li::before { content: "→"; position: absolute; left: 0; color: var(--accent); } -/* ---- the round-trip sequence diagrams (mermaid) ---- */ +/* ---- the round-trip sequence diagrams ---- */ .seq { display: grid; gap: 18px; margin: 20px 0; } .seqcol { border: 1px solid var(--line); border-left-width: 4px; border-radius: 8px; @@ -152,11 +152,19 @@ ul.tick li::before { .seqcol h4 { margin: 0 0 14px; font-size: 13px; letter-spacing: .04em; } .seqcol.bad h4 { color: var(--warn); } .seqcol.good h4 { color: var(--accent); } -/* before mermaid runs, .mermaid is a
; reset the code-block chrome */
-.seqcol .mermaid {
- background: none; border: 0; padding: 0; margin: 0; overflow-x: auto;
- text-align: center; color: var(--fg-faint); font-size: 12px; line-height: 1.45;
+/* step-flow: one row per hop, no lifelines to overlap */
+.flow { list-style: none; margin: 0; padding: 0; }
+.flow li { display: flex; gap: 12px; align-items: baseline; padding: 4px 0; font-size: 13px; color: var(--fg); }
+.flow .hop {
+ flex: 0 0 76px; text-align: right; white-space: nowrap;
+ font-family: var(--mono); font-size: 11.5px; color: var(--fg-dim);
}
+.flow li.phase {
+ display: block; margin: 12px 0 4px; font-size: 11px;
+ text-transform: uppercase; letter-spacing: .1em; color: var(--fg-faint);
+}
+.flow li.phase:first-child { margin-top: 0; }
+.flow li.learn { display: block; color: var(--warn); font-size: 12.5px; padding: 6px 0 2px; }
.seqcol .verdict { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line); }
.seqcol.bad .verdict { color: var(--warn); }
.seqcol.good .verdict { color: var(--accent); }
diff --git a/index.html b/index.html
index 8cab531..969d793 100644
--- a/index.html
+++ b/index.html
@@ -142,23 +142,17 @@ the wasted round trip
HTTP/3 advertised only via the Alt-Svc HTTP header
-
-sequenceDiagram
- participant C as Client
- participant D as DNS
- participant S as Your server
- Note over C,S: First connection
- C->>D: look up A / AAAA
- D-->>C: IP address
- C->>S: TCP + TLS handshake
- S-->>C: connected (HTTP/2)
- C->>S: HTTP/2 request
- S-->>C: response + Alt-Svc: h3
- Note over C,S: only now does the client learn you speak HTTP/3
- Note over C,S: Second connection
- C->>S: QUIC + HTTP/3 handshake
- S-->>C: connected (HTTP/3)
-
+
+ - first connection
+ - → DNSlook up A / AAAA
+ - ← DNSIP address
+ - ↔ serverTCP + TLS handshake, now on HTTP/2
+ - → serverHTTP/2 request
+ - ← serverresponse + Alt-Svc: h3
+ - only now does the client learn you speak HTTP/3
+ - second connection
+ - ↔ serverQUIC + HTTP/3 handshake, now on HTTP/3
+
HTTP/3 only on the second connection.
@@ -171,19 +165,13 @@
HTTP/3 advertised only via the Alt-Svc HTTP header
HTTP/3 advertised in an HTTPS DNS record
-
-sequenceDiagram
- participant C as Client
- participant D as DNS
- participant S as Your server
- Note over C,S: First connection
- C->>D: look up HTTPS record
- D-->>C: alpn=h3 + IP hints (+ ECH)
- C->>S: QUIC + HTTP/3 handshake
- S-->>C: connected (HTTP/3)
- C->>S: HTTP/3 request
- S-->>C: response
-
+
+ - first connection
+ - → DNSlook up HTTPS record
+ - ← DNSalpn=h3 + IP hints (+ ECH)
+ - ↔ serverQUIC + HTTP/3 handshake, now on HTTP/3
+ - → serverHTTP/3 request
+
HTTP/3 right away, on the first connection.
@@ -415,47 +403,5 @@ Should I drop the Alt-Svc header?
-