Teplé HTTPS a teplé VPN: porovnajte rovnakú cestu požiadavky
HTTPS nevykonáva handshake pri každej požiadavke API, takže teplé spojenie a teplý tunel nie sú súperi. Pred voľbou porovnajte rovnaký vzor požiadaviek.
Pravdepodobne ste čítali, že HTTPS otvára nové TCP spojenie a nový TLS handshake pre každú požiadavku API, takže tunel, ktorý zostáva otvorený hodinu, vyzerá lacnejšie. Prvá polovica toho je zvyčajne nepravdivá. Podporovaný klient znovu používa nadviazané spojenie na mnoho výmen a meranie, ktoré pri každom volaní stavia nového klienta, meria životný cyklus, nie ochranu. Zvyšok tejto stránky opisuje, čo merať namiesto toho.
Čo opätovné použitie skutočne vyžaduje
Trvalosť je súčasťou modelu HTTP, nie trikom: jedno spojenie nesie viacero výmen požiadavky a odpovede. Spojenie končí, keď ho jedna strana zavrie, keď server vyradí nečinné alebo preťažené spojenie, alebo keď hlavička či pravidlo protokolu hovorí, že spojenie nemožno znova použiť. HTTPS vrství túto konverzáciu vnútri TLS bez toho, aby pre každú výmenu vyžadovalo nový handshake. Druhá požiadavka teda neopakuje handshake prvej požiadavky, pokiaľ medzitým niečo spojenie neukončilo.
Opätovné použitie má aj jednu podmienku, ktorú aplikácie ľahko porušia. Klient, ktorý chce spojenie znova použiť, musí prečítať celé telo odpovede, a odpoveď opustená v polovici je zvyčajný spôsob, akým fond spojení zmizne bez toho, aby si to niekto všimol.
Skontrolujte klienta, ktorého knižnica podporuje, a životný cyklus fondu spojení, namiesto predpokladu, že združovanie je zapnuté alebo vypnuté. Zaznamenajte aj vyjednanú verziu HTTP, pretože HTTP/2 a HTTP/3 spracúvajú opätovné použitie spojení inak ako HTTP/1.1. Berte vyjednanú verziu ako súčasť merania, nie ako poznámku pod čiarou.
Prečo porovnanie meria životný cyklus
Vytvorenie nového klienta pre každú operáciu a jeho porovnanie s tunelom, ktorý je pripojený hodinu, porovnáva nadviazanie spojenia s ustáleným stavom. To je legitímne meranie a nie je to HTTPS proti VPN. Dva behy s rovnakou konfiguráciou klienta opisujú správanie lepšie ako jeden, najmä keď prvý beh zohreje prekladač alebo medzipamäť spojení.
Držte operáciu API, server, účet a údaje konštantné, inak porovnanie nesie viac ako jednu premennú. Vopred rozhodnite, kam umiestnite časovač, pretože nadviazanie, vyjednávanie TLS, beh aplikácie a doručenie odpovede prispievajú k celku rôzne. Jeden časovač prvej požiadavky charakterizuje nadviazanie a nehovorí nič o ustálenej prevádzke, ktorú skutočne prevádzkujete. Zapíšte hranice časovača vedľa čísel.
Oddeľte studené nadviazanie od teplých požiadaviek
Merajte prvú požiadavku oddelene od tých, ktoré nasledujú. Potom pridajte to, čo služba skutočne vidí: obdobia nečinnosti, nárazy, súbežnosť, veľkosť odpovede a opätovné pripojenia.
Ponechajte overovanie certifikátov a HTTPS zapnuté na oboch cestách, pretože ich odstránenie meria iný bezpečnostný návrh, nie rýchlejší. Ak tunel mení trasu alebo umiestnenie brány, nahláste tento rozdiel zvlášť, namiesto pripisovania každej zmeny času šifrovaniu, keďže trasa, straty a front môžu u malej požiadavky prevážiť. Pred vyvodením záveru spustite každú cestu dvakrát po tej istej trase. Zaznamenajte vyjednaný protokol a hranice časovača pri oboch behoch.
Počítajte so spojením, ktoré sa zavrie
Trvalé neznamená večné. Server, proxy alebo zmena siete môžu počas nečinnosti zavrieť spojenie a klient sa musí zotaviť správaním, ktoré jeho knižnica podporuje. Toto zotavenie má stavový automat: požiadavka mohla na serveri dokončiť alebo mohla zlyhať skôr, než ju server prečítal, a zatvorený socket volajúcemu nepovie, čo sa stalo. Neidempotentnú operáciu na tomto mieste nemožno jednoducho prehrať, pretože prehratie mení neznámy výsledok na duplicitný zápis. Tu sa teplý tunel a teplé spojenie správajú rovnako, pretože obe môžu zlyhať v okamihu, keď je práca na ceste.
Použite dokumentovaný mechanizmus opakovania alebo idempotencie služby namiesto slučky, ktorá znova otvára socket. Otestujte zotavenie výslovne: zatvorte nečinné spojenie a sledujte, čo klient urobí ďalej. Opätovné otvorenie socketu nerobí opakovanie volania, ktoré mení stav, bezpečným.
Najprv zvoľte hranicu, potom ladte
Vyberte sieťovú hranicu podľa požiadaviek na prístup a dôveru skôr, než čokoľvek optimalizujete. VPN chráni segment medzi svojimi partnermi, zatiaľ čo koncové body aplikácie a akýkoľvek segment v otvorenom texte mimo tunela stále hrajú rolu. Potom vylaďte životný cyklus spojenia vnútri tejto hranice. Záver o lacnejšom tuneli vyplýva len z presvedčenia, že každá požiadavka opakuje handshake, a práve toto presvedčenie sa tu testuje.
Časť RFC 9112 o trvalosti je referenciou pre to, čo opätovné použitie skutočne sľubuje, vrátane podmienok, ktoré spojenie ukončia. Prečítajte si ju raz, kým uveríte meraniu, ktoré ich ignoruje.