網(wǎng)絡(luò)協(xié)議

1. http與https

1.1 什么是超文本

1960年美國(guó)人Ted Nelson構(gòu)思了一種通過計(jì)算機(jī)處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協(xié)議標(biāo)準(zhǔn)架構(gòu)的發(fā)展根基。

超文本是用超鏈接的方法,將各種不同空間的文字信息組織在一起的網(wǎng)狀文本。超文本更是一種用戶界面范式,用以顯示文本及與文本之間相關(guān)的內(nèi)容?,F(xiàn)時(shí)超文本普遍以電子文檔方式存在,其中的文字包含有可以鏈結(jié)到其他位置或者文檔的連結(jié),允許從當(dāng)前閱讀位置直接切換到超文本連結(jié)所指向的位置。

1.2 http協(xié)議

HTTP(HyperText Transport Protocol)是超文本傳輸協(xié)議的縮寫,它用于傳送WWW方式的數(shù)據(jù)。

超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的

是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。

1.3 http與https基本概念

HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個(gè)客戶端和服務(wù)器端請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。

HTTPS:是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版,即HTTP下加入SSL(Secure Sockets Layer)層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。

HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?;另一種就是確認(rèn)網(wǎng)站的真實(shí)性。

1.4 http與https的區(qū)別

簡(jiǎn)單來說,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全。區(qū)別主要如下:

1、https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。

2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。

3、http和https使用的是完全不同的連接方式,用的默認(rèn)端口也不一樣,前者是80,后者是443。

4、http的連接很簡(jiǎn)單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。

2. http請(qǐng)求的組成

從客戶端到服務(wù)器端的請(qǐng)求消息,信息由4部分組成請(qǐng)求行、消息報(bào)頭、空行、請(qǐng)求正文

2.1 請(qǐng)求行(請(qǐng)求方法URI協(xié)議/版本)

請(qǐng)求的第一行是“方法URI協(xié)議/版本”例如:GET/sample.jsp HTTP/1.1

以上代碼中“GET”代表請(qǐng)求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協(xié)議和協(xié)議的版本。

2.2 消息報(bào)頭(請(qǐng)求頭Request Header)

請(qǐng)求頭包含許多有關(guān)的客戶端環(huán)境和請(qǐng)求正文的有用信息。例如,請(qǐng)求頭可以聲明瀏覽器所用的語(yǔ)言,請(qǐng)求正文的長(zhǎng)度等。例如:

Accept:image/gif.image/jpeg./(請(qǐng)求的圖片內(nèi)容格式)

Accept-Language:zh-cn(zh-CN 是表示中文,fr-FR 是表示法語(yǔ)。 這是RFC1766定義的語(yǔ)言表示方式)

Connection:Keep-Alive(又稱持久連接、連接重用,Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí),Keep-Alive功能避免了建立或者重新建立連接。)

Host:localhost(主機(jī)名字)

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)(客戶端身份信息)

Accept-Encoding:gzip,deflate(? 以壓縮格式接收請(qǐng)求數(shù)據(jù))

2.3 空行

必須有,發(fā)送回車符和換行符,通知服務(wù)器以下不再有請(qǐng)求頭

2.4 請(qǐng)求正文(body)

請(qǐng)求頭和請(qǐng)求正文之間是一個(gè)空行,這個(gè)行非常重要,它表示請(qǐng)求頭已經(jīng)結(jié)束,接下來的是請(qǐng)求正文。請(qǐng)求正文中可以包含客戶提交的查詢字符串信息:

username=jinqiao&password=1234

在以上的例子的HTTP請(qǐng)求中,請(qǐng)求的正文只有一行內(nèi)容。當(dāng)然,在實(shí)際應(yīng)用中,HTTP請(qǐng)求正文可以包含更多的內(nèi)容。

案例

請(qǐng)求案例.png

4. 請(qǐng)求方法

5. http響應(yīng)格式

從服務(wù)器端到客戶器端的響應(yīng)信息,信息由4部分組成:狀態(tài)行、消息報(bào)頭、空行、響應(yīng)正文。

響應(yīng)格式.png

5.1 狀態(tài)行

HTTP-1.1 Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描述。

例如:HTTP/1.1 200 OK? \r\n

狀態(tài)碼

