HTTP

1. OSI 七層模型指什么?

  • 概念:OSI七層模型通過七個不同層次的結(jié)構(gòu)模型商模,使不同系統(tǒng)不同網(wǎng)絡(luò)能夠進(jìn)行可靠的通訊肪虎。因此其最主要的功能就是幫助不同類型的主機(jī)實現(xiàn)數(shù)據(jù)傳輸 契讲。完成中繼功能的節(jié)點通常稱為中繼系統(tǒng)鹃栽。在OSI七層模型中躯畴,處于不同層的中繼系統(tǒng)具有不同的名稱令花。
  • 層次:物理層颗祝,數(shù)據(jù)鏈路層瘦棋,網(wǎng)絡(luò)層掺出,傳輸層忠藤,會話層阅爽,表示層路幸,應(yīng)用層:
    七層模型
  • 物理層:利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,實現(xiàn)比特流的透明傳輸付翁。
  • 數(shù)據(jù)傳輸層:通過各種控制協(xié)議简肴,將有差錯的物理信道變?yōu)闊o差錯的、能可靠傳輸數(shù)據(jù)幀的數(shù)據(jù)鏈路百侧。
  • 網(wǎng)絡(luò)層:通過路由選擇算法砰识,為報文或分組通過通信子網(wǎng)選擇最適當(dāng)?shù)穆窂健?/li>
  • 傳輸層:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸佣渴。
  • 會話層:向兩個實體的表示層提供建立和使用連接的方法辫狼。將不同實體之間的表示層的連接稱為會話。
  • 表示層:處理用戶信息的表示問題辛润,如編碼膨处、數(shù)據(jù)格式轉(zhuǎn)換和加密解密。
  • 應(yīng)用層:直接向用戶提供服務(wù),完成用戶希望在網(wǎng)絡(luò)上完成的各種工作真椿。
  • 概括:簡言之秦叛,下4層,主要完成通信子網(wǎng)的功能瀑粥,而上3層,主要完成資源子網(wǎng)的功能三圆。

參考OSI七層模型詳解

2. HTTP 的工作原理是什么狞换?

  • 對輸入的地址進(jìn)行解析,從中解析出協(xié)議名舟肉,主機(jī)名修噪,端口號,對象路徑等路媚;
  • 封裝HTTP請求報文黄琼;
  • 封裝成TCP包整慎,進(jìn)行TCP連接裤园;
  • 客戶機(jī)發(fā)送請求命令拧揽;
  • 服務(wù)器收到請求報文淤袜,處理報文,返回響應(yīng)內(nèi)容和響應(yīng)報文积蔚;
  • 服務(wù)器關(guān)閉TCP連接(可以通過Connection: keep-alive保持存在路線库倘,但是連接斷開狀態(tài))教翩;
  • 客戶機(jī)收到響應(yīng)報文和響應(yīng)內(nèi)容饱亿,解析渲染呈現(xiàn)彪笼。

3. URI 的格式是什么配猫?常見的協(xié)議有哪些

  • URI:統(tǒng)一資源標(biāo)識符捆交;
  • URL:統(tǒng)一資源定位符腐巢;
  • 區(qū)別
    URI&URL

    可以看出肉瓦,URL是URI的子集泞莉,統(tǒng)一資源標(biāo)識符有多種形式戒财,URL只是其中的比較常用的一部分。
  • 格式<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
  • <scheme>:協(xié)議饮寞,常見的有http,https,ftp幽崩;
  • <user>:<password>:user和password現(xiàn)在不常見了慌申,不會在URL明文書寫用戶名和密碼了蹄溉,都是通過登錄的方式柒爵;
  • <host>:主機(jī)可以是IP地址或者域名棉胀;
  • :<port>:端口號用來區(qū)分主機(jī)上的進(jìn)程唁奢,方便找到web服務(wù)器麻掸,http默認(rèn)是80脊奋;
  • <path>:path是資源的路徑狂魔,也就是存放位置最楷,不一定和物理路徑完全對應(yīng)籽孙,符合web服務(wù)器路由約定即可犯建;
  • <params>:params适瓦,在一些協(xié)議中需要參數(shù)來訪問資源玻熙,例如ftp是二進(jìn)制還是文本傳輸嗦随,參數(shù)是名值對枚尼,用分號隔開署恍;
  • <query>:查詢語句锭汛,這個是get請求最常用的傳遞參數(shù)方式了 ?a=1&b=2&=3;
  • <hash>:hash也成為片段般婆,設(shè)計為標(biāo)識文檔的一部分,很多MVVM框架用作了路由功能啤咽;
  • 常見協(xié)議:http,https,ftp,ssh

