Valószínűleg olvasta, hogy a HTTPS minden API-kéréshez új TCP-kapcsolatot és friss TLS-kézfogást nyit, így egy órán át fennálló alagút olcsóbbnak tűnik. Ennek az első fele általában hamis. Egy támogatott kliens újrahasznál egy létrehozott kapcsolatot sok váltáshoz, és az a mérés, amely minden híváshoz új klienst épít, az életciklust méri, nem a védelmet. Az oldal többi része arról szól, mit érdemes helyette mérni.

Mit követel valójában az újrahasználat

A tartósság a HTTP-modell része, nem trükk: egy kapcsolat több kérés-válasz váltást hordoz. A kapcsolat akkor ér véget, amikor valamelyik fél bezárja, amikor a kiszolgáló visszavon egy tétlen vagy túlterhelt kapcsolatot, vagy amikor egy fejléc vagy protokollszabály szerint a kapcsolat nem használható újra. A HTTPS ezt a beszélgetést a TLS belsejébe helyezi anélkül, hogy minden váltáshoz új kézfogást követelne. Így egy második kérés nem ismétli meg az első kérés kézfogását, kivéve ha valami közben lezárta a kapcsolatot.

Az újrahasználatnak van egy feltétele is, amelyet az alkalmazások könnyen megsértenek. Az újrahasználatot tervező kliensnek be kell olvasnia a válasz teljes törzsét, és a félúton elhagyott válasz a szokásos módja annak, hogy egy kapcsolatkészlet észrevétlenül eltűnjön.

Ellenőrizze a könyvtár által támogatott klienst és a kapcsolatkészlet életciklusát, ne feltételezze, hogy a készletezés be vagy ki van kapcsolva. Jegyezze fel az egyeztetett HTTP-verziót is, mert a HTTP/2 és a HTTP/3 másképp kezeli a kapcsolatok újrahasználatát, mint a HTTP/1.1. Az egyeztetett verziót a mérés részének tekintse, ne lábjegyzetnek.

Miért az életciklust méri az összehasonlítás

Ha minden művelethez friss klienst hoz létre, és egy órája kapcsolódó alagúthoz hasonlítja, akkor a kapcsolat létrehozását az állandó állapothoz hasonlítja. Ez jogos mérés, és nem a HTTPS a VPN ellen. Két futás ugyanazzal a klienskonfigurációval jobban leírja a viselkedést egynél, különösen amikor az első futás felmelegít egy feloldót vagy kapcsolat-gyorsítótárat.

Tartsa állandóan az API-műveletet, a kiszolgálót, a fiókot és az adatokat, különben az összehasonlítás egynél több változót hordoz. Előre döntse el, hová teszi az időmérőt, mert a létrehozás, a TLS-egyeztetés, az alkalmazás végrehajtása és a válasz kézbesítése különbözőképpen járul hozzá az összhez. Egyetlen első kérésre vonatkozó időmérés a létrehozást jellemzi, és semmit sem mond a ténylegesen futtatott állandó forgalomról. Írja fel az időmérő határait a számok mellé.

Válassza külön a hideg létrehozást a meleg kérésektől

Mérje az első kérést külön az őt követőktől. Ezután adja hozzá, amit a szolgáltatás valóban lát: tétlen időszakok, sorozatok, párhuzamosság, válaszméret és újracsatlakozások.

Tartsa bekapcsolva a tanúsítvány-ellenőrzést és a HTTPS-t mindkét útvonalon, mert ezek eltávolítása más biztonsági tervet mér, nem gyorsabbat. Ha az alagút megváltoztatja az útvonalat vagy az átjáró helyét, jelentse ezt a különbséget külön, ahelyett hogy minden időváltozást a titkosításnak tulajdonítana, mert az útvonal, a veszteség és a sorban állás felülkerekedhet egy kis kérésen. Minden útvonalat kétszer futtasson ugyanazon az útvonalon, mielőtt következtetést von le. Jegyezze fel az egyeztetett protokollt és az időmérő határait mindkét futással.

Számítson a bezáródó kapcsolatra

A tartós nem jelent állandót. Egy kiszolgáló, egy proxy vagy egy hálózati változás bezárhat egy kapcsolatot egy tétlen időszakban, és a kliensnek a könyvtára által támogatott viselkedéssel kell helyreállnia. Ennek a helyreállításnak van egy állapotgépe: a kérés befejeződhetett a kiszolgálón, vagy meghiúsulhatott, mielőtt a kiszolgáló beolvasta, és egy lezárt socket nem mondja meg a hívónak, melyik történt. Egy nem idempotens művelet ebben a helyzetben nem egyszerűen ismételhető meg, mert az ismétlés egy ismeretlen eredményt kettős írássá változtat. Itt viselkedik egyformán a meleg alagút és a meleg kapcsolat, mert mindkettő meghiúsulhat abban a pillanatban, amikor a munka úton van.

Használja a szolgáltatás dokumentált újrapróbálkozási vagy idempotencia mechanizmusát a socketet újranyitó hurok helyett. Tesztelje a helyreállítást kifejezetten: zárjon be egy tétlen kapcsolatot, és figyelje, mit tesz a kliens ezután. A socket újranyitása nem teszi biztonságossá egy állapotot módosító hívás ismétlését.

Először a határt válassza, aztán hangoljon

A hálózati határt a hozzáférési és bizalmi követelményekből válassza ki, mielőtt bármit optimalizál. A VPN a partnerei közötti szakaszt védi, míg az alkalmazás végpontjai és az alagúton kívüli bármely nyílt szövegű szakasz továbbra is számít. Ezután állítsa be a kapcsolat életciklusát ezen a határon belül. Az olcsóbb alagútra vonatkozó következtetés csak abból a hitből következik, hogy minden kérés megismétli a kézfogást, és itt éppen ezt a hitet vizsgáljuk.

A RFC 9112 tartóssági szakasza az a hivatkozás arra, amit az újrahasználat valóban ígér, beleértve a kapcsolatot lezáró feltételeket. Olvassa el egyszer, mielőtt megbízna egy olyan mérésben, amely figyelmen kívül hagyja őket.

Kapcsolódó cikkek