Sobes.tech
Middle

Ի՞նչ է տարբերությունը HTTP/1 և HTTP/2-ի միջև։

sobes.tech AI

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

Հիմնական տարբերությունները՝

  • Մուլտիպլեքսավորում (Multiplexing): HTTP/2-ը թույլ է տալիս միաժամանակ ուղարկել և ստանալ մի քանի հարցումներ և պատասխաններ մեկ TCP կապի միջոցով։ HTTP/1.1-ը պահանջում էր առանձին կապ յուրաքանչյուր հարցման/պատասխանին (բացառությամբ pipelining մեխանիզմի, որը սահմանափակումներ ուներ):
  • Հետագրեր (Header Compression): HTTP/2-ը օգտագործում է HPACK ալգորիթմը՝ հետագրերը սեղմելու համար՝ դրանց չափը և փոխանցվող տվյալների քանակը նվազեցնելու համար։ HTTP/1.1-ում հետագրերը ուղարկվում են տեքստային տեսքով:
  • Հոսքերի առաջնահերթություն (Stream Prioritization): HTTP/2-ում հաճախորդը կարող է նշանակել տարբեր հոսքերի (հարցումների/պատասխանների) առաջնահերթությունը, ինչը թույլ է տալիս սերվերին օպտիմալացնել տվյալների մատակարարման կարգը։ HTTP/1.1-ը նման մեխանիզմ չունի:
  • Սերվերի մղում (Server Push): HTTP/2-ը թույլ է տալիս սերվերին ուղարկել ռեսուրսներ հաճախորդին առանց այն պահանջելու, հիմնվելով ենթադրության՝ դրանք անհրաժեշտ են էջի ցուցադրման համար։ HTTP/1.1-ում հաճախորդը պետք է հստակ պահանջի յուրաքանչյուր ռեսուրսը:
  • Ֆրեյմերի ձևաչափ (Binary Framing): HTTP/2-ը տվյալները փոխանցում է բինարային ձևաչափով (ֆրեյմեր), ինչը հեշտացնում է վերլուծությունը և բարձրացնում է արդյունավետությունը՝ համեմատած HTTP/1.1-ի տեքստային ձևաչափի:

Տեղեկատվության համեմատական աղյուսակ՝

Գծանշան HTTP/1.1 HTTP/2
Կապ Մի կապ՝ յուրաքանչյուր հարցման համար (առանց pipelining) Մի կապ՝ մի քանի հոսքերի համար
Մուլտիպլեքսավորում Չկա (կամ սահմանափակ pipelining) Այո
Հետագրերի սեղմում Չկա HPACK (բինարային սեղմում)
Հոսքերի առաջնահերթություն Չկա Այո
Սերվերի մղում Չկա Այո
Տվյալների ձևաչափ Տեքստ Բինարային (ֆրեյմեր)
Head-of-Line արգելք Կան (նաև՝ մուլտիպլեքսավորման միջոցով որոշակիորեն) Կես-կես լուծվում է մուլտիպլեքսավորմամբ

Նմուշ HTTP/1.1 հարցում:

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

Նմուշ HTTP/2 տվյալների մասշտաբային ներկայացումից (փոխանակումը ֆրեյմերի ավելի բարդ է և չի ցուցադրվում այդպես պարզ):

// HTTP/2-ում փոխազդեցությունը տեղի է ունենում ֆրեյմերի մակարդակով (HEADERS, DATA և այլն),
// որոնք բինարային են և թաքնված են օգտագործողի համար:
// Դրանք ներկայացնելը պարզ տեքստով շատ բարդ է:
// Հետագրերը սեղմվում են և փոխանցվում HEADERS ֆրեյմերում:
// Պատասխան մարմինը փոխանցվում է DATA ֆրեյմերով: