Веројатно сте прочитале дека HTTPS отвора нова TCP врска и ново TLS ракување за секое API барање, па тунелот што останува отворен еден час изгледа поевтин. Првата половина од тоа обично е неточна. Поддржан клиент повторно користи воспоставена врска за многу размени, а мерењето што гради нов клиент при секој повик го мери животниот циклус, а не заштитата. Остатокот од оваа страница говори за тоа што наместо тоа да се мери.

Што навистина бара повторното користење

Трајноста е дел од HTTP моделот, а не трик: една врска носи повеќе размени на барање и одговор. Врската завршува кога едната страна ќе ја затвори, кога серверот повлекува неактивна или преоптоварена врска, или кога заглавие или правило на протоколот кажува дека врската не може повторно да се користи. HTTPS го сместува тој разговор во TLS без да бара ново ракување за секоја размена. Затоа второто барање не го повторува ракувањето на првото барање, освен ако нешто во меѓувреме ја завршило врската.

Повторното користење има и еден услов што апликациите лесно го кршат. Клиентот што планира повторно да користи врска мора да го прочита целото тело на одговорот, а одговор оставен на половина е вообичаениот начин на кој базенот на врски исчезнува без никој да забележи.

Проверете го поддржаниот клиент на библиотеката и животниот циклус на базенот на врски, наместо да претпоставувате дека групирањето е вклучено или исклучено. Забележете ја и преговараната HTTP верзија, бидејќи HTTP/2 и HTTP/3 ракуваат со повторното користење на врски поинаку од HTTP/1.1. Третирајте ја преговараната верзија како дел од мерењето, а не како фуснота.

Зошто споредбата го мери животниот циклус

Создавањето нов клиент за секоја операција и неговото споредување со тунел што е поврзан еден час го споредува воспоставувањето врска со стабилна состојба. Тоа е легитимно мерење и не е HTTPS наспроти VPN. Две извршувања со иста конфигурација на клиентот го опишуваат однесувањето подобро од едно, особено кога првото извршување загрева разрешувач или кеш на врски.

Држете ги API операцијата, серверот, сметката и податоците константни, инаку споредбата носи повеќе од една променлива. Одлучете однапред каде го поставувате тајмерот, бидејќи воспоставувањето, TLS преговорите, извршувањето на апликацијата и доставувањето на одговорот придонесуваат различно во вкупното време. Еден тајмер за првото барање го опишува воспоставувањето и не кажува ништо за стабилниот сообраќај што навистина го водите. Запишете ги границите на тајмерот до бројките.

Одвојте го ладното воспоставување од топлите барања

Мерете го првото барање одделно од оние што следат. Потоа додајте го она што услугата навистина го гледа: периоди на мирување, налети, истовременост, големина на одговорот и повторни поврзувања.

Оставете ја проверката на сертификатите и HTTPS вклучени на двата пата, бидејќи нивното отстранување мери поинаков безбедносен дизајн, а не побрз. Ако тунелот ја менува рутата или локацијата на преминот, пријавете ја таа разлика одделно наместо секоја промена на времето да ја припишувате на шифрирањето, бидејќи патеката, загубата и редот можат да надвладеат мално барање. Извршете го секој пат двапати по истата рута пред да изведете заклучок. Забележете го преговараниот протокол и границите на тајмерот со двете извршувања.

Планирајте за врската што се затвора

Трајно не значи вечно. Сервер, прокси или промена на мрежата може да затвори врска за време на период на мирување, а клиентот мора да се опорави преку однесувањето што го поддржува неговата библиотека. Тоа опоравување има автомат на состојби: барањето можеби завршило на серверот или не успеало пред серверот да го прочита, а затворен сокет не му кажува на повикувачот што се случило. Неидемпотентна операција на тоа место не може едноставно да се репродуцира, бидејќи повторувањето непознат исход го претвора во двоен запис. Тука топол тунел и топла врска се однесуваат исто, бидејќи двете можат да откажат во моментот кога работата е во тек.

Користете го документираниот механизам за повторен обид или идемпотентност на услугата наместо јамка што го отвора сокетот повторно. Тестирајте го опоравувањето експлицитно: затворете неактивна врска и гледајте што прави клиентот потоа. Повторното отворање сокет не го прави безбедно повторувањето на повик што менува состојба.

Прво изберете ја границата, потоа прилагодете

Изберете ја мрежната граница според барањата за пристап и доверба пред да оптимизирате нешто. VPN го штити сегментот меѓу своите партнери, додека крајните точки на апликацијата и секој сегмент на отворен текст надвор од тунелот сѐ уште се важни. Потоа прилагодете го животниот циклус на врската во таа граница. Заклучокот за поевтиниот тунел произлегува само од уверувањето дека секое барање го повторува ракувањето, и токму тоа уверување се проверува овде.

Делот за трајност во RFC 9112 е референцата за она што повторното користење навистина го ветува, вклучувајќи ги условите што завршуваат врска. Прочитајте го еднаш пред да и верувате на мерка што ги игнорира.

Поврзани статии