4. HTTP 協(xié)議有幾種和服務(wù)器交互的方法

  • GET:通常用于請求服務(wù)器發(fā)送某個資源宇整;
  • POST:向服務(wù)器發(fā)送數(shù)據(jù)鳞青,通常用來支持HTML的表單(input,textarea,select)臂拓,表單中的數(shù)據(jù)會被發(fā)送到服務(wù)器胶惰;
  • HEAD:HEAD方法和GET類似孵滞,但是在服務(wù)器的響應(yīng)中沒有資源的內(nèi)容,只有資源的一些基本信息幼东,主要用于:
  • 在不獲取資源的情況下獲取資源信息(類型科雳、大小等)简逮;
  • 通過狀態(tài)碼產(chǎn)看資源是否存在散庶;
  • 通過查看首部悲龟,測試資源是否被修改了;
  • PUT:和GET從服務(wù)器獲取資源相反轻腺,PUT用于想服務(wù)器寫入資源贬养,出于安全原因耕挨,并不是所有的服務(wù)器都實現(xiàn);
  • TRACE:客戶端發(fā)送一個請求的時候蜘犁,這個請求可能會穿過防火墻、代理屈扎、網(wǎng)關(guān)和一些其它應(yīng)用程序鹰晨,沒個中間節(jié)點都可能修改HTTP請求,TRACE方法允許客戶端在最終請求發(fā)往服務(wù)器的時候忍疾,看看它變成了什么樣子;
  • DELETE:DELETE方法用于要求服務(wù)器刪除請求的URL谨朝,和PUT一樣卤妒,出于安全考慮甥绿,服務(wù)器可能會不支持
  • OPTIONS:用于請求 web服務(wù)器告知其支持的各種功能。

5. 狀態(tài)碼200, 301, 304, 403, 404, 500, 503分別代表什么意思则披?

  • 200:請求成功共缕;
  • 301:重定向,新的URL在Location頭中給出收叶,瀏覽器應(yīng)該自動地訪問新的URL骄呼;
  • 304:未變更,原來緩沖的文檔還可以繼續(xù)使用;
  • 403:無權(quán)訪問,資源不可用。服務(wù)器理解客戶的請求,但拒絕處理它;
  • 404:未找到,無法找到指定位置的資源;
  • 500:服務(wù)器遇到了意料不到的情況岭皂,不能完成客戶的請求;
  • 503:服務(wù)器超負(fù)載或停機(jī)維護(hù)。

6. 報文有哪幾部分組成?

  • 請求報文
  • 請求行
  • 請求頭
  • 空行
  • 請求體
  • 響應(yīng)報文
  • 狀態(tài)行
  • 響應(yīng)頭
  • 空行
  • 響應(yīng)體
  • eg
    報文

    其中的MIME Fields就是空行和響應(yīng)體(或空行和請求體)的位置片部。

7. 請求頭的格式和作用是什么辖所?給個范例截圖說明

