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

一 Http協(xié)議的簡(jiǎn)介

image.png

物理層、數(shù)據(jù)鏈路層谜喊、網(wǎng)絡(luò)層、傳輸層山卦、應(yīng)用層【TCP/IP五層模型的協(xié)議】

一個(gè)超文本傳輸標(biāo)準(zhǔn)诵次,底層是TCP協(xié)議

1、一些基本概念
1)協(xié)議:指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或規(guī)則
2)HTTP協(xié)議:超文本傳輸協(xié)議是一種通信協(xié)議剔猿,它允許將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器

2嬉荆、URI和URL的區(qū)別
URI:是uniform resource identifier,統(tǒng)一資源標(biāo)識(shí)符汪茧,用來唯一的標(biāo)識(shí)一個(gè)資源
file://a:1234/b/c/d.txt
URI的三個(gè)組成部分:1.訪問資源的命名機(jī)制限番;2.存放資源的主機(jī)名弥虐;3.資源自身的名稱,由路徑表示霜瘪,著重強(qiáng)調(diào)于資源

URL:是uniform resource locator,統(tǒng)一資源定位器颖对,它是一種具體的URI,即URL可以用來標(biāo)識(shí)一個(gè)資源,而且還指明了如何locate這個(gè)資源缤底。
www.baidu.com
三個(gè)組成部分:1.協(xié)議个唧;2.存在該資源的主機(jī)ip地址;3.主機(jī)資源的具體地址

二 Http協(xié)議特點(diǎn)
1)簡(jiǎn)單快速
2)無連接坑鱼,限制每次連接只處理一個(gè)請(qǐng)求
3)無狀態(tài)

三 request/response:原理

打開瀏覽器鲁沥,在地址欄中輸入U(xiǎn)RL,然后我們就看到了網(wǎng)頁。原理是怎么樣的彭谁?
【當(dāng)用戶在瀏覽器輸入一個(gè)URL時(shí)允扇,訪問的大致流程如下:
1.首先瀏覽器會(huì)向DNS服務(wù)器查詢輸入的URL對(duì)應(yīng)的ip地址;
2.然后DNS返回該URL對(duì)應(yīng)網(wǎng)站的ip地址狭园;
3.瀏覽器再向根據(jù)網(wǎng)站的ip地址與目標(biāo)web服務(wù)器的80端口進(jìn)行TCP連接糊治;
4.瀏覽器獲取請(qǐng)求網(wǎng)站頁面的HTML代碼;
5.瀏覽器在顯示窗口內(nèi)渲染HTML绎谦;
6.窗口關(guān)閉時(shí)粥脚,瀏覽器終止與web服務(wù)器的連接;】

四 容易混淆的知識(shí)點(diǎn)

1、Http1.1和1.0的區(qū)別冤留?树灶??肪跋?土砂?

1)1.0產(chǎn)生的背景
超文本傳輸協(xié)議伴隨著計(jì)算機(jī)網(wǎng)絡(luò)和瀏覽器的誕生,Http1.0也隨之而來吴叶,處于計(jì)算機(jī)網(wǎng)絡(luò)中的應(yīng)用層序臂。
早在我們http1.0建立的開始的時(shí)候主要是為了將我們的html文檔從我們的web服務(wù)器傳輸?shù)娇蛻舳藶g覽器实束。

2)1.0所做的優(yōu)化
帶寬:現(xiàn)階段已經(jīng)解決
延遲:1.瀏覽器阻塞:瀏覽器對(duì)于同一個(gè)域名咸灿,同時(shí)只能有4個(gè)連接
2.DNS查詢:瀏覽器需要知道目標(biāo)服務(wù)器的IP才能建立連接
3.建立連接:三次握手

