偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

阿里一面:HTTP 1.0 和 HTTP 1.1 有什么區(qū)別?

網(wǎng)絡(luò) 無線技術(shù)
這篇文章主要從從下面幾個(gè)維度來對比 HTTP 1.0 和 HTTP 1.1,我們一起來看。

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

這篇文章會(huì)從下面幾個(gè)維度來對比 HTTP 1.0 和 HTTP 1.1:

  • 響應(yīng)狀態(tài)碼
  • 緩存處理
  • 連接方式
  • Host頭處理
  • 帶寬優(yōu)化

響應(yīng)狀態(tài)碼

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

緩存處理

緩存技術(shù)通過避免用戶與源服務(wù)器的頻繁交互,節(jié)約了大量的網(wǎng)絡(luò)帶寬,降低了用戶接收信息的延遲。

HTTP/1.0

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

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

如果服務(wù)器判斷If-Modified-Since?時(shí)間后,資源被修改過,則返回給客戶端一個(gè)200 OK的響應(yīng)體,并附帶全新的資源內(nèi)容,表示”你要的我已經(jīng)改過的,給你一份新的”。

圖片圖片

HTTP/1.1

HTTP/1.1的緩存機(jī)制在HTTP/1.0的基礎(chǔ)上,大大增加了靈活性和擴(kuò)展性?;竟ぷ髟砗虷TTP/1.0保持不變,而是增加了更多細(xì)致的特性。其中,請求頭中最常見的特性就是Cache-Control,詳見MDN Web文檔 Cache-Control.

連接方式

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

為了解決 HTTP/1.0 存在的資源浪費(fèi)的問題, HTTP/1.1 優(yōu)化為默認(rèn)長連接模式 。 采用長連接模式的請求報(bào)文會(huì)通知服務(wù)端:“我向你請求連接,并且連接成功建立后,請不要關(guān)閉”。因此,該TCP連接將持續(xù)打開,為后續(xù)的客戶端-服務(wù)端的數(shù)據(jù)交互服務(wù)。也就是說在使用長連接的情況下,當(dāng)一個(gè)網(wǎng)頁打開完成后,客戶端和服務(wù)器之間用于傳輸 HTTP 數(shù)據(jù)的 TCP 連接不會(huì)關(guān)閉,客戶端再次訪問這個(gè)服務(wù)器時(shí),會(huì)繼續(xù)使用這一條已經(jīng)建立的連接。

如果 TCP 連接一直保持的話也是對資源的浪費(fèi),因此,一些服務(wù)器軟件(如 Apache)還會(huì)支持超時(shí)時(shí)間的時(shí)間。在超時(shí)時(shí)間之內(nèi)沒有新的請求達(dá)到,TCP 連接才會(huì)被關(guān)閉。

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

HTTP 協(xié)議的長連接和短連接,實(shí)質(zhì)上是 TCP 協(xié)議的長連接和短連接。

實(shí)現(xiàn)長連接需要客戶端和服務(wù)端都支持長連接。

Host頭處理

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

因此,HTTP/1.1在請求頭中加入了Host?字段。加入Host字段的報(bào)文頭部將會(huì)是:

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

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

帶寬優(yōu)化

范圍請求

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

如果一個(gè)響應(yīng)包含部分?jǐn)?shù)據(jù)的話,那么將帶有206 (Partial Content)狀態(tài)碼。該狀態(tài)碼的意義在于避免了HTTP/1.0代理緩存錯(cuò)誤地把該響應(yīng)認(rèn)為是一個(gè)完整的數(shù)據(jù)響應(yīng),從而把他當(dāng)作為一個(gè)請求的響應(yīng)緩存。

在范圍響應(yīng)中,Content-Range頭部標(biāo)志指示出了該數(shù)據(jù)塊的偏移量和數(shù)據(jù)塊的長度。

狀態(tài)碼100

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

圖片圖片

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

壓縮

許多格式的數(shù)據(jù)在傳輸時(shí)都會(huì)做預(yù)壓縮處理。數(shù)據(jù)的壓縮可以大幅優(yōu)化帶寬的利用。然而,HTTP/1.0對數(shù)據(jù)壓縮的選項(xiàng)提供的不多,不支持壓縮細(xì)節(jié)的選擇,也無法區(qū)分端到端(end-to-end)壓縮或者是逐跳(hop-by-hop)壓縮。

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

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

總結(jié)

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

2023-11-21 22:23:06

2023-10-20 08:14:21

2025-04-01 08:40:00

HTTPRPC開發(fā)

2024-09-04 15:17:23

2022-12-02 13:49:41

2021-01-31 10:54:50

HTTP協(xié)議GET

2021-07-20 08:23:49

HTTPWebSocketWeb

2020-10-18 09:42:52

掌握HTTP1.0 1

2022-05-10 08:11:15

MySQL技巧結(jié)構(gòu)

2022-05-11 15:57:16

優(yōu)化SQL

2025-04-02 08:25:00

Java開發(fā)wait

2025-03-24 07:35:00

開發(fā)注解Spring

2021-05-12 08:20:53

開發(fā)

2023-09-06 12:01:50

HTTP協(xié)議信息

2022-09-07 18:32:57

并發(fā)編程線程

2020-03-09 20:56:19

LoRaLoRaWAN無線技術(shù)

2020-11-09 14:07:53

PyQtQt編程

2022-06-06 14:53:02

LoRaLoRaWAN

2022-09-08 18:38:26

LinuxWindowsmacOS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)