溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

HTTP協(xié)議的相關(guān)知識點有哪些

發(fā)布時間:2021-11-10 10:38:37 來源:億速云 閱讀:128 作者:iii 欄目:web開發(fā)

這篇文章主要講解了“HTTP協(xié)議的相關(guān)知識點有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“HTTP協(xié)議的相關(guān)知識點有哪些”吧!

HTTP協(xié)議的相關(guān)知識點有哪些

引言

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。HTTP 是基于 TCP/IP 協(xié)議通信協(xié)議來傳遞數(shù)據(jù)(HTML 文件、圖片文件、查詢結(jié)果等)。它不涉及數(shù)據(jù)包(packet)傳輸,主要規(guī)定了客戶端和服務(wù)器之間的通信格式,默認(rèn)使用80端口。

HTTP協(xié)議的相關(guān)知識點有哪些

一、Http的特點

1、簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、PUT、DELETE、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。

2、靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。

3、無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。

4、無狀態(tài):HTTP協(xié)議是無狀態(tài)的,HTTP 協(xié)議自身不對請求和響應(yīng)之間的通信狀態(tài)進行保存。任何兩次請求之間都沒有依賴關(guān)系。直觀地說,就是每個請求都是獨立的,與前面的請求和后面的請求都是沒有直接聯(lián)系的。協(xié)議本身并不保留之前一切的請求或 響應(yīng)報文的信息。這是為了更快地處理大量事務(wù),確保協(xié)議的可伸縮性,而特意把 HTTP 協(xié)議設(shè)計成如此簡單的。

HTTP協(xié)議的相關(guān)知識點有哪些

二、Http報文

Http報文包括請求報文和響應(yīng)報文兩大部分,其中請求報文由請求行(request line)、請求頭(header)、空行和請求體四個部分組成。而響應(yīng)報文由狀態(tài)行、響應(yīng)頭部、空行和響應(yīng)體四個部分組成。接下來我們詳細(xì)介紹下請求報文的各個部分及其作用。

HTTP協(xié)議的相關(guān)知識點有哪些

1、請求行

用來說明請求類型、要訪問的資源以及所使用的HTTP版本。

POST  /chapter17/user.html HTTP/1.1

以上代碼中 POST 代表請求方法, /chapter17/user.html 表示URI, HTTP/1.1 代表協(xié)議和協(xié)議的版本?,F(xiàn)在比較流行的是Http1.1版本。大家也可以了解下 2.0 :《讓面試官顫抖的 HTTP 2.0 協(xié)議面試題》。

2、請求頭

由關(guān)鍵字 / 值對組成,每行一對,關(guān)鍵字和值用英文冒號“:”分隔。

請求頭部通知服務(wù)器有關(guān)于客戶端請求的信息。它包含許多有關(guān)的客戶端環(huán)境和請求正文的有用信息。其中比如:

  •  Host:表示主機名,虛擬主機。

  •  Connection:HTTP/1.1增加的,使用keepalive,即持久連接,一個連接可以發(fā)多個請求。

  •  User-Agent:請求發(fā)出者,兼容性以及定制化需求。

3、空行

***一個請求頭之后是一個空行,這個行非常重要,它表示請求頭已經(jīng)結(jié)束,接下來的是請求正文。

4、請求體

可以承載多個請求參數(shù)的數(shù)據(jù)。

name=tom&password=1234&realName=tomson

上面代碼,承載著name、password、realName三個請求參數(shù)。

三、HTTP請求方法

  •  GET:請求指定的頁面信息,并返回實體主體。

  •  HEAD:類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭。

  •  POST:向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。

  •  PUT:從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。

  •  DELETE:請求服務(wù)器刪除指定的頁面。

四、GET與POST區(qū)別

  •  GET在瀏覽器回退時是無害的,而POST會再次提交請求。

  •  GET請求會被瀏覽器主動緩存,而POST不會,除非手動設(shè)置。

  •  GET請求參數(shù)會被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會被保留。

  •  GET請求在URL中傳送的參數(shù)是有長度限制的,而POST沒有限制。

  •  GET參數(shù)通過URL傳遞,POST放在Request body中。

五、Http狀態(tài)碼

