摘要:狀態行包含表明響應結果的狀態碼,原因短語和版本。這種把實體主體分塊的功能稱為分塊傳輸編碼。如果服務器端無法響應范圍請求,則會返回狀態碼和完整的實體內容。
HTTP 報文內的 HTTP 信息
HTTP 通信過程包括從客戶端發往服務器端的請求及從服務器端返回 客戶端的響應。
一. HTTP報文
用于 HTTP 協議交互的信息被稱為 HTTP 報文。請求端(客戶端)的 HTTP 報文叫做請求報文,響應端(服務器端)的叫做響應報文。 HTTP 報文本身是由多行(用 CR+LF 作換行符)數據構成的字符串文本。
HTTP 報文大致可分為報文首部和報文主體兩塊。兩者由最初出現的空(CR+LF)來劃分。通常,并不一定要有報文主體。
HTTP報文結構:
二. 請求報文及響應報文的結構
請求報文和響應報文的結構:
請求報文和響應報文結構舉例:
請求行:
包含用于請求的方法,請求 URI 和 HTTP 版本。
狀態行
包含表明響應結果的狀態碼,原因短語和 HTTP 版本。
首部字段
包含表示請求和響應的各種條件和屬性的各類首部。
一般有 4 種首部,分別是:通用首部、請求首部、響應首部和實體首部。
其他可能包含 HTTP 的 RFC 里未定義的首部(Cookie 等)。
三. 編碼提升傳輸速率
HTTP 在傳輸數據時可以按照數據原貌直接傳輸,但也可以在傳輸過 程中通過編碼提升傳輸速率。通過在傳輸時編碼,能有效地處理大量 的訪問請求。但是,編碼的操作需要計算機來完成,因此會消耗更多 的 CPU 等資源。
1.報文主體和實體主體的差異:
報文(message): 是 HTTP 通信中的基本單位,由 8 位組字節流(octet sequence, 其中 octet 為 8 個比特)組成,通過 HTTP 通信傳輸。
實體(entity)作為請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。
HTTP 報文的主體用于傳輸請求或響應的實體主體。通常,報文主體等于實體主體。只有當傳輸中進行編碼操作時,實體主體的內容發生變化,才導致它和報文主體產生差異。
2.壓縮傳輸的內容編碼
向待發送郵件內增加附件時,為了使郵件容量變小,我們會先用 ZIP 壓縮文件之后再添加附件發送。HTTP 協議中有一種被稱為內容編碼的功能也能進行類似的操作。內容編碼指明應用在實體內容上的編碼格式,并保持實體信息原樣壓縮。內容編碼后的實體由客戶端接收并負責解碼。
常用的內容編碼有以下幾種。
gzip(GNU zip)
compress(UNIX 系統的標準壓縮)
deflate(zlib)
identity(不進行編碼)
3.分割發送的分塊傳輸編碼
在 HTTP 通信過程中,請求的編碼實體資源尚未全部傳輸完成之前, 瀏覽器無法顯示請求頁面。在傳輸大容量數據時,通過把數據分割成多塊,能夠讓瀏覽器逐步顯示頁面。這種把實體主體分塊的功能稱為分塊傳輸編碼(Chunked Transfer Coding)。
圖例:
分塊傳輸編碼會將實體主體分成多個部分(塊)。每一塊都會用十六進制來標記塊的大小,而實體主體的最后一塊會使用“0(CR+LF)”來標記。
四.發送多種數據的多部分對象集合
發送郵件時,我們可以在郵件里寫入文字并添加多份附件。這是因為采用了MIME(Multipurpose Internet Mail Extensions,多用途因特網郵件擴展)機制,它允許郵件處理文本、圖片、視頻等多個不同類型的數據。例如,圖片等二進制數據以 ASCII 碼字符串編碼的方式指明, 就是利用 MIME 來描述標記數據類型。而在 MIME 擴展中會使用一種稱為多部分對象集合(Multipart)的方法,來容納多份不同類型的數據。
相應地,HTTP 協議中也采納了多部分對象集合,發送的一份報文主體內可含有多類型實體。通常是在圖片或文本文件等上傳時使用。
多部分對象集合包含的對象如下。
multipart/form-data
在 Web 表單文件上傳時使用。
multipart/byteranges
狀態碼 206(Partial Content,部分內容)響應報文包含了多個范圍的內容時使用。
在 HTTP 報文中使用多部分對象集合時,需要在首部字段里加上 Content-type。使用boundary 字符串來劃分多部分對象集合指明的各類實體。在 boundary 字符串指定的各個實體的起始行之前插入“--”標記(例如:-AaB03x、--THIS_STRING_SEPARATES),而在多部分對象集合對 應的字符串的最后插入“--”標記(例如:--AaB03x--、-THIS_STRING_SEPARATES--)作為結束。
多部分對象集合的每個部分類型中,都可以含有首部字段。另外,可 以在某個部分中嵌套使用多部分對象集合。有關多部分對象集合更詳 細的解釋,請參考 RFC2046。
五.獲取部分內容的范圍請求
要實現該功能需要指定下載的實體范圍。像這樣,指定范圍發送的請求叫做范圍請求(Range Request)。
圖示:
解釋:針對范圍請求,響應會返回狀態碼為 206 Partial Content 的響應報文。另外,對于多重范圍的范圍請求,響應會在首部字段 ContentType 標明 multipart/byteranges 后返回響應報文。如果服務器端無法響應范圍請求,則會返回狀態碼 200 OK 和完整的實體內容。
六.內容協商返回最合適的內容
問題:同一個 Web 網站有可能存在著多份相同內容的頁面。比如英語版和中文版的 Web 頁面,它們內容上雖相同,但使用的語言卻不同。
定義:當瀏覽器的默認語言為英語或中文,訪問相同 URI 的 Web 頁面時, 則會顯示對應的英語版或中文版的 Web 頁面。這樣的機制稱為內容協商(Content Negotiation)
圖示:
包含在請求報文中的某些首部字段(如下)就是判斷的基準。
Accept Accept-Charset
Accept-Encoding
Accept-Language
Content-Language
內容協商技術有以下 3 種類型。
服務器驅動協商(Server-driven Negotiation)
由服務器端進行內容協商。以請求的首部字段為參考,在服務器端自 動處理。但對用戶來說,以瀏覽器發送的信息作為判定的依據,并不 一定能篩選出最優內容。
客戶端驅動協商(Agent-driven Negotiation)
由客戶端進行內容協商的方式。用戶從瀏覽器顯示的可選項列表中手 動選擇。還可以利用 JavaScript 腳本在 Web 頁面上自動進行上述選 擇。比如按 OS 的類型或瀏覽器類型,自行切換成 PC 版頁面或手機 版頁面。
透明協商(Transparent Negotiation)
是服務器驅動和客戶端驅動的結合體,是由服務器端和客戶端各自進 行內容協商的一種方法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/115981.html
摘要:二網絡基礎定義是互聯網相關的各類協議族的總稱。這種機制稱為路由選擇,機制如圖所示確保可靠性的協議位于傳輸層,提供可靠的字節流服務。所謂的字節流服務是指,為了方便傳輸,將大塊數據分割成以報文段為單位的數據包進行管理。 了解web和網絡基礎 一.簡單背景介紹: CERN(歐洲核子研究組織)的蒂姆 ? 伯納斯 - 李(Tim BernersLee) 博士提出了一種能讓遠隔兩地的研究者們共享知...
摘要:二網絡基礎定義是互聯網相關的各類協議族的總稱。這種機制稱為路由選擇,機制如圖所示確保可靠性的協議位于傳輸層,提供可靠的字節流服務。所謂的字節流服務是指,為了方便傳輸,將大塊數據分割成以報文段為單位的數據包進行管理。 了解web和網絡基礎 一.簡單背景介紹: CERN(歐洲核子研究組織)的蒂姆 ? 伯納斯 - 李(Tim BernersLee) 博士提出了一種能讓遠隔兩地的研究者們共享知...
摘要:二網絡基礎定義是互聯網相關的各類協議族的總稱。這種機制稱為路由選擇,機制如圖所示確保可靠性的協議位于傳輸層,提供可靠的字節流服務。所謂的字節流服務是指,為了方便傳輸,將大塊數據分割成以報文段為單位的數據包進行管理。 了解web和網絡基礎 一.簡單背景介紹: CERN(歐洲核子研究組織)的蒂姆 ? 伯納斯 - 李(Tim BernersLee) 博士提出了一種能讓遠隔兩地的研究者們共享知...
摘要:緩存服務器是代理服務器的一種,并歸類在緩存代理類型中。若判斷緩存失效,緩存服務器將會再次從源服務器上獲取新資源。另外,和緩存服務器相同的一點是,當判定緩存過期后,會向源服務器確認資源的有效性。 與 HTTP 協作的 Web 服務器 一臺 Web 服務器可搭建多個獨立域名的 Web 網站,也可作為通信路徑上的中轉服務器提升傳輸效率。 一. 用單臺虛擬主機實現多個域名 HTTP/1.1 規...
閱讀 1096·2021-11-24 10:24
閱讀 2583·2021-11-22 13:54
閱讀 992·2021-09-24 09:55
閱讀 3591·2019-08-30 15:54
閱讀 1311·2019-08-30 15:44
閱讀 1089·2019-08-30 14:23
閱讀 3194·2019-08-29 13:45
閱讀 1266·2019-08-29 11:19