QUIC (Kurumidza UDP Internet Connections) iprotocol pamusoro peUDP inotsigira ese maficha eTCP, TLS neHTTP/2 uye inogadzirisa mazhinji ematambudziko avo. Inowanzonzi itsva kana "yekuedza" protocol, asi yakagara kwenguva refu nhanho yekuedza: kusimudzira kwave kuenderera kweanopfuura makore manomwe. Munguva iyi, iyo protocol haina kukwanisa kuita chiyero, asi ichiri kupararira. Semuenzaniso, QUIC inoshandiswa nehofori dzakadai seGoogle neFacebook kumhanyisa traffic uye kuderedza kunonoka munharembozha, uye IETF yakazivisa forogo yayo yeprotocol hwaro hweHTTP/7 standard (kunyangwe HTTP/3 inoshandisa.
Concept
QUIC yakagadziridzwa sechitsividzo chenhaka TCP, iyo yakatanga kugadzirirwa yakaderera-kurasikirwa newaya network. TCP inoburitsa mapaketi zvakarongeka, saka kana packet imwe ikarasika, mutsara wese unomiswa (
Sezvo QUIC ichibatanidza kutsiva kweTCP uye kuita kweTLS 1.3, zvese zvinongedzo zvinogara zvakavharirwa, uye kubvisa traffic yakadai hakusi nyore kupfuura dai yaienda pamusoro peHTTPS. Pamusoro pezvo, QUIC inoshandiswa padanho rekunyorera, sekutsiva kwakazara kweTCP stack nekusingaperi.
Pasinei nerutsigiro rwekuwandisa muHTTP/2, dambudziko remusoro-we-line blocking rakaramba riripo nekuda kwekudiwa kwekuendesa mapaketi zvakarongeka. QUIC inoshandiswa pamusoro peUDP, saka haina kuvharira musimboti, uye kudzivirira mapaketi kuti arasikirwe nekusingaperi, akaverengerwa uye anogona kuve nezvikamu zve "vavakidzani," zvichipa redundancy. Pamusoro pezvo, QUIC inotsemura mutsara we monolithic kuita tambo dzakawanda dzemhando dzakasiyana dzezvikumbiro mukati mekubatana kumwe chete. Saka, kana packet yakarasika, matambudziko anogona kumuka kune imwe chete mutsara (somuenzaniso, yekuendesa imwe faira):
Shandisa
Pakutanga, QUIC yakagadziridzwa mukati meGoogle uye yakanyatsogadzirirwa kushandiswa mukati mekambani. Muna 2013, yakaendeswa kuIETF yekuenzanisa (iyo ichiri kuenderera mberi), uye iye zvino munhu wese anogona kutora chikamu mukugadzirwa kweprotocol nekutaura zvavari kushaikwa. Boka rinoshanda reIETF rinoronga misangano yegore panguva iyo chiyero chitsva chinotenderwa uye zvitsva zvinokurukurwa. Kuitwa uku kweQUIC kunoonekwa sechinhu chikuru uye zviri pahwaro hwayo kuti chiyero cheHTTP/3 chinopihwa chitupa.
Parizvino, hapana kutaura nezve kusanganisa HTTP/3 seyo huru protocol, nekuti haisati yapera uye haisati yatsigirwa:
Asi QUIC inogona kuitwa sekufambisa pakati pechishandiso neseva, iyo yakaitwa zvakabudirira paUber:
Matauriro eUber pakuunzwa kweQUIC
Kuti tibudirire kupinza QUIC uye kunatsiridza kushanda kweapp munzvimbo dzakashata dzekubatanidza, takatsiva dura rekare (HTTP/2 pamusoro peTLS/TCP) neQUIC protocol. Takashandisa network library
Cronet kubvaChromium Projects , iyo ine yekutanga, Google vhezheni yeprotocol - gQUIC. Kuita uku kuri kuramba kuchivandudzwa kuti kutevedzere yazvino IETF yakatarwa.Isu takatanga kubatanidza Cronet mune yedu Android apps kuti tiwedzere rutsigiro rweQUIC. Kubatanidzwa kwakaitwa nenzira yekuderedza mari yekufambisa zvakanyanya sezvinobvira. Panzvimbo yekutsiva zvachose iyo yekare networking stack yaishandisa raibhurari
OkHttp , takabatanidza Cronet PASI peOkHttp API framework. Nekuita kusanganisa neiyi nzira, isu takadzivirira shanduko kunetiweki mafoni edu (anoshandiswa neDzorera zvakare ) pachiyero cheAPI.Zvakafanana nemaitiro emidziyo yeAroid, takaisa Cronet muUber maapplication paIOS, tichibata HTTP traffic kubva kunetiweki.
API kushandisaNSURLProtocol . Iyi yekubvisa, yakapihwa neIOS Foundation, inobata data-chaiyo URL data uye inova nechokwadi chekuti tinogona kubatanidza Cronet mune yedu iOS zvikumbiro pasina mutengo wakakura wekufambisa.
kutorwa kubva
Kumashure vakabata QUIC yekubatanidza kuburikidza neGoogle Cloud lb, iyo
Hazvishamisi kuti Google Cloud inoshanda zvikuru neGoogle-yakagadziridzwa protocol, asi ndedzipi dzimwe nzira?
Nginx
Munguva pfupi yapfuura CloudFlare
curl -O https://nginx.org/download/nginx-1.16.1.tar.gz
tar xvzf nginx-1.16.1.tar.gz
git clone --recursive https://github.com/cloudflare/quiche
cd nginx-1.16.1
patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch
Pano iwe unogona kubatanidza mamodules ako kana zvichidikanwa
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
make
Chasara kugonesa HTTP/3 rutsigiro
events {
worker_connections 1024;
}
http {
server {
# Enable QUIC and HTTP/3.
listen 443 quic reuseport;
# Enable HTTP/2 (optional).
listen 443 ssl http2;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
# Enable all TLS versions (TLSv1.3 is required for QUIC).
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
# Request buffering in not currently supported for HTTP/3.
proxy_request_buffering off;
# Add Alt-Svc header to negotiate HTTP/3.
add_header alt-svc 'h3-27=":443"; ma=86400';
}
}
Haisati yave kugona kubatana kuburikidza neHTTP/3 mumabhurawuza enguva dzose, asi unogona kushandisa --enable-quic
, enda kune server yako kana, semuenzaniso, iyo quic.rocks saiti uye tarisa mhando yekubatanidza muDeveloper Tools:
Panzvimbo yeHTTP/3 yakanyorwa http2+quic/99
, asi zvakangofanana.
Mamwe matekinoroji
- QUIC zvakare inotsigira
LiteSpeed (iyo yakabatana neFacebook kuburikidza neHTTP/3 ine huru fanfare) uye inofambira mberiCaddy . Apache haisati yagona kuzviita, asi basa riri kuenderera mberifull swing . - January 21 yakagadziridzwa
dhizaini chiyero cheWebRTC - Rimwe zuva Microsoft yakavhurwa
msquic kushandiswa kodhi , umo asiri mabasa ese kubva kuIETF chiyero achiri kuwanikwa, asi ichi chatova budiriro huru.
mhedziso
Kufarira QUIC hakuna kugadzikana, asi kuri kukura, uye basa riri kuenderera mberi rekuimisa. Kuitwa kutsva kweprotocol kunoonekwa mwedzi wega wega, uye gore rega rega vagadziri vakawanda vanogutsikana kuti QUIC ndiyo ramangwana. Izvo zvinotogoneka kuisa iyo protocol mune ramangwana shanduro dzeTCP stack, izvo zvinoreva kuti nekukurumidza kana gare gare iyo Internet yese ichaenda kune yakagadzikana uye nekukurumidza kubatana.
Parizvino iwe unokwanisa kugadzirisa QUIC kupindirana kwezvivakwa zvako kana kutombozvipa kune mabhurawuza - vese vari kuronga kuwedzera rutsigiro rweprotocol, uye nhamba dzinosiririsa dzine caniuse dzinowedzera kufara.
Source: www.habr.com