Топао HTTPS насупрот топлом VPN-у: упоредите исту путању захтева
HTTPS не обавља руковање при сваком API захтеву, па топла веза и топли тунел нису ривали. Упоредите исти образац захтева пре него што изаберете.
Вероватно сте прочитали да HTTPS отвара нову TCP везу и ново TLS руковање за сваки API захтев, па тунел који остаје отворен сат времена изгледа јефтиније. Прва половина тога обично није тачна. Подржани клијент поново користи успостављену везу за многе размене, а мерење које при сваком позиву гради нови клијент мери животни циклус, а не заштиту. Остатак ове странице говори о томе шта уместо тога мерити.
Шта поновно коришћење заиста захтева
Трајност је део HTTP модела, а не трик: једна веза носи више размена захтева и одговора. Веза се завршава када је једна страна затвори, када сервер повуче неактивну или преоптерећену везу, или када заглавље или правило протокола каже да се веза не може поново користити. HTTPS смешта тај разговор унутар TLS-а без захтевања новог руковања за сваку размену. Зато други захтев не понавља руковање првог захтева, осим ако је нешто у међувремену завршило везу.
Поновно коришћење има и један услов који апликације лако крше. Клијент који планира да поново користи везу мора да прочита цело тело одговора, а одговор напуштен на пола је уобичајен начин на који базен веза нестане, а да то нико не примети.
Проверите клијента који библиотека подржава и животни циклус базена веза, уместо да претпостављате да је базен укључен или искључен. Забележите и преговарану HTTP верзију, јер HTTP/2 и HTTP/3 рукују поновним коришћењем веза другачије од HTTP/1.1. Третирајте преговарану верзију као део мерења, а не као фусноту.
Зашто поређење мери животни циклус
Прављење новог клијента за сваку операцију и поређење са тунелом који је повезан сат времена пореди успостављање везе са стабилним стањем. То је легитимно мерење и није HTTPS насупрот VPN-у. Два пролаза са истом конфигурацијом клијента боље описују понашање од једног, посебно када први пролаз загреје разрешивач или кеш веза.
Држите API операцију, сервер, налог и податке константним, иначе поређење носи више од једне променљиве. Унапред одлучите где постављате мерач времена, јер успостављање, TLS преговарање, извршавање апликације и испорука одговора различито доприносе укупном времену. Један мерач за први захтев описује успостављање и не говори ништа о стабилном саобраћају који заправо водите. Запишите границе мерења поред бројева.
Одвојите хладно успостављање од топлих захтева
Мерите први захтев одвојено од оних који следе. Затим додајте оно што услуга заиста види: периоде мировања, налете, истовременост, величину одговора и поновна повезивања.
Оставите проверу сертификата и HTTPS укључене на оба пута, јер њихово уклањање мери другачији безбедносни дизајн, а не бржи. Ако тунел мења руту или локацију приступне тачке, пријавите ту разлику одвојено уместо да сваку промену времена приписујете шифровању, јер путања, губитак и чекање у реду могу надјачати мали захтев. Покрените сваки пут двапут преко исте руте пре него што изведете закључак. Забележите преговарани протокол и границе мерења уз оба пролаза.
Планирајте за везу која се затвара
Трајно не значи вечно. Сервер, прокси или промена мреже могу затворити везу током периода мировања, а клијент мора да се опорави понашањем које његова библиотека подржава. Тај опоравак има аутомат стања: захтев је можда завршен на серверу или није успео пре него што га је сервер прочитао, а затворени сокет не каже позиваоцу шта се догодило. Неидемпотентна операција на том месту не може једноставно да се понови, јер понављање претвара непознат исход у дупло уписивање. Ту се топли тунел и топла веза понашају исто, јер оба могу да откажу у тренутку док је посао у току.
Користите документовани механизам поновног покушаја или идемпотентности те услуге уместо петље која поново отвара сокет. Тестирајте опоравак изричито: затворите неактивну везу и гледајте шта клијент чини затим. Поновно отварање сокета не чини понављање позива који мења стање безбедним.
Прво изаберите границу, затим подешавајте
Изаберите мрежну границу према захтевима приступа и поверења пре него што било шта оптимизујете. VPN штити сегмент између својих тачака, док су апликацијски крајњи циљеви и сваки сегмент отвореног текста изван тунела и даље важни. Затим подесите животни циклус везе унутар те границе. Закључак о јефтинијем тунелу следи само из уверења да сваки захтев понавља руковање, а то уверење се овде проверава.
Одељак о трајности у RFC 9112 је референца за оно што поновно коришћење заиста обећава, укључујући услове који завршавају везу. Прочитајте га једном пре него што поверујете мерењу које их занемарује.