首篇、簡(jiǎn)單的HTTP協(xié)議

1 、http協(xié)議用于客戶端和服務(wù)端的通信

看圖說(shuō)話

在應(yīng)用HTTP協(xié)議的時(shí),必定有一端擔(dān)任客戶端角色,另一端擔(dān)任服務(wù)端角色

請(qǐng)求和響應(yīng)

請(qǐng)求(request)必定是由客戶端發(fā)出,而服務(wù)器端回復(fù)響應(yīng)(respone)

2、http是無(wú)狀態(tài)協(xié)議

首先我們需要理解下這里的無(wú)狀態(tài)的含義是:http是一種不保存狀態(tài),即http協(xié)議自身不對(duì)請(qǐng)求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存,啦啦,還是看圖吧

無(wú)狀態(tài)協(xié)議

HTTP協(xié)議自身不具備保存之前發(fā)送過(guò)的請(qǐng)求或響應(yīng)的功能

當(dāng)我們使用http協(xié)議的時(shí)候,每次有新的請(qǐng)求發(fā)送,就會(huì)有對(duì)應(yīng)新的響應(yīng)產(chǎn)生。協(xié)議本身并不保留之前一切的請(qǐng)求或者響應(yīng)的報(bào)文信息。這是為了更快的處理大量事務(wù),確保了協(xié)議的可伸展性,而將http協(xié)議設(shè)計(jì)的這樣的簡(jiǎn)單

3、請(qǐng)求URI定位資源

其實(shí)這里將URI理解為URL我覺(jué)得也是可以的,因?yàn)椴┛偷膶?xiě)作主要參考《圖解HTTP》這本書(shū),為了保持一致性,我還是使用URI來(lái)定位資源,關(guān)于URL和URI的區(qū)別,建議可以參考下知乎上的這個(gè)問(wèn)答:https://www.zhihu.com/question/21950864

客戶端使用URI定位資源

HTTP協(xié)議使用URI讓客戶端定位到資源

以請(qǐng)求http://hackr.com/index.html作為請(qǐng)求的例子

GET /index.html  HTTP/1.1
Host: hackr.com

這里GET是請(qǐng)求方法,host是請(qǐng)求的主機(jī)名(服務(wù)器),index.html是對(duì)應(yīng)主機(jī)上的資源,HTTP/1.1是協(xié)議

4、告知服務(wù)器意圖的HTTP方法

下面的表列舉了HTTP/1.0和HTTP/1.1的方法


請(qǐng)求方法

目前大多數(shù)WEB應(yīng)用都是采用的HTTP/1.1中可使用的方法 下面會(huì)重點(diǎn)介紹一下HTTP/1.1中的7個(gè)基本請(qǐng)求方法

GET: 獲取資源
GET
  • 請(qǐng)求
GET /index.html HTTP/1.1
Host: www.hacker.com
  • 響應(yīng): 返回index.html的頁(yè)面資源
POST: 傳輸實(shí)體主體

POST方法主要用來(lái)傳輸實(shí)體主體,GET方法也可以用來(lái)傳輸實(shí)體的主體,但一般不采用;雖然POST方法和GET方法功能很相似,但POST主要目的也不是用來(lái)獲取響應(yīng)的主體內(nèi)容。


POST方法
  • 請(qǐng)求
POST /submit.cgi  HTTP/1.1
Host: www.hacker.com
Content-Length: 1560(1560字節(jié)數(shù)據(jù))
  • 響應(yīng): 返回submit.cgi接受數(shù)據(jù)的處理結(jié)果

PUT: 傳輸文件
PUT方法用來(lái)傳輸文件,要求在請(qǐng)求報(bào)文的主體中包含文件內(nèi)容,然后保存到請(qǐng)求URI指定的位置。

PUT方法

  • 請(qǐng)求
PUT  /example.html HTTP/1.1
Host: www.hacker.com
Content-Type: text/html
Content-Length: 1560 (1560字節(jié)的數(shù)據(jù))
  • 響應(yīng):響應(yīng)是請(qǐng)求執(zhí)行成功了,但無(wú)數(shù)據(jù)返回;響應(yīng)返回狀態(tài)碼204 No Content

