1. OSI 七層模型指什么?
- 概念:OSI七層模型通過七個不同層次的結(jié)構(gòu)模型,使不同系統(tǒng)不同網(wǎng)絡(luò)能夠進行可靠的通訊。因此其最主要的功能就是幫助不同類型的主機實現(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 的工作原理是什么?
- 對輸入的地址進行解析,從中解析出協(xié)議名,主機名,端口號,對象路徑等;
- 封裝HTTP請求報文;
- 封裝成TCP包,進行TCP連接;
- 客戶機發(fā)送請求命令;
- 服務(wù)器收到請求報文,處理報文,返回響應(yīng)內(nèi)容和響應(yīng)報文;
- 服務(wù)器關(guān)閉TCP連接(可以通過Connection: keep-alive保持存在路線,但是連接斷開狀態(tài));
- 客戶機收到響應(yīng)報文和響應(yīng)內(nèi)容,解析渲染呈現(xiàn)。
3. URI 的格式是什么?常見的協(xié)議有哪些
- URI:統(tǒng)一資源標識符;
- URL:統(tǒng)一資源定位符;
-
區(qū)別:
URI&URL
可以看出,URL是URI的子集,統(tǒng)一資源標識符有多種形式,URL只是其中的比較常用的一部分。 -
格式:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash> -
<scheme>:協(xié)議,常見的有http,https,ftp; -
<user>:<password>:user和password現(xiàn)在不常見了,不會在URL明文書寫用戶名和密碼了,都是通過登錄的方式; -
<host>:主機可以是IP地址或者域名; -
:<port>:端口號用來區(qū)分主機上的進程,方便找到web服務(wù)器,http默認是80; -
<path>:path是資源的路徑,也就是存放位置,不一定和物理路徑完全對應(yīng),符合web服務(wù)器路由約定即可; -
<params>:params,在一些協(xié)議中需要參數(shù)來訪問資源,例如ftp是二進制還是文本傳輸,參數(shù)是名值對,用分號隔開; -
<query>:查詢語句,這個是get請求最常用的傳遞參數(shù)方式了 ?a=1&b=2&=3; -
<hash>:hash也成為片段,設(shè)計為標識文檔的一部分,很多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ù)器超負載或停機維護。
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ù)器的主機名和端口號;
- 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,而圖片是二進制碼。
10. 簡述瀏覽器緩存是如何控制的?

web緩存流程圖
- 瀏覽器緩存機制,其實就是HTTP協(xié)議定義的緩存機制和HTML的Meta標簽緩存黁機制。
- 如果瀏覽器請求時,沒有緩存,則向服務(wù)器請求內(nèi)容,通過緩存機制判斷是否需要緩存。
- 如果瀏覽器請求時,存在緩存,那么首先看緩存是否在有效期,這里是通過HTTP的Cache-control和Expires指明的有效期,Cache-control優(yōu)先級較高,設(shè)置更加精細,是HTTP1.1新定義的。不過兩者的作用大體相同。
- 如果沒過期則讀取緩存,如果緩存過期了,那么會查詢其他定義:
-
Last-Modified/If-Modified-Since要配合Cache-Control使用。
- Last-Modified:標示這個響應(yīng)資源的最后修改時間。web服務(wù)器在響應(yīng)請求時,告訴瀏覽器資源的最后修改時間。
- If-Modified-Since:當(dāng)資源過期時(使用Cache-Control標識的max-age),發(fā)現(xiàn)資源具有Last-Modified聲明,則再次向web服務(wù)器請求時帶上頭 If-Modified-Since,表示請求時間。web服務(wù)器收到請求后發(fā)現(xiàn)有頭If-Modified-Since 則與被請求資源的最后修改時間進行比對。若最后修改時間較新,說明資源又被改動過,則響應(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ù)器的唯一標識(生成規(guī)則由服務(wù)器覺得)。Apache中,ETag的值,默認是對文件的索引節(jié)(INode),大?。⊿ize)和最后修改時間(MTime)進行Hash后得到的。
- If-None-Match:當(dāng)資源過期時(使用Cache-Control標識的max-age),發(fā)現(xiàn)資源具有Etage聲明,則再次向web服務(wù)器請求時帶上頭If-None-Match (Etag的值)。web服務(wù)器收到請求后發(fā)現(xiàn)有頭If-None-Match 則與被請求資源的相應(yīng)校驗串進行比對,決定返回200或304。
參考:瀏覽器緩存機制
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)化訪問,默認設(shè)置keep-alive保持連接,即TCP/IP連接不關(guān)閉;
- Content-Length:內(nèi)容長度;
- Content-Type:內(nèi)容類型,這里是json類型;
- Date:響應(yīng)事件,這里是GMT國標時間;
- 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ù)器主機名;
- Origin:源;
- Referer:網(wǎng)站的來源信息,包括歷史記錄信息;
- User-Agent:客戶端代理信息;
- X-Requested-With:判斷是Ajax請求還是HTTP傳統(tǒng)請求;
- Form-Data:從querystring中得到的表單數(shù)據(jù);
- article:數(shù)據(jù)的文章標題。
本文歸本人和饑人谷所有,如需轉(zhuǎn)載請注明出處