狀態(tài)代碼有三位數(shù)字組成,***個數(shù)字定義了響應(yīng)的類別,共分五種類別:

  •  1xx:指示信息——表示請求已接收,繼續(xù)處理。

  •  2xx:成功——表示請求已被成功接收、理解、接受。

  •  3xx:重定向——要完成請求必須進行更進一步的操作。

  •  4xx:客戶端錯誤——請求有語法錯誤或請求無法實現(xiàn)。

  •  5xx:服務(wù)器端錯誤——服務(wù)器未能實現(xiàn)合法的請求。

比如我們平時常見兩種出錯的狀態(tài)碼:

403 Forbidden                 //對被請求頁面的訪問被禁止  404 Not Found                 //請求資源不存在,比如:輸入了錯誤的URL

更多看下這篇文章《兩張趣圖助你理解 HTTP 狀態(tài)碼》

六、持久連接

1、為什么需要持久連接

HTTP協(xié)議的初始版本中,每進行一次HTTP通信就要斷開一次TCP連接。以當(dāng)年的通信情況來說,因為都是些容量很小的文本傳輸,所以即使這樣也沒有多大問題??呻S著 HTTP 的 普及,文檔中包含大量圖片的情況多了起來。比如,使用瀏覽器瀏覽一個包含多張圖片的 HTML 頁面時,在發(fā)送請求訪問 HTML 頁面資源的同時,也會請 求該 HTML 頁面里包含的其他資源。因此,每次的請求都會造成無謂的 TCP 連接建立和斷開,增加通信量的 開銷。

HTTP協(xié)議的相關(guān)知識點有哪些

2、持久連接的特點

為解決上述 TCP 連接的問題, HTTP/1.1 和一部分的 HTTP/1.0 想出了持久連接(HTTP Persistent Connections,也稱為 HTTP keep-alive 或 HTTP connection reuse)的方法。持久連接的特點是,只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態(tài)。

HTTP協(xié)議的相關(guān)知識點有哪些

持久連接的好處在于減少了 TCP 連接的重復(fù)建立和斷開所造成的額外開銷,減輕了服務(wù)器端的負(fù)載。另外, 減少開銷的那部分時間,使 HTTP 請求和響應(yīng)能夠更早地結(jié)束,這樣 Web 頁面的顯示速度也就相應(yīng)提高了。

在 HTTP/1.1 中,所有的連接默認(rèn)都是持久連接,但在 HTTP/1.0 內(nèi)并未標(biāo)準(zhǔn)化。雖然有一部分服務(wù)器通過非 標(biāo)準(zhǔn)的手段實現(xiàn)了持久連接,但服務(wù)器端不一定能夠支持持久連接。毫無疑問,除了服務(wù)器端,客戶端也需 要支持持久連接。

七、管線化

持久連接使得多數(shù)請求以管線化(pipelining)方式發(fā)送成為可能。從前發(fā)送請求后需等待并收到響應(yīng),才能 發(fā)送下一個請求。管線化技術(shù)出現(xiàn)后,不用等待響應(yīng)亦可直接發(fā)送下一個請求。

這樣就能夠做到同時并行發(fā)送多個請求,而不需要一個接一個地等待響應(yīng)了。通俗地講,請求打包一次傳輸過去,響應(yīng)打包一次傳遞回來。管線化的前提是在持久連接下。

HTTP協(xié)議的相關(guān)知識點有哪些

假如當(dāng)請求一個包含 10 張圖片的 HTML Web 頁面,與挨個連接相比,用持久連接可以讓請求更快結(jié)束。 而管線化技術(shù)則比持久連接還要快。請求數(shù)越多,時間差就越明顯??蛻舳诵枰埱筮@十個資源。以前的做法是,在同一個TCP連接里面,先發(fā)送A請求,然后等待服務(wù)器做出回應(yīng),收到后再發(fā)出B請求,以此類推,而管道機制則是允許瀏覽器同時發(fā)出這十個請求,但是服務(wù)器還是按照順序,先回應(yīng)A請求,完成后再回應(yīng)B請求。

于是在使用持久連接的情況下,某個連接上消息的傳遞類似于:

請求1 -> 響應(yīng)1 -> 請求2 -> 響應(yīng)2 -> 請求3 -> 響應(yīng)3

管線化方式發(fā)送變成了類似這樣:

請求1 -> 請求2 -> 請求3 -> 響應(yīng)1 -> 響應(yīng)2 -> 響應(yīng)3

感謝各位的閱讀,以上就是“HTTP協(xié)議的相關(guān)知識點有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對HTTP協(xié)議的相關(guān)知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI