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)載請注明出處