Sobes.tech
Junior

Խոսեք HTTP տարբերակների և նրանց տարբերությունների մասին։

sobes.tech AI

Պատասխան AI-ից

Հիմնական HTTP տարբերակները:

  • HTTP/0.9: Հիմնական տարբերակ պարզ HTML փաստաթղթերի փոխանցման համար: Միայն GET մեթոդը էր աջակցվում, բացակայում էին գլխագրերը և պատասխանների վիճակները:
  • HTTP/1.0: Ներառեց գլխագրերի (Content-Type, User-Agent), POST և HEAD մեթոդների, ինչպես նաև պատասխանների վիճակների աջակցությունը: Կապը փակվում էր յուրաքանչյուր հարցում/պատասխանից հետո:
  • HTTP/1.1: Կարևոր բարելավումներ՝
    • Տևական կապեր (Persistent Connections) - TCP կապի վերօգտագործում մի քանի հարցումների համար:
    • Պիպելայնինգ - մի քանի հարցում ուղարկել առանց պատասխան սպասելու (չնայած վատ իրականացված և հազվադեպ օգտագործվող):
    • Վիրտուալ հոստեր (Host header):
    • Ա parcial GET հարցումներ (Range header):
    • Քեշավորում (Cache-Control, ETag, Last-Modified):
    • PUT և DELETE մեթոդներ:
  • HTTP/2: Գուգլի SPDY-ի հիման վրա: Հիմնական տարբերությունները՝
    • Բինարային պրոտոկոլ - ավելի արդյունավետ վերլուծում:
    • Մուլտիպլեքսինգ - մի TCP կապի վրա միաժամանակ մի քանի հարցում/պատասխան փոխանցում: Հեռացնում է "head-of-line blocking" խնդիրը HTTP/1.1 pipelining-ում:
    • Հավաքածուի սեղմում (HPACK) - փոխանցվող տվյալների չափի նվազեցում:
    • Առաջնահերթություն (Server Push) - սերվերը կարող է ուղարկել ռեսուրսներ, որոնք հավանական է, որ անհրաժեշտ կլինեն հաճախորդին, նախքան այն խնդրել:
  • HTTP/3: Հիմնված է UDP պրոտոկոլի վրա (QUIC - Quick UDP Internet Connections օգտագործելով) TCP-ի փոխարեն: Նպատակն է բարելավել կատարողականությունը, հատկապես անստաբիլ ցանցերում:
    • Հեռացնում է "head-of-line blocking" TCP կապի մակարդակում: Եթե TCP-ով կորցվի մի փաթեթ, բոլոր հաջորդական փաթեթները բլոկավորվում են մինչև այն կրկին ուղարկելը:
    • Ավելի արագ կապի հաստատում (0-RTT կամ 1-RTT):
    • QUIC-ը իր մեխանիզմներն ունի հոսքի վերահսկման և հուսալիության համար:

Հիմնական տարբերությունները աղյուսակում:

Գծագիր HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3
Պրոտոկոլ TCP TCP TCP UDP (QUIC)
Ֆորմատ Տեքստային Տեքստային Բինարային Բինարային
Դիմումային կապը Կարճաժամկետ Կայուն Կայուն (մուլտիպլեքս) Կայուն (QUIC հոսքեր)
Մուլտիպլեքսինգ Ոչ Նկարագրություն (Pipelining) Այո Այո
Հավաքածուի սեղմում Ոչ Ոչ HPACK QPACK (նաև QUIC-ում)
Սերվեր Push Ոչ Ոչ Այո Այո
HOL բլոկավորում (TCP) Այո (հարցի մակարդակով) Այո (հարցի մակարդակով) Այո (կապի մակարդակով) Ոչ (հոսքի մակարդակով)

HTTP/1.1 հարցման օրինակ:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: curl/7.64.1
Accept: */*

HTTP/2 հարցման օրինակ (կոնցեպտուալ, բինար ձևաչափով):

// Հարցում 1: Ստանալ /index.html
// :method = GET
// :path = /index.html
// :authority = www.example.com

// Հարցում 2: Ստանալ /style.css
// :method = GET
// :path = /style.css
// :authority = www.example.com
// ...համաժամանակ փոխանցվում է մի կապի վրա