HEAD:  獲取報(bào)文首部
HEAD方法和GET方法一樣,只是不返回報(bào)文主體部分。 用于確認(rèn)URI的有效性及資源更新的日期時(shí)間

HEAD方法

GET一樣,但不返回報(bào)文主體

  • 請(qǐng)求
HEAD /index.html HTTP/1.1
Host: www.hacker.com
  • 響應(yīng):返回index.html有關(guān)的響應(yīng)首部

DELETE: 刪除文件

DELETEf方法

  • 請(qǐng)求
DELETE /example.html HTTP/1.1
Host: www.hacker.com
  • 響應(yīng):響應(yīng)返回狀態(tài)碼204(該html已從該服務(wù)器上刪除)

OPTIONS: 詢問(wèn)支持的方法

OPTIONS

OPTIONS方法用來(lái)查詢針對(duì)請(qǐng)求URI指定的資源支持的方法

  • 請(qǐng)求
OPTIONS * HTTP/1.1
Host: www.hacker.com
  • 響應(yīng)
HTTP/1.1 200 OK
Allow: GET, POST, HEAD,OPTIONS
(返回服務(wù)器支持的方法)

TRACE: 追蹤路徑(用的很少)
trace方法是讓W(xué)eb服務(wù)器端之前的請(qǐng)求通信返回給客戶端的方法.

TRACE
  • 請(qǐng)求:
TRACE  /HTTP/1.1
Host: hacker.com
Max-Forwards: 2
  • 響應(yīng):
HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 1024

TRACE /HTTP/1.1
Host: hacker.com
Max-Forwards: 2 (返回的響應(yīng)包含請(qǐng)求內(nèi)容)

發(fā)送請(qǐng)求時(shí),在Max-Forwards首部字段中填入數(shù)值,每次經(jīng)過(guò)一個(gè)服務(wù)器端就將該數(shù)字減1,當(dāng)數(shù)值剛好減到0時(shí),就停止繼續(xù)傳輸; 最后接受到請(qǐng)求的服務(wù)器端則返回狀態(tài)碼200 OK的響應(yīng)

CONNECT:要求用隧道協(xié)議連接代理
CONNECT方法要求與代理服務(wù)器通信時(shí)建立隧道,實(shí)現(xiàn)用隧道協(xié)議進(jìn)行TCP通信。

CONNECTf方法

CONNECT方法格式
CONNECT 代理服務(wù)器名:端口號(hào) HTTP版本

  • 請(qǐng)求
CONNECT proxy.hacker.com:8080  HTTP/1.1
Host: proxy.hacker.com
  • 響應(yīng)
HTTP/1.1 200 OK(之后進(jìn)入網(wǎng)絡(luò)隧道)
5、 總結(jié)

上面主要寫(xiě)了一個(gè)簡(jiǎn)單的HTTP協(xié)議的進(jìn)行分析,重點(diǎn)列舉了客戶端向服務(wù)端發(fā)起請(qǐng)求的方法(以HTTP/1.1版本為主),下篇將重點(diǎn)寫(xiě)HTTP狀態(tài)碼。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 本篇文章篇幅比較長(zhǎng),先來(lái)個(gè)思維導(dǎo)圖預(yù)覽一下。 一、概述 1.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 56,202評(píng)論 24 557
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族,HTTP屬于它內(nèi)部的一個(gè)子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,609評(píng)論 0 20
  • HTTP概述 超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最...
    曹淵說(shuō)創(chuàng)業(yè)閱讀 3,954評(píng)論 2 61
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,553評(píng)論 19 139
  • 正所謂沒(méi)有記錄就沒(méi)有發(fā)生,今天是星期一,清晨5:32起床,換上了跑鞋和運(yùn)動(dòng)裝,5:40出門(mén),5:45來(lái)到小區(qū)的籃球...
    木子馠閱讀 155評(píng)論 0 0

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