成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

阿里一面:HTTP 1.0 和 HTTP 1.1 有什么區別?

網絡 無線技術
這篇文章主要從從下面幾個維度來對比 HTTP 1.0 和 HTTP 1.1,我們一起來看。

今天分享一道讀者面試阿里遇到的面試題,還是熱乎的。

這篇文章會從下面幾個維度來對比 HTTP 1.0 和 HTTP 1.1:

  • 響應狀態碼
  • 緩存處理
  • 連接方式
  • Host頭處理
  • 帶寬優化

響應狀態碼

HTTP/1.0僅定義了16種狀態碼。HTTP/1.1中新加入了大量的狀態碼,光是錯誤響應狀態碼就新增了24種。比如說,100 (Continue)?——在請求大資源前的預熱請求,206 (Partial Content)?——范圍請求的標識碼,409 (Conflict)?——請求與當前資源的規定沖突,410 (Gone)——資源已被永久轉移,而且沒有任何已知的轉發地址。

緩存處理

緩存技術通過避免用戶與源服務器的頻繁交互,節約了大量的網絡帶寬,降低了用戶接收信息的延遲。

HTTP/1.0

HTTP/1.0提供的緩存機制非常簡單。服務器端使用Expires?標簽來標志(時間)一個響應體,在Expires?標志時間內的請求,都會獲得該響應體緩存。服務器端在初次返回給客戶端的響應體中,有一個Last-Modified?標簽,該標簽標記了被請求資源在服務器端的最后一次修改。在請求頭中,使用If-Modified-Since?標簽,該標簽標志一個時間,意為客戶端向服務器進行問詢:“該時間之后,我要請求的資源是否有被修改過?”通常情況下,請求頭中的If-Modified-Since?的值即為上一次獲得該資源時,響應體中的Last-Modified的值。

如果服務器接收到了請求頭,并判斷If-Modified-Since?時間后,資源確實沒有修改過,則返回給客戶端一個304 not modified響應頭,表示”緩沖可用,你從瀏覽器里拿吧!”。

如果服務器判斷If-Modified-Since?時間后,資源被修改過,則返回給客戶端一個200 OK的響應體,并附帶全新的資源內容,表示”你要的我已經改過的,給你一份新的”。

圖片圖片

HTTP/1.1

HTTP/1.1的緩存機制在HTTP/1.0的基礎上,大大增加了靈活性和擴展性。基本工作原理和HTTP/1.0保持不變,而是增加了更多細致的特性。其中,請求頭中最常見的特性就是Cache-Control,詳見MDN Web文檔 Cache-Control.

連接方式

HTTP/1.0 默認使用短連接 ,也就是說,客戶端和服務器每進行一次 HTTP 操作,就建立一次連接,任務結束就中斷連接。當客戶端瀏覽器訪問的某個 HTML 或其他類型的 Web 頁中包含有其他的 Web 資源(如 JavaScript 文件、圖像文件、CSS 文件等),每遇到這樣一個 Web 資源,瀏覽器就會重新建立一個TCP連接,這樣就會導致有大量的“握手報文”和“揮手報文”占用了帶寬。

為了解決 HTTP/1.0 存在的資源浪費的問題, HTTP/1.1 優化為默認長連接模式 。 采用長連接模式的請求報文會通知服務端:“我向你請求連接,并且連接成功建立后,請不要關閉”。因此,該TCP連接將持續打開,為后續的客戶端-服務端的數據交互服務。也就是說在使用長連接的情況下,當一個網頁打開完成后,客戶端和服務器之間用于傳輸 HTTP 數據的 TCP 連接不會關閉,客戶端再次訪問這個服務器時,會繼續使用這一條已經建立的連接。

如果 TCP 連接一直保持的話也是對資源的浪費,因此,一些服務器軟件(如 Apache)還會支持超時時間的時間。在超時時間之內沒有新的請求達到,TCP 連接才會被關閉。

有必要說明的是,HTTP/1.0仍提供了長連接選項,即在請求頭中加入Connection: Keep-alive?。同樣的,在HTTP/1.1中,如果不希望使用長連接選項,也可以在請求頭中加入Connection: close,這樣會通知服務器端:“我不需要長連接,連接成功后即可關閉”。

HTTP 協議的長連接和短連接,實質上是 TCP 協議的長連接和短連接。

實現長連接需要客戶端和服務端都支持長連接。

Host頭處理

域名系統(DNS)允許多個主機名綁定到同一個IP地址上,但是HTTP/1.0并沒有考慮這個問題,假設我們有一個資源URL是http://example1.org/home.html,HTTP/1.0的請求報文中,將會請求的是GET /home.html HTTP/1.0.也就是不會加入主機名。這樣的報文送到服務器端,服務器是理解不了客戶端想請求的真正網址。

因此,HTTP/1.1在請求頭中加入了Host?字段。加入Host字段的報文頭部將會是:

GET /home.html HTTP/1.1
Host: example1.org

這樣,服務器端就可以確定客戶端想要請求的真正的網址了。

帶寬優化

范圍請求

HTTP/1.1引入了范圍請求(range request)機制,以避免帶寬的浪費。當客戶端想請求一個文件的一部分,或者需要繼續下載一個已經下載了部分但被終止的文件,HTTP/1.1可以在請求中加入Range?頭部,以請求(并只能請求字節型數據)數據的一部分。服務器端可以忽略Range?頭部,也可以返回若干Range響應。