當(dāng)瀏覽者訪問一個(gè)網(wǎng)頁(yè)時(shí),瀏覽者的瀏覽器會(huì)向網(wǎng)頁(yè)所在服務(wù)器發(fā)出請(qǐng)求。當(dāng)瀏覽器接收并顯示網(wǎng)頁(yè)前,此網(wǎng)頁(yè)所在的服務(wù)器會(huì)返回一個(gè)包含HTTP狀態(tài)碼的信息頭(server header)用以響應(yīng)瀏覽器的請(qǐng)求。

HTTP狀態(tài)碼的英文為HTTP Status Code。

下面是常見的HTTP狀態(tài)碼:

HTTP狀態(tài)碼分類

HTTP狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個(gè)數(shù)字沒有分類的作用。HTTP狀態(tài)碼共分為5種類型:

HTTP狀態(tài)碼列表:

5.2 消息報(bào)頭

服務(wù)器傳遞給客戶端用于說明服務(wù)器的一些信息,以及將來繼續(xù)訪問該資源時(shí)的策略。

Location:Location響應(yīng)報(bào)頭域用于重定向接受者到一個(gè)新的位置。Server:Server響應(yīng)報(bào)頭域包含了服務(wù)器用來處理請(qǐng)求的軟件信息。?WWW-Authenticate:WWW-Authenticate響應(yīng)報(bào)頭域必須被包含在401(未授權(quán)的)響應(yīng)消息中下面是WWW-Authenticate響應(yīng)報(bào)頭域的一個(gè),例子:WWW-Authenticate: Basic realm="Basic Auth Test!“Content-Encoding:Content-Encoding實(shí)體報(bào)頭域被使用作媒體類型的修飾符.Content-Language:Content-Language實(shí)體報(bào)頭域描述了資源所用的自然語(yǔ)言。Content-Length:? Content-Length實(shí)體報(bào)頭域用于指明正文的長(zhǎng)度.Content-Type:Content-Type實(shí)體報(bào)頭域用語(yǔ)指明發(fā)送給接收者的實(shí)體正文的媒體類型。Last-Modified:Last-Modified實(shí)體報(bào)頭域用于指示資源最后的修改日期及時(shí)間。Expires: Expires實(shí)體報(bào)頭域給出響應(yīng)過期的日期和時(shí)間。Expires實(shí)體報(bào)頭域使用的日期和時(shí)間必須是RFC 1123中的日期格式,例如:?Expires: Thu, 15 Sep 2005 16:00:00 GMT

5.3 響應(yīng)正文

服務(wù)端返回給客戶端的HTML文本內(nèi)容,或者其他格式的數(shù)據(jù),比如:視頻流、圖片或者音頻數(shù)據(jù)。

如果請(qǐng)求的是HTML頁(yè)面,那么返回的就是HTML代碼。如果是JS就是JS代碼。

響應(yīng)案例.png

6. http協(xié)議的各版本


HTTP/1.1與HTTP/1.0的區(qū)別

1、persistent connection(持久連接)

HTTP/1.0中,每對(duì)請(qǐng)求/ 響應(yīng)都使用一個(gè)新的連接。

HTTP/1.1則支持持久連接(默認(rèn))。

2、Host域

HTTP/1.1在請(qǐng)求消息頭多一個(gè)Host域;HTTP/1.0? 則沒有這個(gè)域,建立TCP連接的時(shí)候已經(jīng)指定了IP地址,而且默認(rèn)一個(gè)IP地址只對(duì)應(yīng)一個(gè)主機(jī)名,IP地址上只有一個(gè)host。

3、.帶寬優(yōu)化

HTTP/1.1加入了一個(gè)新的狀態(tài)碼100(Continue)??蛻舳耸孪劝l(fā)送一個(gè)只帶頭域的請(qǐng)求,如果服務(wù)器因?yàn)闄?quán)限拒絕了請(qǐng)求,就回送響應(yīng)碼 401(Unauthorized)

4、請(qǐng)求方法和狀態(tài)碼

HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT這些Request方法。

在HTTP/1.1中新增了24個(gè)狀態(tài)響應(yīng)碼,如409(Conflict)表示請(qǐng)求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示服務(wù)器上的某個(gè)資源被永久性的刪除。

?著作權(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)容