Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 11671|Atbildi: 1

Http protokola satura garums

[Kopēt saiti]
Publicēts 2019-9-24 16:43:20 | | | |
priekšvārds

HTTP protokols ir viens no svarīgākajiem protokoliem internetā, lai gan tas šķiet vienkāršs, bet praksē tas bieži saskaras ar problēmām, un mēs ar to esam saskārušies vairākas reizes. Ir gari savienojumi un pakešu parsēšana. Jūs neko nevarat zināt par HTTP protokolu, jums tas ir rūpīgi jāsaprot. Tāpēc es uzrakstīju šo sēriju, lai dalītos ar HTTP protokola problēmām un pieredzi.



HTTP protokolam ir galvene un pamatteksts gan pieprasījuma, gan atbildes paketēm, un pamatteksts ir resurss, kuru vēlaties iegūt, piemēram, html lapa, jpeg attēls, un galvene tiek izmantota, lai izveidotu noteiktas konvencijas. Piemēram, klients un serveris vienojas par dažiem pārraides formātiem, un klients vispirms saņem galveni, zina kādu formāta informāciju un pēc tam sāk lasīt pamattekstu.

Klients: Accept-Encoding:gzip (saspiediet to man, es izmantoju satiksmi, vispirms lejupielādējiet to un pēc tam lēnām izsaiņojiet)

1. serveris: satura kodējums: null (nav satura kodēšanas galvenes.) Es nedodu saspiešanu, CPU nav bezmaksas, vai jūs to vēlaties)

2. serveris: satura kodējums:gzip (saglabājiet trafiku, saspiediet to)
Klients: Savienojums: uzturēt dzīvu (Lielais brālis, mēs beidzot izveidojām TCP savienojumu, mēs to izmantosim nākamreiz)

1. serveris: savienojums: uzturēt dzīvu (nav viegli, turpiniet lietot)

2. serveris: savienojums: aizvērt (Ikviens, kurš turpina to izmantot kopā ar jums, mūsu TCP ir vienreizējs, un nākamreiz, kad to atradīsim, mums būs jāizveido savienojums)
HTTP protokolam nav trīs rokasspiedienu, un, kad klients pieprasa resursus no servera, noteicošā ir servera puse. Ir arī dažas galvenes, kurām nav sarunu procesa, bet serveris tieši norāda klientam, ko darīt. Piemēram, iepriekš minētais satura garums ir tas, ko serveris norāda klientam, cik liels ir ķermenis. Bet! Serveris, iespējams, nevarēs iepriekš pateikt, cik liels ir ķermenis. Serverim vispirms jāraksta galvene un pēc tam ķermenis, ja vēlaties rakstīt ķermeņa korpusu galvenē, jums iepriekš jāzina ķermeņa izmērs. Ja pamatteksts tiek dinamiski ģenerēts, serveris pabeigs un pēc tam sāks rakstīt galveni, kas prasa daudz papildu pieskaitāmo izdevumu, tāpēc galvenē var nebūt satura garuma.

Tātad, kā klients zina ķermeņa izmēru? Serveris jums stāsta trīs veidos.


1. Serveris jau zina resursa lielumu un informē jūs caur satura garuma galveni.

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

Transfer-Encoding: null


2. Serveris nevar iepriekš zināt resursa lielumu vai nevēlas tērēt resursus, lai iepriekš aprēķinātu resursa lielumu, tāpēc tas pievienos galveni http atbildes ziņojumam ar nosaukumu Transfer-Encoding:chunked, kas nozīmē bloķēt pārsūtīšanu. Katrs bloks izmanto fiksētu formātu ar bloka lielumu priekšā, datiem aiz tā un pēc tam pēdējo bloku ar izmēru 0. Tādā veidā, kad klients analizē, tam jāpievērš uzmanība dažu bezjēdzīgu lauku noņemšanai.

Content-Length:null

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


3. Serveris nezina resursa lielumu un neatbalsta sadalītu pārraides režīmu, tāpēc nav ne satura garuma galvenes, ne pārsūtīšanas kodēšanas galvenes. Šajā laikā servera atgrieztajai galvenei jābūt aizvērtai.

Content-Length:null

Transfer-Encoding:null

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





Iepriekšējo:Detalizēta satura garuma interpretācija HTTP protokolā
Nākamo:HTTP protokola pārsūtīšanas kodējums (sadalīts)
Publicēts 2019-9-24 17:16:57 |
Paldies, saimnieks
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com