協(xié)議:計(jì)算機(jī)通訊網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須的共同遵守的規(guī)定或者規(guī)則
HTTP協(xié)議:超文本傳輸協(xié)議HTTP是一種通信協(xié)議逝淹,它允許將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器
URI:Uniform Resource Identifier,統(tǒng)一標(biāo)識(shí)符耕姊,用來唯一的標(biāo)識(shí)一個(gè)資源
比如網(wǎng)上的圖啊視頻啊什么的資源,這些資源都是用URI來標(biāo)記定位的栅葡。
file://a:123/b/c/d.txt這個(gè)使用http協(xié)議表示這個(gè)資源在a主機(jī)的123端口的b目錄下的c目錄的d.txt文件
URI的三個(gè)組成部分
- 訪問資源的命名機(jī)制
- 存放資源的主機(jī)名
- 資源資深的名稱茉兰,由路徑表示,注重強(qiáng)調(diào)資源
URL:Uniform Resource Locator欣簇,統(tǒng)一資源定位器规脸,它是一種具體的URI,即URL可以用來標(biāo)識(shí)一個(gè)資源熊咽,而且還知名了如何locate這個(gè)資源
比如 http://www.reibang.com/u/c1f9e6ee52f7 這個(gè)網(wǎng)址就是一個(gè)URL
URL的三個(gè)組成部分
①協(xié)議(http,https)
②存有該資源的主機(jī)IP地址
③主機(jī)資源的具體地址莫鸭,注重強(qiáng)調(diào)路徑
HTTP協(xié)議的特點(diǎn)
①簡單快速。只需要寫請(qǐng)求路徑和方法(post,get)就能獲取數(shù)據(jù)
②無連接横殴。限制每次鏈接只處理一個(gè)請(qǐng)求被因,服務(wù)器處理完客戶端的請(qǐng)求后受到客戶端的應(yīng)答,然后就斷開連接
③無狀態(tài)衫仑。協(xié)議對(duì)以前處理的請(qǐng)求是沒有記憶的
request / response 原理
當(dāng)打開瀏覽器梨与,在地址欄中輸入U(xiǎn)RL,然后我們就看到了網(wǎng)頁文狱。這個(gè)原理是怎樣的呢粥鞋?
當(dāng)我們的瀏覽器輸入完URL后,瀏覽器就給服務(wù)器發(fā)送了一個(gè)request(可能經(jīng)過代理服務(wù)器)請(qǐng)求如贷,服務(wù)器收到瀏覽器的request請(qǐng)求后就會(huì)進(jìn)行相應(yīng)的處理陷虎,生成相應(yīng)的response返回給瀏覽器,瀏覽器收到response中的HTML文檔杠袱,這樣我們就看見了網(wǎng)頁。
PS:代理服務(wù)器可以提高訪問速度窝稿,代理服務(wù)器具有緩存功能楣富,當(dāng)再次訪問前一個(gè)地址時(shí)候,就可以直接從代理服務(wù)器中獲取伴榔,而不用再去請(qǐng)求Web服務(wù)器纹蝴。
request請(qǐng)求頭(1-10)
- 1.告訴我們?cè)L問方法為get,訪問的是一個(gè).js的文件庄萎,協(xié)議是HTTP1.1
- 2.Host告訴我們請(qǐng)求的主機(jī)和端口號(hào),主機(jī)是前面網(wǎng)址塘安,端口號(hào)是8080糠涛。通常這個(gè)信息是從URL中提取出來的。端口號(hào)有時(shí)可以省略兼犯,如省略就用默認(rèn)值80
- 3.User-Agent 是告訴http服務(wù)器忍捡,客戶端所采用操作系統(tǒng)瀏覽器名稱及版本
- 4.Intervention是服務(wù)器的信息,但該字段并不是通用的請(qǐng)求頭
- 5.Accept表示瀏覽器端可接受的媒體類型圖例/通配符表示可以接受任意類型切黔,可以處理所有類型數(shù)據(jù)砸脊,一般情況都會(huì)返回這個(gè)
- 6 . referer是一個(gè)引用,瀏覽器告訴服務(wù)器纬霞,這個(gè)請(qǐng)求是從哪個(gè)頁面鏈接過來的
- 7.Accept-Encoding指瀏覽器聲明自己的一些編碼方法凌埂,通常是是否可以執(zhí)行壓縮等等。诗芜。
- 8.Accept-Language瀏覽器聲明自己可以解釋的語言和字符集
- 9.if-None-Match與response中的15ETag聯(lián)合使用瞳抓,功能是告訴response可以添加一些ETag進(jìn)去,當(dāng)再次請(qǐng)求的時(shí)候伏恐,比對(duì)ETag如果沒有發(fā)生變化挨下,response會(huì)返回狀態(tài)碼304,這時(shí)瀏覽器可以直接使用本地的緩存脐湾,大大提升了性能和用戶體驗(yàn)
- 10.if-Modified-Since把瀏覽器端緩存命令的最后修改時(shí)間發(fā)送到服務(wù)端去臭笆,服務(wù)器會(huì)把這個(gè)時(shí)間與服務(wù)器的最后修改時(shí)間對(duì)比,如果一致秤掌,就是304愁铺,那么還是告訴瀏覽器可以直接使用本地緩存。如果不一致返回200闻鉴,表示請(qǐng)求成功和新的文件內(nèi)容茵乱,客戶端收到后會(huì)丟棄掉原來的緩存文件,同時(shí)會(huì)把新的內(nèi)容緩存到本地并顯示在瀏覽器
response頭(11-18)
- 11.返回協(xié)議和狀態(tài)碼
- 12 . Server返回HTTP服務(wù)器的軟件信息
- 13.Date生成reponse的具體時(shí)間
-14.Last-Modified資源最后的修改時(shí)間孟岛,與request的10if-Modified-Since對(duì)應(yīng)
-15.ETag與request的9if-None-Match對(duì)應(yīng)瓶竭,標(biāo)識(shí)服務(wù)器信息的標(biāo)志位
-16.Expires表示瀏覽器在指定時(shí)間內(nèi)使用本地緩存
-17.Cache-Control表示指定response和request所遵循的緩存機(jī)制
-18.Proxy-Connection代理鏈接,Keep-alive表示當(dāng)一個(gè)網(wǎng)頁打開后,客戶端和服務(wù)端直接傳輸數(shù)據(jù)的TCP連接不會(huì)關(guān)閉,如果客戶端再次訪問服務(wù)端的網(wǎng)頁連接,那么會(huì)繼續(xù)使用這條已經(jīng)建立好的TCP連接渠羞,而不會(huì)重新建立一個(gè)連接斤贰,這樣會(huì)對(duì)網(wǎng)絡(luò)連接資源有個(gè)優(yōu)化提升