3)1.1和1.0的具體區(qū)別
1.緩存處理:1.0使用頭部的If-Modified-Since來作為判斷標(biāo)準(zhǔn)侮叮。
而1.1引入了更多緩存策略,Etag和If-None-Match
2.帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用
HTTP/1.1加入了一個(gè)新的狀態(tài)碼100(Continue)审胸⌒渡祝客戶端事先發(fā)送一個(gè)只帶頭域的請(qǐng)求,如果服務(wù)器因?yàn)闄?quán)限拒絕了請(qǐng)求尺上,就回送響應(yīng)碼401(Unauthorized)圆到;如果服務(wù)器接收此請(qǐng)求就回送響應(yīng)碼100,客戶端就可以繼續(xù)發(fā)送帶實(shí)體的完整請(qǐng)求了马绝。100 (Continue) 狀態(tài)代碼的使用挣菲,允許客戶端在發(fā)request消息body之前先用request header試探一下server,看server要不要接收request body椭赋,再?zèng)Q定要不要發(fā)request body或杠。
1.1中引入范圍range的區(qū)域【斷點(diǎn)續(xù)傳】
3.Host頭處理
【HTTP 1.1增加host字段】
在HTTP1.0中認(rèn)為每臺(tái)服務(wù)器都綁定一個(gè)唯一的IP地址向抢,因此,請(qǐng)求消息中的URL并沒有傳遞主機(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)求消息中如果沒有Host頭域會(huì)報(bào)告一個(gè)錯(cuò)誤(400 Bad Request)。此外巍糯,服務(wù)器應(yīng)該接受以絕對(duì)路徑標(biāo)記的資源請(qǐng)求客扎。
4.長(zhǎng)連接
HTTP 1.0不支持長(zhǎng)連接,每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接宅楞,服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接袱吆。還有不支持?jǐn)帱c(diǎn)續(xù)傳。
HTTP 1.1則支持持久連接, 并且默認(rèn)使用持久連接. 在同一個(gè)tcp的連接中可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng). 多個(gè)請(qǐng)求和響應(yīng)可以重疊婶希,多個(gè)請(qǐng)求和響應(yīng)可以同時(shí)進(jìn)行蓬衡。
【1.1支持長(zhǎng)連接狰晚,減少建立和關(guān)閉連接的時(shí)間】

4)1.1和1.0存在的問題

1.Http1.0在傳輸數(shù)據(jù)時(shí),每次都需要重新建立連接瓷们,無疑增加了大量的延遲時(shí)間【這個(gè)主要針對(duì)1.0】
2.Http1.x在傳輸數(shù)據(jù)時(shí)秒咐,所有傳輸?shù)膬?nèi)容都是明文,客戶端和服務(wù)端都無法驗(yàn)證對(duì)方的身份【解決方法固蚤,通過Https來保證我們的數(shù)據(jù)和內(nèi)容安全】
3.Http1.x在使用時(shí)歹茶,header里攜帶的內(nèi)容過大你弦,在一定程度上增加了傳輸?shù)某杀?4.雖然Http1.1支持了keep-alive,來彌補(bǔ)多次創(chuàng)建連接產(chǎn)生的延遲燎孟,但是

keep-alive使用多了同樣會(huì)給服務(wù)端帶來大量的性能壓力【1.1】

2揩页、get/post方法的區(qū)別
1)提交的數(shù)據(jù)位置:get放在url后面,post放在 body中
2)提交數(shù)據(jù)的大小是否有限制:因?yàn)闉g覽器對(duì)Url的大小有限制萍程,
3)取得變量的值兔仰,get通過Request.QueryString來獲取,post通過Request.Form來獲取
4)安全問題忍法,URL可以被瀏覽器緩存榕吼,內(nèi)可能包含敏感信息

3、cookie和session的區(qū)別


06http.JPG

07http.JPG

1)Cookie
Cookie技術(shù)是客戶端的解決方案,Cookie就是由服務(wù)器端發(fā)送給客戶端的特殊信息踢匣,而這些信息以文本文件的方式存放在客戶端戈抄,然后客戶端每次向服務(wù)器發(fā)送請(qǐng)求的時(shí)候都會(huì)帶上這些特殊的信息

  1. Session
    Session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器中输莺,而Session保存在服務(wù)器上裸诽。客戶端瀏覽器訪問服務(wù)器的時(shí)候嘱函,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上埂蕊。