如果一個響應包含部分數據的話,那么將帶有206 (Partial Content)狀態碼。該狀態碼的意義在于避免了HTTP/1.0代理緩存錯誤地把該響應認為是一個完整的數據響應,從而把他當作為一個請求的響應緩存。

在范圍響應中,Content-Range頭部標志指示出了該數據塊的偏移量和數據塊的長度。

狀態碼100

HTTP/1.1中新加入了狀態碼100?。該狀態碼的使用場景為,存在某些較大的文件請求,服務器可能不愿意響應這種請求,此時狀態碼100可以作為指示請求是否會被正常響應,過程如下圖:

圖片圖片

然而在HTTP/1.0中,并沒有100 (Continue)?狀態碼,要想觸發這一機制,可以發送一個Expect?頭部,其中包含一個100-continue的值。

壓縮

許多格式的數據在傳輸時都會做預壓縮處理。數據的壓縮可以大幅優化帶寬的利用。然而,HTTP/1.0對數據壓縮的選項提供的不多,不支持壓縮細節的選擇,也無法區分端到端(end-to-end)壓縮或者是逐跳(hop-by-hop)壓縮。

HTTP/1.1則對內容編碼(content-codings)和傳輸編碼(transfer-codings)做了區分。內容編碼總是端到端的,傳輸編碼總是逐跳的。

HTTP/1.0包含了Content-Encoding?頭部,對消息進行端到端編碼。HTTP/1.1加入了Transfer-Encoding?頭部,可以對消息進行逐跳傳輸編碼。HTTP/1.1還加入了Accept-Encoding頭部,是客戶端用來指示他能處理什么樣的內容編碼。

總結

  • 連接方式:HTTP 1.0 為短連接,HTTP 1.1 支持長連接。
  • 狀態響應碼:HTTP/1.1中新加入了大量的狀態碼,光是錯誤響應狀態碼就新增了24種。比如說,100 (Continue)?——在請求大資源前的預熱請求,206 (Partial Content)?——范圍請求的標識碼,409 (Conflict)?——請求與當前資源的規定沖突,410 (Gone)——資源已被永久轉移,而且沒有任何已知的轉發地址。
  • 緩存處理:在 HTTP1.0 中主要使用 header 里的 If-Modified-Since,Expires 來做為緩存判斷的標準,HTTP1.1 則引入了更多的緩存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供選擇的緩存頭來控制緩存策略。
  • 帶寬優化及網絡連接的使用:HTTP1.0 中,存在一些浪費帶寬的現象,例如客戶端只是需要某個對象的一部分,而服務器卻將整個對象送過來了,并且不支持斷點續傳功能,HTTP1.1 則在請求頭引入了 range 頭域,它允許只請求資源的某個部分,即返回碼是 206(Partial Content),這樣就方便了開發者自由的選擇以便于充分利用帶寬和連接。
  • Host頭處理:HTTP/1.1在請求頭中加入了Host字段。
責任編輯:趙寧寧 來源: Github喵
相關推薦

2023-11-21 22:23:06

2023-10-20 08:14:21

2025-04-01 08:40:00

HTTPRPC開發

2024-09-04 15:17:23

2022-12-02 13:49:41

2021-01-31 10:54:50

HTTP協議GET

2021-07-20 08:23:49

HTTPWebSocketWeb

2020-10-18 09:42:52

掌握HTTP1.0 1

2022-05-10 08:11:15

MySQL技巧結構

2022-05-11 15:57:16

優化SQL

2025-04-02 08:25:00

Java開發wait

2025-03-24 07:35:00

開發注解Spring

2021-05-12 08:20:53

開發

2023-09-06 12:01:50

HTTP協議信息

2024-05-27 00:40:00

2022-02-27 15:33:22

安全CASBSASE

2021-12-17 14:40:02

while(1)for(;;)語言

2021-05-16 14:26:08

RPAIPACIO

2024-03-05 18:59:59

前端開發localhost
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人a∨高清免费观看 欧美日韩中 | 99精品国产一区二区三区 | 欧美8一10sex性hd | 99久久婷婷国产综合精品电影 | 一本大道久久a久久精二百 国产成人免费在线 | 国产精品一区在线 | 欧美精产国品一二三区 | 国精日本亚洲欧州国产中文久久 | 国产成人高清视频 | 精品国产18久久久久久二百 | 精品欧美一区免费观看α√ | 日本福利在线观看 | 欧美一区二区三区视频在线观看 | 一区二区久久精品 | 国产视频线观看永久免费 | 久久成人国产 | 日本一区二区视频 | 日韩精品一区二区三区中文字幕 | 成人一区二区三区在线 | 国产毛片久久久久久久久春天 | 欧美1级| 9191在线播放| 超碰在线播 | 麻豆毛片 | 中文字幕综合在线 | 成人在线看片 | 91免费在线| 中文字幕免费在线 | 天天拍夜夜爽 | 9999久久| 九九久久免费视频 | 日韩超碰在线 | 91国产精品 | 日本久久一区二区三区 | 亚洲一区 | 久久久久久久久91 | 成人a免费 | 日本福利视频 | 欧美一级观看 | 久久精品一级 | 国产aⅴ精品 |