-
OSI 七層模型指什么
OSI:Open System Interconnection moble。是一個由國際標準化組織提出來的概念模型,共一個使各種不同的計算機在網絡和世界范圍內實現互聯的標準框架,它將計算機網絡體系結構分為七層,每層都提供良好的接口。如圖(維基百科):
osi七層網絡協議
- 物理層:負責最后將信息編碼或其他信號在網上傳輸,如網線、網卡等....
- 數據鏈路層:它定義了在單個鏈路上如何傳輸數據
- 網絡層:網絡層負責在源和終點之間建立連接
- 傳輸層:向用戶提供可靠的端到端的網絡數據流服務
- 會話層:組織和協調兩個會話進程之間的通信,并對數據交換進行管理
- 表示層:處理用戶信息的表示問題,定義數據格式和加密解密
- 應用層:是計算機及各種應用程序網絡之間的接口,直接向用戶提供服務,完成用戶希望在網絡上完成的工作。
- HTTP 的工作原理是什么?
- 客戶端跟服務器建立一個TCP連接
- 通過建立的TCP連接,客戶端向服務器發送請求報文
- 服務器接收到請求后給予響應:包括服接解析請求,定位請求資源,將資源副本寫入TCP連接,由客戶端讀取
- 瀏覽器解析結果:將響應的信息通過瀏覽器顯示在用戶的屏幕上然后客戶端和服務器斷開連接
- URI 的格式是什么?常見的協議有哪些
URI是統一資源標識符,而URL是它的一個子集,通用格式為:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
- scheme:對于web頁面來說最常用的協議就是http和https
- user和password現在不常見,不會在URL明文書寫用戶名和密碼,都是通過登錄的方式
- host:主機可以是IP地址或者域名
- port端口號用來區分主機進程,方便找到web服務器,http默認是80
- path是資源的路徑,也是存放位置,不一定和物理路徑完全對應,符合web服務器路由約定即可
- params在一些協議中需要參數來訪問資源,例如ftp是二進制還是文本傳輸, 參數是名值對,用
;
隔開 - query是get請求最常用的傳遞參數方式了
?a=1&b=2&c=3
- hash也成為片段,設計為標識文檔的一部分(很多mvvw框架用作路由)
-
HTTP 協議有幾種和服務器交互的方法
- get:最常用的方法,用來獲取服務器資源
- post:一般用來表單提交,更新服務器資源
- put:和get相反,向服務器寫入資源,由于安全問題服務器一般不支持
- delete:刪除請求的URL,由于安全問題服務器一般不支持
- head:和get請求類似,不過不是請求資源。而是請求信息(資源類型、大小、是否存在...)
- trace:會在目標服務器發送一個閉環診斷,查看發送的請求都經過哪些節點,有沒有被修改
- options:獲取服務器支持的方法
-
狀態碼200,301, 304,403,404,500,503分別代表什么意思
- 200:表示一切正常,請求成功
- 301:表示用戶請求文檔已經被永久性改變位置
- 304:表示請求的網頁未發生改變,可繼續使用緩存
- 403:一般表示有資源卻無權限訪問
- 404:無法找到指定位置請求的資源
- 500:表示后臺服務器出現錯誤,無法處理請求
- 503:表示服務器超載,無法處理請求
- 報文有哪幾部分組成?
HTTP報文是簡單的格式化數據,每個報文都包含一條來自客戶端的信息或者一條來自服務器的信息,由三個部分組成:
- 對報文進行描述的起始行 ———— start line
- 包含屬性的首部塊 ———— header
- 可選的包含數據的主體部分 ———— body
-
請求頭的格式和作用是什么?給個范例截圖說明
請求頭格式- Accept:客戶端可接受的類型
- Accept-Encoding:客戶端接受的壓縮編碼
- Accept-Language:客戶端接受的語言
- Cache-Control:客戶端接受的緩存控制
- Connection:告知服務器連接
- Host:請求的主機名,允許多個域名同處一個IP地址,即虛擬主機
- User-Agent:產生請求的瀏覽器類型
-
首部的格式和作用是什么?給個范例截圖說明
首部的格式- Request URL:請求的域名
- Request Method:請求的方法
- Status Code:狀態碼
- Remote Address:接受的遠程服務器地址和端口號
-
主體的作用是什么?給個范例
主體
主體就是客戶端和服務端之間傳輸的主要內容,一般是圖片、視頻、HTML文檔等。
-
簡述瀏覽器緩存是如何控制的
Cache-control:在HTTP頭部設置Cache-control來控制緩存的時間,等時間到了緩存失效,單位為秒,如:Cache-control: max-age=5 表示當訪問此網頁后的5秒內不會去再次訪問服務器
Expires:設置緩存的失效日期,在過期時間以內,若再次發起請求,通常瀏覽器都不會與服務器進行任何通信,而是直接使用本地副本。當 Expires 和 Cache-Control 同時出現時,通常后者會覆蓋前者的設定
Last-Modified:在瀏覽器第一次請求某一個URL時,服務器端的返回狀態會是200,內容是你請求的資源,同時有一個Last-Modified的屬性標記(HttpReponse Header)此文件在服務期端最后被修改的時間,客戶端第二次請求此URL時,根據HTTP協議的規定,瀏覽器會向服務器傳送If-Modified-Since報頭(HttpRequest Header),詢問該時間之后文件是否有被修改過,如果服務器端的資源沒有變化,則自動返回HTTP304(NotChanged.)狀態碼,內容為空,這樣就節省了傳輸數據量。當服務器端代碼發生改變或者重啟服務器時,則重新發出資源,返回和第一次請求時類似。從而保證不向客戶端重復發出資源,也保證當服務器有變化時,客戶端能夠得到最新的資源。
ETag:使用 ETag 驗證緩存的響應,Etag是服務器自動生成或者由開發者生成的對應資源在服務器端的唯一標識符,能夠更加準確的控制緩存。
優先級:Cache-Control/Expires的優先級要高于Last-Modified/ETag。即當本地副本根據Cache-Control/Expires發現還在有效期內時,則不會再次發送請求去服務器詢問修改時間(Last-Modified)或實體標識(Etag)了。
- 本博客版權歸羞澀的澀和饑人谷所有,轉載請注明出處