session的工作原理:
1.第一步當(dāng)然是創(chuàng)建session了
2.在創(chuàng)建了session的同時(shí),服務(wù)器會(huì)為該session生成唯一的session id
3.在session被創(chuàng)建之后函似,就可以通過session相關(guān)的方法往session中增加內(nèi)容
4.當(dāng)客戶端再次發(fā)送請(qǐng)求的時(shí)候撇寞,會(huì)將這個(gè)session id 帶上,服務(wù)器接受到請(qǐng)求之后就會(huì)一句session id 找到相應(yīng)的session

  1. 區(qū)別
    1.存放位置不同蔑担。Cookie存儲(chǔ)在客戶端钟沛,session存儲(chǔ)在服務(wù)端
    2.存取方式不同局扶。cookie存儲(chǔ)的ask?畜埋?字符串畴蒲,session存儲(chǔ)任何類型的數(shù)據(jù)
    3.安全性不同。cookie對(duì)客戶端是可見的可以被修改咖祭,session存儲(chǔ)在服務(wù)器蔫骂,
    隱私性優(yōu)于cookie.
    4.有效期。cookie的有效期一般較長(zhǎng)浩嫌。session补胚,當(dāng)設(shè)置為-1的時(shí)候溶其,關(guān)閉瀏覽器后session即失效。
    5.對(duì)服務(wù)器造成的壓力不同桦沉。
    并發(fā)多的時(shí)候cookie是個(gè)很好的選擇。

4 Etag/if-one Match referer
而ETag/If-None-Match則是上文大話中說的第二種check服務(wù)端文件是否更新的方式剿骨,也要配合Cache-Control使用埠褪。實(shí)際上ETag并不是文件的版本號(hào),而是一串可以代表該文件唯一的字符串(Apache中贷掖,ETag的值渴语,默認(rèn)是對(duì)文件的索引節(jié)(INode),大醒栏Α(Size)和最后修改時(shí)間(MTime)進(jìn)行Hash后得到的调违。)技肩,當(dāng)客戶端發(fā)現(xiàn)和服務(wù)器約定的直接讀取緩存的時(shí)間過了,就在請(qǐng)求中發(fā)送If-None-Match選項(xiàng)虚婿,值即為上次請(qǐng)求后響應(yīng)頭的ETag值然痊,該值在服務(wù)端和服務(wù)端代表該文件唯一的字符串對(duì)比(如果服務(wù)端該文件改變了,該值就會(huì)變)爽丹,如果相同辛蚊,則相應(yīng)HTTP304袋马,客戶端直接讀取緩存,如果不相同,HTTP200软啼,下載正確的數(shù)據(jù)延柠,更新ETag值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市增热,隨后出現(xiàn)的幾起案子峻仇,更是在濱河造成了極大的恐慌,老刑警劉巖凡蚜,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豆同,死亡現(xiàn)場(chǎng)離奇詭異含鳞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸭廷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門辆床,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桅狠,“玉大人,你說我怎么就攤上這事咨堤′龇” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵议蟆,是天一觀的道長(zhǎng)萎战。 經(jīng)常有香客問我,道長(zhǎng)疟丙,這世上最難降的妖魔是什么鸟雏? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任孝鹊,我火速辦了婚禮,結(jié)果婚禮上苔咪,老公的妹妹穿的比我還像新娘柳骄。我一直安慰自己耐薯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布体谒。 她就那樣靜靜地躺著抒痒,像睡著了一般颁褂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上彩届,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天惨缆,我揣著相機(jī)與錄音,去河邊找鬼坯墨。 笑死捣染,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榕栏。 我是一名探鬼主播蕾各,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼式曲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了兰伤?” 一聲冷哼從身側(cè)響起钧排,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤恨溜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后柏腻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體系吭,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肯尺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年则吟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锄蹂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氓仲。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出敬扛,到底是詐尸還是另有隱情晰洒,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布啥箭,位于F島的核電站谍珊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏急侥。R本人自食惡果不足惜砌滞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坏怪。 院中可真熱鬧,春花似錦铝宵、人聲如沸题暖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胧卤。三九已至,卻和暖如春拼岳,著一層夾襖步出監(jiān)牢的瞬間枝誊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工惜纸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶撒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓耐版,卻偏偏與公主長(zhǎng)得像祠够,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粪牲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容