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).
- Дархостҳои қисмӣ (Range header).
- Кешгирӣ (Cache-Control, ETag, Last-Modified).
- Методи PUT ва DELETE.
- HTTP/2: Бар асоси SPDY-и Google. Тафовутҳои асосӣ:
- Протоколи бинарӣ - таҳлили муассиртар.
- Мултиплексинг - интиқоли ҳамзамон дархостҳо/ҷавобҳо дар як пайвастагии TCP. Масъалаи "head-of-line blocking" дар HTTP/1.1-ро бартараф мекунад.
- Тӯлроғии сарлавҳаҳо (HPACK) - кам кардани андозаи маълумотҳои интиқолёфта.
- Приоритетгузорӣ (Server Push) - сервер метавонад захираҳоро фиристад, ки эҳтимолан ба мизоҷ ниёз доранд, пеш аз он ки онҳо дархост кунанд.
- HTTP/3: Бар асоси протоколи UDP (бо истифода аз QUIC - Quick UDP Internet Connections) ба ҷои TCP. Ба беҳбуди иҷроиш нигаронида шудааст, махсусан дар шабакаҳои номувофиқ:
- Бартараф кардани "head-of-line blocking" дар сатҳи пайвастагӣ. Агар як баста дар TCP гум шавад, ҳамаи бастаҳои баъдӣ то расонидани дубора блок мешаванд. Дар QUIC (ва HTTP/3) танҳо ҷараён, ки ба баста тааллуқ дорад, блок мешавад.
- Қуръати зудтар барои барқарор кардани пайвастагӣ (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) |
| Server 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
// ...дар як пайвастагӣ параллелӣ