請求頭
  • 格式:關(guān)鍵字:值對
  • 作用
  • Accept:告訴服務(wù)器能夠發(fā)送那些媒體類型;
  • Accept-Encoding:告訴服務(wù)器能夠發(fā)送哪些壓縮格式顾犹;
  • Connection:客戶端和服務(wù)器是否保持連接浑玛;
  • Host:接收請求的服務(wù)器的主機(jī)名和端口號筋搏;
  • Origin:請求的網(wǎng)站源信息髓迎;
  • Referer:提供了包含當(dāng)前請求URI的文檔的URL,告訴服務(wù)器自己來源挣郭;
  • User-Agent:發(fā)起請求的客戶端應(yīng)用程序蕉汪。

8. 首部的格式和作用是什么革砸?給個范例截圖說明

首部
  • 格式:關(guān)鍵字:值對
  • 作用
  • Request:請求的URL;
  • Request Method:請求的方法较锡;
  • Status Code:狀態(tài)碼和狀態(tài)短語;
  • Remote Address:服務(wù)器的IP地址和端口號。

9. 主體的作用是什么赴恨?給個范例

主體

主體就是客戶端和服務(wù)器傳輸?shù)暮诵膬?nèi)容,通常是querystring或文本倚舀,有的可以是json入宦,而圖片是二進(jìn)制碼乾闰。

10. 簡述瀏覽器緩存是如何控制的?

web緩存流程圖
  • 瀏覽器緩存機(jī)制,其實就是HTTP協(xié)議定義的緩存機(jī)制和HTML的Meta標(biāo)簽緩存黁機(jī)制夺克。
  • 如果瀏覽器請求時,沒有緩存爆安,則向服務(wù)器請求內(nèi)容叛复,通過緩存機(jī)制判斷是否需要緩存。
  • 如果瀏覽器請求時,存在緩存褐奥,那么首先看緩存是否在有效期咖耘,這里是通過HTTP的Cache-control和Expires指明的有效期,Cache-control優(yōu)先級較高撬码,設(shè)置更加精細(xì)儿倒,是HTTP1.1新定義的。不過兩者的作用大體相同呜笑。
  • 如果沒過期則讀取緩存义桂,如果緩存過期了,那么會查詢其他定義:
  • Last-Modified/If-Modified-Since要配合Cache-Control使用蹈垢。
    • Last-Modified:標(biāo)示這個響應(yīng)資源的最后修改時間慷吊。web服務(wù)器在響應(yīng)請求時,告訴瀏覽器資源的最后修改時間曹抬。
    • If-Modified-Since:當(dāng)資源過期時(使用Cache-Control標(biāo)識的max-age)溉瓶,發(fā)現(xiàn)資源具有Last-Modified聲明,則再次向web服務(wù)器請求時帶上頭 If-Modified-Since谤民,表示請求時間堰酿。web服務(wù)器收到請求后發(fā)現(xiàn)有頭If-Modified-Since 則與被請求資源的最后修改時間進(jìn)行比對。若最后修改時間較新张足,說明資源又被改動過触创,則響應(yīng)整片資源內(nèi)容(寫在響應(yīng)消息包體內(nèi)),HTTP 200为牍;若最后修改時間較舊哼绑,說明資源無新修改,則響應(yīng)HTTP 304 (無需包體碉咆,節(jié)省瀏覽)抖韩,告知瀏覽器繼續(xù)使用所保存的cache。
  • Etag/If-None-Match也要配合Cache-Control使用疫铜。
    • Etag:web服務(wù)器響應(yīng)請求時茂浮,告訴瀏覽器當(dāng)前資源在服務(wù)器的唯一標(biāo)識(生成規(guī)則由服務(wù)器覺得)。Apache中壳咕,ETag的值席揽,默認(rèn)是對文件的索引節(jié)(INode),大形嚼濉(Size)和最后修改時間(MTime)進(jìn)行Hash后得到的幌羞。
    • If-None-Match:當(dāng)資源過期時(使用Cache-Control標(biāo)識的max-age),發(fā)現(xiàn)資源具有Etage聲明庞呕,則再次向web服務(wù)器請求時帶上頭If-None-Match (Etag的值)新翎。web服務(wù)器收到請求后發(fā)現(xiàn)有頭If-None-Match 則與被請求資源的相應(yīng)校驗串進(jìn)行比對,決定返回200或304住练。

