Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 11671|Atsakyti: 1

Http protokolo turinio ilgis

[Kopijuoti nuorodą]
Publikuota: 2019-9-24 16:43:20 | | | |
Įvadas

HTTP protokolas yra vienas iš svarbiausių protokolų internete, nors atrodo paprastas, tačiau praktiškai jis dažnai susiduria su problemomis, su kuriomis susidūrėme kelis kartus. Yra ilgos jungtys ir paketų analizė. Jūs nieko negalite žinoti apie HTTP protokolą, turite jį gerai suprasti. Taigi parašiau šią seriją, kad pasidalinčiau HTTP protokolo problemomis ir patirtimi.



HTTP protokolas turi antraštę ir tekstą tiek užklausos, tiek atsakymo paketams, o kūnas yra šaltinis, kurį norite gauti, pvz., html puslapis, jpeg vaizdas, o antraštė naudojama tam tikroms konvencijoms sukurti. Pavyzdžiui, klientas ir serveris susitaria dėl kai kurių perdavimo formatų, o klientas pirmiausia gauna antraštę, žino tam tikrą formato informaciją ir tada pradeda skaityti tekstą.

Klientas: Accept-Encoding:gzip (suspausti jį man, aš naudoju srautą, atsisiųsti jį pirmą ir tada lėtai išpakuoti)

1 serveris: turinio kodavimas: null (nėra turinio kodavimo antraštės.) Aš neduodu suspaudimo, procesorius nėra nemokamas, ar norite)

2 serveris: turinio kodavimas:gzip (išsaugokite srautą už jus, suspauskite jį)
Klientas: Ryšys: išlaikyti gyvą (Didysis broli, mes pagaliau sukūrėme TCP ryšį, mes jį naudosime kitą kartą)

1 serveris: ryšys: išlaikyti gyvą (nelengva, toliau naudoti)

2 serveris: ryšys: uždaryti (kas ir toliau juo naudosis su jumis, mūsų TCP yra vienkartinis, ir kitą kartą jį surasime turėsime vėl prisijungti)
HTTP protokolas neturi trijų rankų paspaudimų, o kai klientas prašo išteklių iš serverio, pirmenybė teikiama serverio pusei. Taip pat yra keletas antraščių, kurios neturi derybų proceso, tačiau serveris tiesiogiai nurodo klientui, ką daryti. Pavyzdžiui, aukščiau pateiktas turinio ilgis yra tai, ką serveris nurodo klientui, kokio dydžio yra kūnas. Bet! Serveris gali negalėti iš anksto tiksliai pasakyti, kokio dydžio yra kūnas. Serveris pirmiausia turi parašyti antraštę, o tada tekstą, jei norite parašyti kūno raidę antraštėje, turite iš anksto žinoti kūno dydį. Jei tekstas generuojamas dinamiškai, serveris baigs rašyti antraštę, o tai reikalauja daug papildomų išlaidų, todėl antraštėje gali nebūti turinio ilgio.

Taigi, kaip klientas žino kūno dydį? Serveris jums pasako trimis būdais.


1. Serveris jau žino išteklių dydį ir praneša per turinio ilgio antraštę.

Content-Length:1076(body的大小是1076B,你读取1076B就可以完成任务了)

Transfer-Encoding: null


2. Serveris negali iš anksto žinoti išteklių dydžio arba nenori išleisti išteklių, kad iš anksto apskaičiuotų išteklių dydį, todėl prie http atsakymo pranešimo pridės antraštę, pavadintą Transfer-Encoding:chunked, o tai reiškia blokuoti perkėlimą. Kiekvienas blokas naudoja fiksuotą formatą, kurio priekyje yra bloko dydis, už jo esantys duomenys ir paskutinis blokas, kurio dydis yra 0. Tokiu būdu, kai klientas analizuoja, jis turi atkreipti dėmesį į kai kurių nenaudingų laukų pašalinimą.

Content-Length:null

Transfer-Encoding:chunked (接下来的body我要一块一块的传,每一块开始是这一块的大小,等我传到大小为0的块时,就没了)


3. Serveris nežino išteklių dydžio ir nepalaiko fragmentinio perdavimo režimo, todėl nėra nei turinio ilgio antraštės, nei perdavimo kodavimo antraštės. Šiuo metu serverio grąžinta antraštė turi būti uždaryta.

Content-Length:null

Transfer-Encoding:null

Connection:close(我不知道大小,我也用不了chunked,啥时候我关了tcp连接,就说明传输结束了)





Ankstesnis:Išsamus turinio ilgio aiškinimas HTTP protokole
Kitą:HTTP protokolo perdavimas-kodavimas (fragmentas)
Publikuota: 2019-9-24 17:16:57 |
Ačiū, nuomotojas
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com