1.什么是http協(xié)議
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ò)傳輸減少。
超文本傳輸協(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è)面的方法挟纱。
HTTP協(xié)議一般用于B/S架構(gòu)()羞酗。瀏覽器作為HTTP客戶端通過(guò)URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請(qǐng)求。
2.什么是https協(xié)議
HTTPS(HyperText Transfer Protocol over Secure Socket Layer):是以安全為目標(biāo)的HTTP通道紊服,簡(jiǎn)單講是HTTP的安全版檀轨,即HTTP+SSL /TLS,HTTPS的安全基礎(chǔ)是SSL围苫,因此加密的詳細(xì)內(nèi)容就需要SSL裤园。?
3.http與https的區(qū)別
HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議剂府,要比http協(xié)議安 全。
1剃盾、https協(xié)議需要到ca申請(qǐng)證書(shū)腺占,一般免費(fèi)證書(shū)較少,因而需要一定費(fèi)用痒谴。
2衰伯、http是超文本傳輸協(xié)議,信息是明文傳輸积蔚,https則是具有安全性的ssl加密傳輸協(xié)議意鲸。
3、http和https使用的是完全不同的連接方式尽爆,用的默認(rèn)端口也不一樣怎顾,前者是80,后者是443漱贱。
4槐雾、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的幅狮;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸募强、身份認(rèn)證
4.http請(qǐng)求的組成
5.消息報(bào)頭
請(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ù))
6.請(qǐng)求正文
請(qǐng)求頭和請(qǐng)求正文之間是一個(gè)空行品追,這個(gè)行非常重要玄括,它表示請(qǐng)求頭已經(jīng)結(jié)束,接下來(lái)的是請(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)容。
7.請(qǐng)求方法
8.http響應(yīng)格式
9.響應(yīng)狀態(tài)碼
10.HTTP/2.0,1.1,1.0的區(qū)別
HTTP1.0最早在網(wǎng)頁(yè)中使用是在1996年鲫趁,那個(gè)時(shí)候只是使用一些較為簡(jiǎn)單的網(wǎng)頁(yè)上和網(wǎng)絡(luò)請(qǐng)求上斯嚎,而HTTP1.1則在1999年才開(kāi)始廣泛應(yīng)用于現(xiàn)在的各大瀏覽器網(wǎng)絡(luò)請(qǐng)求中,同時(shí)HTTP1.1也是當(dāng)前使用最為廣泛的HTTP協(xié)議挨厚。 主要區(qū)別主要體現(xiàn)在:
緩存處理堡僻,在HTTP1.0中主要使用header里的If-Modified-Since,Expires來(lái)做為緩存判斷的標(biāo)準(zhǔn),HTTP1.1則引入了更多的緩存控制策略例如Entity tag疫剃,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來(lái)控制緩存策略钉疫。
帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用,HTTP1.0中巢价,存在一些浪費(fèi)帶寬的現(xiàn)象牲阁,例如客戶端只是需要某個(gè)對(duì)象的一部分,而服務(wù)器卻將整個(gè)對(duì)象送過(guò)來(lái)了壤躲,并且不支持?jǐn)帱c(diǎn)續(xù)傳功能城菊,HTTP1.1則在請(qǐng)求頭引入了range頭域,它允許只請(qǐng)求資源的某個(gè)部分柒爵,即返回碼是206(Partial Content)役电,這樣就方便了開(kāi)發(fā)者自由的選擇以便于充分利用帶寬和連接。
錯(cuò)誤通知的管理棉胀,在HTTP1.1中新增了24個(gè)錯(cuò)誤狀態(tài)響應(yīng)碼法瑟,如409(Conflict)表示請(qǐng)求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示服務(wù)器上的某個(gè)資源被永久性的刪除唁奢。
Host頭處理霎挟,在HTTP1.0中認(rèn)為每臺(tái)服務(wù)器都綁定一個(gè)唯一的IP地址,因此麻掸,請(qǐng)求消息中的URL并沒(méi)有傳遞主機(jī)名(hostname)酥夭。但隨著虛擬主機(jī)技術(shù)的發(fā)展,在一臺(tái)物理服務(wù)器上可以存在多個(gè)虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個(gè)IP地址熬北。HTTP1.1的請(qǐng)求消息和響應(yīng)消息都應(yīng)支持Host頭域疙描,且請(qǐng)求消息中如果沒(méi)有Host頭域會(huì)報(bào)告一個(gè)錯(cuò)誤(400 Bad Request)。
長(zhǎng)連接讶隐,HTTP 1.1支持長(zhǎng)連接(PersistentConnection)和請(qǐng)求的流水線(Pipelining)處理起胰,在一個(gè)TCP連接上可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲巫延,在HTTP1.1中默認(rèn)開(kāi)啟Connection: keep-alive效五,一定程度上彌補(bǔ)了HTTP1.0每次請(qǐng)求都要?jiǎng)?chuàng)建連接的缺點(diǎn)
11.HTTP2.0和HTTP1.X相比的新特性
新的二進(jìn)制格式(Binary Format),HTTP1.x的解析是基于文本炉峰∥费基于文本協(xié)議的格式解析存在天然缺陷,文本的表現(xiàn)形式有多樣性,要做到健壯性考慮的場(chǎng)景必然很多,二進(jìn)制則不同床绪,只認(rèn)0和1的組合∑滓牵基于這種考慮HTTP2.0的協(xié)議解析決定采用二進(jìn)制格式,實(shí)現(xiàn)方便且健壯否彩。
多路復(fù)用(MultiPlexing),即連接共享嗦随,即每一個(gè)request都是是用作連接共享機(jī)制的列荔。一個(gè)request對(duì)應(yīng)一個(gè)id,這樣一個(gè)連接上可以有多個(gè)request枚尼,每個(gè)連接的request可以隨機(jī)的混雜在一起贴浙,接收方可以根據(jù)request的 id將request再歸屬到各自不同的服務(wù)端請(qǐng)求里面。
header壓縮署恍,如上文中所言崎溃,對(duì)前面提到過(guò)HTTP1.x的header帶有大量信息,而且每次都要重復(fù)發(fā)送盯质,HTTP2.0使用encoder來(lái)減少需要傳輸?shù)膆eader大小袁串,通訊雙方各自cache一份header fields表,既避免了重復(fù)header的傳輸呼巷,又減小了需要傳輸?shù)拇笮 ?/p>
服務(wù)端推送(server push)囱修,同SPDY一樣,HTTP2.0也具有server push功能王悍。