Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 11671|Odpowiedź: 1

Długość treści protokołu HTTP

[Skopiuj link]
Opublikowano 2019-9-24 16:43:20 | | | |
przedmowa

Protokół HTTP jest jednym z najważniejszych protokołów w Internecie, choć wydaje się prosty, w praktyce często napotyka problemy i spotkaliśmy się z nimi już kilka razy. Są długie połączenia i parsowanie pakietów. Nie możesz nic wiedzieć o protokole HTTP, musisz go dokładnie zrozumieć. Dlatego napisałem tę serię, aby podzielić się problemami i doświadczeniami związanymi z protokołem HTTP.



Protokół HTTP ma nagłówek i treść zarówno pakietów żądań, jak i odpowiedzi, a treść jest zasobem, który chcesz uzyskać, na przykład stroną html, obrazem jpeg, a nagłówek służy do tworzenia określonych konwencji. Na przykład klient i serwer zgadzają się na pewne formaty transmisji, klient najpierw otrzymuje nagłówek, zna pewne informacje o formacie, a następnie zaczyna czytać jego tłówkę.

Klient: Accept-Encoding:gzip (skompresuj to dla mnie, korzystam z ruchu, najpierw pobierz i potem powoli rozpakuj)

Server 1: Content-Encoding: null (Brak nagłówka Content-Encoder). Nie robię kompresji, procesor nie jest darmowy, chcesz go obejmować)

Serwer 2: Kodowanie treści: gzip (zapisz ruch dla ciebie, skompresuj go)
Klient: Połączenie: keep-alive (Bracie, w końcu zbudowaliśmy połączenie TCP, użyjemy go następnym razem)

Serwer 1: Połączenie: utrzymuj życie (niełatwe, dalej używaj)

Serwer 2: Połączenie: zamknięte (Kto nadal z nim korzysta, nasz TCP jest jednorazowy i następnym razem będziemy musieli się połączyć)
Protokół HTTP nie ma trzech uścisków ręki, a gdy klient żąda zasobów od serwera, zwycięża strona serwera. Są też nagłówki, które nie mają procesu negocjacji, ale serwer bezpośrednio mówi klientowi, co ma robić. Na przykład powyższa zawartość i długość to to, co serwer informuje klienta, jak duże jest ciało. Ale! Kelner może nie być w stanie dokładnie powiedzieć, jak duże jest ciało z góry. Serwer musi najpierw zapisać nagłówek, a potem tłów; jeśli chcesz zapisać korpus w nagłówku, musisz znać rozmiar ciała z wyprzedzeniem. Jeśli treść jest generowana dynamicznie, serwer kończy i zaczyna zapisywać nagłówek, co wymaga dużo dodatkowego narzutu, więc może nie być długości treści w nagłówku.

Skąd więc klient zna rozmiar ciała? Serwer mówi to na trzy sposoby.


1. Serwer już zna rozmiar zasobu i informuje Cię przez nagłówek długości treści.

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

Transfer-Encoding: null


2. Serwer nie może znać rozmiaru zasobu z wyprzedzeniem lub nie chce wydawać zasobów na jego obliczenia, więc dodaje nagłówek do wiadomości http o nazwie Transfer-Encoding:chunked, co oznacza transfer bloku. Każdy blok używa stałego formatu, z rozmiarem bloku na początku, danymi za nim, a ostatnim blokiem o rozmiarze 0. W ten sposób, gdy klient analizuje, musi zwracać uwagę na usuwanie niektórych bezużytecznych pól.

Content-Length:null

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


3. Serwer nie zna rozmiaru zasobu i nie obsługuje trybu transmisji w kawałkach, więc nie ma nagłówka długości treści ani nagłówka kodowania transferowego. W tym momencie nagłówek zwracany przez serwer musi być bliski.

Content-Length:null

Transfer-Encoding:null

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





Poprzedni:Szczegółowa interpretacja długości treści w protokole HTTP
Następny:Protokół HTTP Transfer-Encoding (w kawałkach)
Opublikowano 2019-9-24 17:16:57 |
Dziękuję, właścicielu
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com