-
OSI 七層模型指什么 (難度***)
OSI(Open System Interconnection), 即開放式系統(tǒng)互聯(lián)通信模型, 層次劃分:
2016-09-21_142659.png- 應(yīng)用層
決定了向用戶提供應(yīng)用服務(wù)時的通信活動, 如http, https, ftp就是應(yīng)用層協(xié)議, DNS服務(wù)也位于應(yīng)用層 - 傳輸層
提供處于網(wǎng)絡(luò)鏈接中兩臺計算機的數(shù)據(jù)運輸, 該層的協(xié)議有TCP和UDP協(xié)議 - 網(wǎng)絡(luò)層
決定數(shù)據(jù)傳輸?shù)穆窂? 該層協(xié)議有IP協(xié)議 - 鏈路層
用來處理鏈接網(wǎng)絡(luò)的硬件部分
- 應(yīng)用層
注意: 其中表示層和會話層已被棄用, 因為應(yīng)用層有類似的功能
-
HTTP 的工作原理是什么额港? (難度***)
- 域名解析, 根據(jù)DNS把域名解析成對應(yīng)的IP地址
- 根據(jù)http協(xié)議生成請求報文
- 根據(jù)TCP協(xié)議將請求報文分割, 以數(shù)據(jù)包的形式發(fā)送
- 根據(jù)IP協(xié)議確定傳輸?shù)穆窂?/li>
- 服務(wù)器接收到請求報文, 生成響應(yīng), 以同樣的方式返回給客戶端
-
URI 的格式是什么?常見的協(xié)議有哪些 (難度***)
- URI格式
例如:
http://user:pass@www.example.com:80/dir/index.html?uid=1#ch1
2016-09-21_152210.png
查詢字符串: 可以傳入任意參數(shù)
片段標(biāo)識符: 可以標(biāo)記出已獲取資源中的子資源(文檔內(nèi)的某個位置) - 常用的協(xié)議
常用的應(yīng)用層協(xié)議有HTTP, FTP, SSH
- URI格式
狀態(tài)碼200短荐,301叹哭, 304,403,404,500风罩,503分別代表什么意思 (難度****)
200: OK
表示成功, 請求被正常處理
301: Move Permanently
永久性重定向, 請求的資源已分配了新的URI
304: Not Modified
距離上次訪問資源未修改
403: Forbidden
沒有權(quán)限, 請求被服務(wù)器拒絕
404: Not Found
服務(wù)器上無法找到請求的資源
500: Internal Server Error
服務(wù)器執(zhí)行請求發(fā)生錯誤
503: Service Unavailable
服務(wù)器處于超負(fù)載或者正在進(jìn)行停機維護-
報文有哪幾部分組成舵稠? (可選 難度****)
-
請求報文組成
請求行
請求頭
空行
請求體
2016-09-21_164044.png
其中空行的主要功能是把請求頭和請求體分開, 空行后就是請求體的內(nèi)容, 例如查詢字符串
-
name=gqc&age=18&gender=male
- 響應(yīng)報文組成
狀態(tài)行
響應(yīng)頭
空行
響應(yīng)體
其中的響應(yīng)體可能是一個html頁面或其他資源
-
請求頭的格式和作用是什么?給個范例截圖說明 (可選 難度****)
2016-09-21_162446.png- 格式
字段名: 字段值 - 作用
因為http是無狀態(tài)協(xié)議, 所以, 就需要在請求頭中聲明本次請求的信息和執(zhí)行的動作, 讓服務(wù)器知道你是誰, 你想干什么
- 格式
-
首部的格式和作用是什么室琢?給個范例截圖說明 (可選 難度****)
2016-09-21_172723.png
chrome的general只是瀏覽器對于本次請求和響應(yīng)的綜述, 是瀏覽器自己生成的, 并不包含在http協(xié)議的內(nèi)容當(dāng)中
-
請求行
2016-09-21_172857.png
請求行的格式為:
method uri http-version
請求行的作用:
描述了請求的方法, 資源的地址和HTTP協(xié)議的版本 -
狀態(tài)行
2016-09-21_173326.png
狀態(tài)行的格式為:
http-version status status-content
狀態(tài)行的作用:
描述本次響應(yīng)的狀態(tài)
-
-
主體的作用是什么盈滴?給個范例(可選 截圖說明難度****)
-
請求體
2016-09-21_173747.png
請求體常用的格式querystring, 也可以是json
-
Content-Type: application/x-www-from-urlencoded
//例如name=gqc&age=18&gender=male
請求體作用:
本次請求的內(nèi)容
- 響應(yīng)體
響應(yīng)體的作用:
返回請求的內(nèi)容, 可能是html, json格式的數(shù)據(jù)或者其他資源
-
簡述瀏覽器緩存是如何控制的(可選 難度*****)
2016-09-21_202433.png
首先, 當(dāng)用戶訪問一個頁面時, 瀏覽器會先判斷是否使用緩存, 如何判斷呢?第一, 根據(jù)Expires, 這是之前服務(wù)器響應(yīng)使傳回來的有效時間,使用的是瀏覽器生成是日期. 第二, 根據(jù)Cache-Control的max-age, 這也是之前服務(wù)器響應(yīng)時返回的最長有效時間, 使用的是秒數(shù), 比Expires的優(yōu)先級更高. 假如在有效期內(nèi), 瀏覽器就使用緩存, 如果在有效期外, 瀏覽器再發(fā)起請求去判斷資源的內(nèi)容是否更新, 主要有兩種方式. 第一, 把之前的Last-Modified作為If-Modified-Since字段的值, 去和服務(wù)器上的Last-Modified判斷. 第二, 把之前ETag的值作為If-None-Match字段的值去和服務(wù)器上的ETag的值進(jìn)行判斷(ETag是文件唯一的字符串, 根據(jù)Hash算法生成). 如果請求資源的內(nèi)容沒有變化, 就使用緩存, 否則請求新的內(nèi)容
注意:- 如果同時存在, ETag的的優(yōu)先級比Last-Modified的優(yōu)先級更高
因為ETag的出現(xiàn)就是為了解決Last-Modified的問題, 例如Last-Modified事件只能精確到秒級, 如果文件在短時間內(nèi)多次修改, 例如某些文件會定期生成, 但是內(nèi)容不變等 - 如果用戶使用F5刷新的時候, 會忽略Expire/Cache-Control的設(shè)置, 會再次發(fā)送請求去服務(wù)器請求,但是Last-Modified/ETag還是有效的, 如果用戶使用Ctrl+F5, 會進(jìn)行強制刷新, 所有緩存都將失效, 重新去服務(wù)器拉資源
- 如果同時存在, ETag的的優(yōu)先級比Last-Modified的優(yōu)先級更高
參考:
瀏覽器緩存機制淺析
網(wǎng)站優(yōu)化:瀏覽器緩存控制簡介及配置策略
-
下圖各個參數(shù)是什么意思(可選 難度*****)
- General
這部分是瀏覽器對請求和響應(yīng)的綜述, 是瀏覽器自己生成的, 并不是HTTP協(xié)議的內(nèi)容
Request URL: 請求資源的URL地址
Request Method: 請求的方法
Status Code: 響應(yīng)的狀態(tài)碼
Remote Address: 請求的IP地址 - Response Headers
響應(yīng)頭, chrome展示的內(nèi)容并不是源代碼, 而是瀏覽器美化過后的, 更易閱讀
Connection: 因為HTTP是無狀態(tài)協(xié)議, 每次請求完成都會關(guān)閉連接, HTTP/1.1 加入的內(nèi)容, 默認(rèn)使用keep-alive持久連接, 即TCP連接默認(rèn)不關(guān)閉
Content-Length: 響應(yīng)體的長度
Content-Type: 響應(yīng)體的格式
Date: 響應(yīng)的時間, 注意, 這里的時間不是北京時間, 而是GMT時間
Server: 包含服務(wù)器處理請求的軟件的信息
X-Powered-By: 程序支持, 還有例如PHP/5.3.15 - Request Headers
Accept: 接受的響應(yīng)體格式, /表示任何格式都接受
Accept-Encoding: 接受的編碼格式
Accept-Language: 接受的語言, zh-CN表示簡體中文, 其中zh;q=0.8表示的是中文的權(quán)重是0.8, 優(yōu)先接受簡體中文
Connection: 表示持續(xù)鏈接, 不斷開TCP鏈接
Content-Length: 表示請求體的長度
Content-Type: 請求體的格式, 現(xiàn)在指定的就是querystring, 表單的默認(rèn)格式
Cookie: 這是之前訪問的時候服務(wù)器返回的cookie
Host: 主機名
Origin: 源, 包括協(xié)議名, 主機名, 端口號
Referer: 包括了之前從那個網(wǎng)頁到當(dāng)前地址, 包括了歷史記錄信息
User-Agent: 表示使用的用戶代理的字符串
X-Requested-With: 判斷請求是AJax請求還是傳統(tǒng)請求 - Form Data
包含了querystring字符串由瀏覽器解析后的內(nèi)容
- General