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
// ...համաժամանակ փոխանցվում է մի կապի վրա