HTTP 協(xié)議

作者:Gakki

01. HTML 簡(jiǎn)介

  • HTTP 協(xié)議是 Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬(wàn)維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
  • HTTP 是一個(gè)基于 TCP/IP 通信協(xié)議來(lái)傳遞數(shù)據(jù)。HTTP 是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議。
  • HTTP 協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上。瀏覽器作為 HTTP 客戶端通過(guò) URL 向 HTTP 服務(wù)端即 WEB 服務(wù)器發(fā)送所有請(qǐng)求。WEB 服務(wù)器根據(jù)接收到的請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息。

02. 主要特點(diǎn)

  • 簡(jiǎn)單快速:客戶向服務(wù)器發(fā)送請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有:GET、POST、DELETE等。由于 HTTP 協(xié)議簡(jiǎn)單,所以 HTTP 服務(wù)器的程序規(guī)模小,因此通信速度很快。
  • 靈活:HTTP 協(xié)議允許傳輸任意類型的數(shù)據(jù)對(duì)象。傳輸?shù)念愋陀?Content-Type 加以標(biāo)記。
  • 無(wú)連接:限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完請(qǐng)求,并收到客戶的應(yīng)答后,即斷開連接,采用這種方式可以節(jié)省傳輸時(shí)間。但是卻不利于客戶端與服務(wù)器保持會(huì)話連接。
  • 無(wú)狀態(tài):是指協(xié)議對(duì)于事物處理沒(méi)有記憶能力。無(wú)狀態(tài)意味著如果后續(xù)處理需要前面的信息,它必須重新傳遞,這樣就可能導(dǎo)致每次連接傳遞的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí),它的應(yīng)答就比較快速。為了彌補(bǔ)這個(gè)缺點(diǎn),產(chǎn)生了兩個(gè) HTTP 狀態(tài)的技術(shù)。即:Cookie 與 Session 。
  • 支持 B/S 及 C/S 模式

03. URL

  • URL(Uniform Resource Locator):統(tǒng)一資源定位符;負(fù)責(zé)標(biāo)識(shí)萬(wàn)維網(wǎng)上的各種文檔,并使每個(gè)文檔在整個(gè)萬(wàn)維網(wǎng)的范圍內(nèi)具有唯一的標(biāo)識(shí)符 URL。
  • 下面以這個(gè)URL為例,介紹下普通URL的各部分組成:
    http://www.itdecent.cn:80080/u/3f6551b9da15.html?id=312312&page=3#work
    一個(gè)完整的 URL 包括以下部分:
    1. 傳輸協(xié)議:用來(lái)傳輸客戶端和服務(wù)器交互信息的;常用的傳輸協(xié)議:HTTP、HTTPS、FTP;本例中使用的是 HTTPS 協(xié)議。在 " https " 后面的 “ // ” 為分隔符。
    2. 域名:該 URL 的域名部分為“www.itdecent.cn”。一個(gè) URL 中,也可以使用IP地址作為域名使用。
    3. 端口部分:用來(lái)區(qū)分同一臺(tái)服務(wù)器上不同的服務(wù)的標(biāo)識(shí),不同服務(wù)之間一般是不能使用相同的端口號(hào)的。HTTP 端口號(hào) 80;HTTPS 默認(rèn)端口號(hào) 443;FTP 默認(rèn)端口號(hào) 21。跟在域名后面的是端口號(hào),域名和端口之間使用 “ : ” 作為分隔符,端口不是一個(gè) URL 必須的部分,如果省略端口部分,將采用默認(rèn)端口號(hào)。
    4. 路徑:以 “ / ” 字符區(qū)別路徑中的每一個(gè)目錄名稱。
    5. 查詢:以 “ ? ” 為起到,每個(gè)參數(shù)以 “ & ” 隔開,再以 “ = ” 分開參數(shù)名稱與數(shù)據(jù)。
    6. 片段:以 “ # ” 字符為起點(diǎn)。

04. 報(bào)文結(jié)構(gòu)

請(qǐng)求報(bào)文

響應(yīng)報(bào)文
  • HTTP 請(qǐng)求報(bào)文和響應(yīng)報(bào)文都由三個(gè)部分組成,兩種報(bào)文格式的區(qū)別是開始行不同。

GET 請(qǐng)求:

GET /users/3f6551b9da15/courses?page=1&count=10 HTTP/1.1
Host: www.itdecent.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
  • 請(qǐng)求行:請(qǐng)求方法( GET ) + 統(tǒng)一資源標(biāo)識(shí)符( /users/3f6551b9da15/courses?page=1&count=10 ) + 所使用的 HTTP 版本( HTTP/1.1 )。如:GET /users/3f6551b9da15/courses?page=1&count=10 HTTP/1.1。
  • 請(qǐng)求頭部:用來(lái)說(shuō)明服務(wù)器要使用的附加信息。從第二行起為請(qǐng)求頭部。
  • 空行:請(qǐng)求頭部后面的空行是必須的。即使第四部分的請(qǐng)求數(shù)據(jù)為空,也必須有空行。
  • 請(qǐng)求數(shù)據(jù):也叫主體,可以添加任意的其他數(shù)據(jù)。

GET 響應(yīng):

HTTP/1.1 200 OK
Server: Tengine
Date: Tue, 08 Feb 2022 10:14:34 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Content-Encoding: gzip
  • 狀態(tài)行:HTTP 版本 ( HTTP/1.1 ) + 狀態(tài)碼 ( 200 ) + 狀態(tài)碼描述 ( OK ) ;如:HTTP/1.1 200 OK。
  • 響應(yīng)頭部:用來(lái)說(shuō)明客戶端要使用的一些附加信息。字段名 + 冒號(hào) + 值;如:Content-Type: application/json; charset=utf-8。
  • 空行:消息報(bào)文后面的空行是必須的。
  • 響應(yīng)正文:服務(wù)器返回給客戶端的文本信息。

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

  • 最常見(jiàn)的 HTTP 狀態(tài)碼:

    • 200:請(qǐng)求成功
    • 301:資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其他 URL
    • 404:請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在
    • 500:內(nèi)部服務(wù)器錯(cuò)誤
  • HTTP 狀態(tài)碼分類共分為 5 類:

分類 描述
1** 信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作
2** 成功,操作被成功接收并處理
3** 重定向,需要進(jìn)一步的操作已完成請(qǐng)求
4** 客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求
5** 服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤

常見(jiàn)的 HTTP 狀態(tài)碼
HTTP 常用的請(qǐng)求方式、區(qū)別和用途
TCP 連接與釋放相關(guān)的核心問(wèn)題
TCP/IP 三次握手四次分離
HTTP 常用的請(qǐng)求方式、區(qū)別和用途
HTTP和HTTPS協(xié)議?
常見(jiàn)的 HTTP 狀態(tài)碼
GET與POST的區(qū)別?
關(guān)于Token、Session、Cookie的區(qū)別
SSL認(rèn)證與CA認(rèn)證的區(qū)別

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容