參考瀏覽器緩存機(jī)制

11. 下圖各個參數(shù)是什么意思地啰?

  • General:概括信息,瀏覽器自動生成概括讲逛,不是HTTP協(xié)議的內(nèi)容亏吝;
  • Request URL:請求的URL地址;
  • Request Method:請求的方法盏混;
  • Status Code:響應(yīng)的狀態(tài)碼和狀態(tài)短語蔚鸥;
  • Remote Address:請求的IP地址和端口號;
  • Response Headers:響應(yīng)頭部许赃;
  • Connection:連接狀態(tài)止喷,每次請求完成后都會關(guān)閉HTTP連接,為了優(yōu)化訪問混聊,默認(rèn)設(shè)置keep-alive保持連接弹谁,即TCP/IP連接不關(guān)閉;
  • Content-Length:內(nèi)容長度句喜;
  • Content-Type:內(nèi)容類型预愤,這里是json類型;
  • Date:響應(yīng)事件咳胃,這里是GMT國標(biāo)時間植康;
  • Server:服務(wù)器應(yīng)用軟件信息;
  • X-Powered-By:告知網(wǎng)站是用何種語言或框架編寫的展懈;
  • Request Headers:請求頭部销睁;
  • Accept:能夠接受的響應(yīng)體格式,/表示任何格式均可存崖;
  • Accept-Encoding:能夠接受的編碼格式榄攀;
  • Accept-Language:能夠接受的語言,zh-CN是簡體中文金句,q=0.8是權(quán)重0.8檩赢,優(yōu)先考慮簡體中文;
  • Cookie:緩存违寞;
  • Host:服務(wù)器主機(jī)名贞瞒;
  • Origin:源;
  • Referer:網(wǎng)站的來源信息趁曼,包括歷史記錄信息军浆;
  • User-Agent:客戶端代理信息;
  • X-Requested-With:判斷是Ajax請求還是HTTP傳統(tǒng)請求挡闰;
  • Form-Data:從querystring中得到的表單數(shù)據(jù)乒融;
  • article:數(shù)據(jù)的文章標(biāo)題掰盘。

本文歸本人和饑人谷所有,如需轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赞季,一起剝皮案震驚了整個濱河市愧捕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌申钩,老刑警劉巖次绘,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撒遣,居然都是意外死亡邮偎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門义黎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來禾进,“玉大人,你說我怎么就攤上這事廉涕∶酰” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵火的,是天一觀的道長壶愤。 經(jīng)常有香客問我,道長馏鹤,這世上最難降的妖魔是什么征椒? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮湃累,結(jié)果婚禮上勃救,老公的妹妹穿的比我還像新娘。我一直安慰自己治力,他們只是感情好蒙秒,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宵统,像睡著了一般晕讲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上马澈,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天瓢省,我揣著相機(jī)與錄音,去河邊找鬼痊班。 笑死勤婚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涤伐。 我是一名探鬼主播馒胆,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼缨称,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祝迂?” 一聲冷哼從身側(cè)響起睦尽,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎液兽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌动,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡四啰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了粗恢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖题篷,靈堂內(nèi)的尸體忽然破棺而出雕沿,到底是詐尸還是另有隱情,我是刑警寧澤妖碉,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布涌庭,位于F島的核電站,受9級特大地震影響欧宜,放射性物質(zhì)發(fā)生泄漏坐榆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一冗茸、第九天 我趴在偏房一處隱蔽的房頂上張望席镀。 院中可真熱鬧,春花似錦夏漱、人聲如沸豪诲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屎篱。三九已至,卻和暖如春葵蒂,著一層夾襖步出監(jiān)牢的瞬間芳室,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工刹勃, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留堪侯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓荔仁,卻偏偏與公主長得像伍宦,于是被迫代替她去往敵國和親芽死。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

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