通過(guò)對(duì)http協(xié)議的初步了解椰棘,了解到http的工作原理别洪,了解到什么叫請(qǐng)求行狀態(tài)行和消息頭,了解到了緩存機(jī)制携栋,了解到了http的傳送方式是:ip+端口號(hào)這種方式進(jìn)行傳輸搭盾,默認(rèn)http的端口號(hào)是80,https的端口號(hào)為443婉支,模式為請(qǐng)求與相應(yīng)模式鸯隅,一問(wèn)一答的模式。目前網(wǎng)絡(luò)傳輸大部分都是http/1.1的版本向挖,與http/1.0相比具有持續(xù)連接蝌以。
HTTP/1.1的原理是在一個(gè)tcp連接上可以傳送多個(gè)http請(qǐng)求和響應(yīng),多個(gè)請(qǐng)求和響應(yīng)過(guò)程可以重疊進(jìn)行何之,只要是第一次發(fā)送請(qǐng)求建立連接跟畅,第二次繼續(xù)發(fā)送請(qǐng)求,還是沿用第一次的通道溶推,省去了再連接徊件,不用再三次握手,用舊的通道連接提高了效率蒜危,如每一次連接訪問(wèn)服務(wù)器那樣就會(huì)消耗資源虱痕。
HTTP協(xié)議是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)辐赞,是基于TCP連接的部翘。而TCP/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)在網(wǎng)路中如何傳輸?shù)膯?wèn)題响委,屬于網(wǎng)絡(luò)使用的基本通信協(xié)議略就。TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議。通常說(shuō)TCP/IP是Internet協(xié)議族晃酒,而不單單是TCP和IP表牢。在討論傳輸協(xié)議,我覺(jué)的這兩個(gè)對(duì)比在一起能更好的理解贝次。
http在實(shí)際發(fā)生過(guò)程中是客戶端向服務(wù)端發(fā)送請(qǐng)求崔兴,請(qǐng)求中包括請(qǐng)求協(xié)議,方法蛔翅,請(qǐng)求的信息敲茄。通過(guò)這些信息,可以分析出發(fā)送請(qǐng)求的一些要求山析,如請(qǐng)求消息中accept參數(shù)堰燎,它會(huì)指定客戶端能夠接收的內(nèi)容類型,如accept-languag參數(shù)笋轨,他指定了可接收的語(yǔ)言等秆剪,如connection參數(shù)赊淑,顯示是keep-alive或close,告訴服務(wù)器連接方式仅讽,這條信息會(huì)考慮到影響帶寬的因素陶缺,參數(shù)有好多對(duì)應(yīng)不同請(qǐng)求會(huì)有不同的參數(shù),請(qǐng)求信息參數(shù)洁灵,與相應(yīng)信息參數(shù)是一一對(duì)應(yīng)饱岸。在正常的網(wǎng)絡(luò)傳輸中如何第一次請(qǐng)求,響應(yīng)狀態(tài)碼是200 OK徽千,一般是服務(wù)器返回客戶端的苫费,這條信息只是證明服務(wù)器接收到的信息,并返回告訴客戶端双抽。而不是告訴我們你發(fā)送的請(qǐng)求百框,我回答了你的相應(yīng)請(qǐng)求。在第二次發(fā)送同樣的請(qǐng)求荠诬,響應(yīng)狀態(tài)碼是304,這條狀態(tài)碼不是發(fā)送請(qǐng)求沒(méi)有出現(xiàn)200而出現(xiàn)了問(wèn)題位仁,而是第一次發(fā)送請(qǐng)求中柑贞,響應(yīng)數(shù)據(jù)已cookie的形式保存在本地的文件當(dāng)中,當(dāng)客戶端第二次發(fā)送同樣的請(qǐng)求時(shí)聂抢,本地的cookie會(huì)把上一次保存在cookie中的信息钧嘶,返還發(fā)送給客戶端減少主機(jī)對(duì)服務(wù)器訪問(wèn)同樣的請(qǐng)求而產(chǎn)生的一種緩存機(jī)制,這種緩存機(jī)制減少對(duì)服務(wù)器的訪問(wèn)量琳疏,提高服務(wù)器的性能有决,針對(duì)于哪些沒(méi)有緩存的請(qǐng)求,提高他們的訪問(wèn)效率與速度空盼。
在服務(wù)器響應(yīng)的信息中书幕,包括響應(yīng)的狀態(tài)碼,每個(gè)狀態(tài)碼都代表一個(gè)具體的含義揽趾,我們可以根據(jù)他的響應(yīng)狀態(tài)碼來(lái)分析台汇,來(lái)分析服務(wù)器處理請(qǐng)求之后發(fā)生的問(wèn)題,是請(qǐng)求成功200 ok篱瞎,還是404服務(wù)器上不存在客戶機(jī)所請(qǐng)求的資源苟呐,通過(guò)這些狀態(tài)碼來(lái)分析產(chǎn)生的問(wèn)題,能很好的定位問(wèn)題俐筋,方便我們?nèi)グl(fā)現(xiàn)問(wèn)題牵素。
這里在說(shuō)一下,緩存(cache)服務(wù)器在響應(yīng)信息中用set-cookie頭的內(nèi)容回送給客戶端澄者,客戶端在新的請(qǐng)求中將相同的內(nèi)容攜帶在cookie頭中發(fā)送給服務(wù)器笆呆。從而實(shí)現(xiàn)會(huì)話的保持请琳。服務(wù)器收到請(qǐng)求時(shí),客戶端將該資源保存在cache中腰奋,并記錄這兩個(gè)屬性单起。當(dāng)需要發(fā)送相同的請(qǐng)求時(shí),會(huì)在請(qǐng)求中攜帶if-Modified-since和if-None-Match兩個(gè)頭劣坊。兩個(gè)頭的值分別是相應(yīng)中Last-Modified和ETag頭的值嘀倒。未發(fā)生變化,客戶端不需要重新下載局冰,返回304響應(yīng)碼测蘑。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2017年08月26日