問答:
1.OSI 七層模型指什么 (難度***)

物理層:物理層考慮的是怎樣在各種連接計算機(jī)的媒體上傳輸數(shù)據(jù)比特流,確保到了數(shù)據(jù)鏈路層感受不到各種通信手段的差異。這一層傳輸比特流(1000100111這樣)。
數(shù)據(jù)鏈路層:這一層是在物理層和網(wǎng)絡(luò)層之間,作用也是讓這兩層通信。數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層交下來的數(shù)據(jù)構(gòu)成幀發(fā)送到鏈路上,以及把接收到的幀中的數(shù)據(jù)取出并上交給網(wǎng)絡(luò)層
網(wǎng)絡(luò)層:網(wǎng)絡(luò)層提供的是數(shù)據(jù)報。網(wǎng)絡(luò)層設(shè)計的簡單靈活,通過虛擬IP網(wǎng)絡(luò)讓位于不同地理位置的主機(jī)之間建立通信,網(wǎng)絡(luò)層以上采用的都是IP地址而非物理地址
運(yùn)輸層:運(yùn)輸層為不同主機(jī)上的進(jìn)程提供端到端的邏輯通信(所謂邏輯通信是好像直接建立了端到端的通信,但事實上的物理連接不是這樣)功能。運(yùn)輸層使用協(xié)議端口號(像http協(xié)議的80端口)來找到不同端口,后續(xù)根據(jù)協(xié)議交付目的進(jìn)程。TCP協(xié)議、UDP協(xié)議就是這一層的協(xié)議,不同協(xié)議提供不同的服務(wù)模型
會話層:會話層的功能是建立兩個節(jié)點之間的連接,確定是雙工工作(每一方同時發(fā)送和接收)還是半雙工工作(輪流發(fā)送和接收),保持通信過程中連接的暢通,決定連接是否中斷,決定中斷后從何處重新連接
表示層:在應(yīng)用層和會話層之間,主要作用就是將應(yīng)用層發(fā)送過來的數(shù)據(jù)進(jìn)行處理,包括數(shù)據(jù)格式的轉(zhuǎn)換、數(shù)據(jù)的加密解密、數(shù)據(jù)的壓縮。應(yīng)用層負(fù)責(zé)處理語義而表示層負(fù)責(zé)處理語法,這樣才能保證不同計算機(jī)使用不同編碼格式的內(nèi)容最后都能被轉(zhuǎn)化成比特流傳輸,傳輸?shù)狡渌娔X后也能轉(zhuǎn)化回來
應(yīng)用層:通信服務(wù)最終還是要給應(yīng)用進(jìn)程提供服務(wù),應(yīng)用層的協(xié)議就是精確定義這些通信規(guī)則,讓不同應(yīng)用進(jìn)程相互協(xié)調(diào)工作。例如HTTP協(xié)議具體規(guī)定報文類型、報文語法、報文中各字段信息的含義、進(jìn)程具體何時發(fā)送報文、進(jìn)程如何響應(yīng)報文
2.HTTP 的工作原理是什么? (難度***)
一次HTTP操作稱為一個事務(wù),其工作過程可分為四步:
客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個超級鏈接,HTTP的工作就開始了。
建立連接后,客戶機(jī)發(fā)送一個請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是MIME信息包括請求修飾符、客戶機(jī)信息和可能的內(nèi)容。
服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務(wù)器信息、實體信息和可能的內(nèi)容。
客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機(jī)與服務(wù)器斷開連接。
如果在以上過程中的某一步出現(xiàn)錯誤,那么產(chǎn)生錯誤的信息將返回到客戶端,由顯示屏輸出。對于用戶來說,這些過程是由HTTP自己完成的,用戶只要用鼠標(biāo)點擊,等待信息顯示就可以了。
3.URI 的格式是什么?常見的協(xié)議有哪些 (難度***)
URI的全稱是統(tǒng)一資源標(biāo)識符, 是Uniform Resource Identifier 的縮寫,
URL的全程是統(tǒng)一資源定位符,是Uniform Resource Locator的縮寫。
URL是URI的子集,URL除了像URI確定一個資源,還提供一種定位該資源的主要訪問機(jī)制(http ://or ftp://)。
URI格式:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
scheme :協(xié)議名 如http ://or ftp://
<user>:<password> :登陸信息(驗證),從服務(wù)器獲取資源需要輸入必要的用戶名和密碼,一般很少見
host:服務(wù)器地址 可以是IP地址或者域名
常見的 協(xié)議有:http、ftp、file、telnet、mailto 等
port :網(wǎng)絡(luò)端口號 ,如果省略走默認(rèn)端口, http默認(rèn)80,https 默認(rèn)443 ,ftp默認(rèn)21。
path:資源路徑
params:在一些協(xié)議中需要參數(shù)來訪問資源,例如ftp是二進(jìn)制還是文本傳輸,參數(shù)是名值對,用;
隔開
query: get請求傳遞的參數(shù) ,是一組組鍵值對
hash:也成為片段,設(shè)計為標(biāo)識文檔的一部分,很多MVVM框架用作了路由功能
4.HTTP 協(xié)議有幾種和服務(wù)器交互的方法 (難度***)
GET:最常用的方法,通常用于請求服務(wù)器發(fā)送某個資源
-
HEAD:和GET類似,只是不反回報文的主體部分,主要用于
- 在不獲取資源的情況下獲取資源信息(類型、大小,資源的更新時間等)
- 通過狀態(tài)碼產(chǎn)看資源是否存在
- 通過查看首部,測試資源是否被修改了
POST:用于向服務(wù)器發(fā)送數(shù)據(jù),相比GET方法的傳輸數(shù)據(jù)量更大,保密性更好
OPTIONS:詢問服務(wù)器支持那些方法?
TRACE:TRACE請求會在目的服務(wù)器端發(fā)送一個“閉環(huán)”診斷,行程最后一站服務(wù)器會彈回一條TRACE響應(yīng),并在響應(yīng)主題中攜帶它收到的原始請求報文
PUT:用于想服務(wù)器寫入資源。PUT的語義就是讓服務(wù)器用請求的主體部分創(chuàng)建一個請求URL命名的文檔,如果存在就替換,由于安全原因,一般不支持。
DELETE:用于要求服務(wù)器刪除請求的URL,和PUT一樣,服務(wù)器可能會不支持
5.狀態(tài)碼200,301, 304,403,404,500,503分別代表什么意思 (難度****)
- 200 ok 成功
- 204 No Content請求處理成功,但是沒有資源返回
- 301 Move Permanently 永久重定向
- 302 Found 請求資源位置臨時移動,區(qū)別于301
- 304 Not Modified 服務(wù)器資源未改變,可以直接使用客戶端未過期緩存
- 403 Forbidden 資源不可用。服務(wù)器理解客戶的請求,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致
- 404 Not Found 無法找到指定位置的資源
- 500 Not Implemented 服務(wù)器不支持實現(xiàn)請求所需要的功能。例如,客戶發(fā)出了一個服務(wù)器不支持的PUT請求。
- 503 Service Unavailable 服務(wù)器由于維護(hù)或者負(fù)載過重未能應(yīng)答。例如,Servlet可能在數(shù)據(jù)庫連接池已滿的情況下返回503
6.報文有哪幾部分組成? (可選 難度****)
- 對報文進(jìn)行描述的起始行 start line
- 包含屬性的首部塊 header
- 包含數(shù)據(jù)的主體部分(可選) body
7.請求頭的格式和作用是什么?給個范例截圖說明 (可選 難度****)

8.主體的作用是什么?給個范例(可選 截圖說明難度****)
服務(wù)器返回客戶端的html 圖片

服務(wù)器返回的JSON

9簡述瀏覽器緩存是如何控制的(可選 難度*****)


10.下圖各個參數(shù)是什么意思(可選 難度*****)

參考文檔:
- 課件
- HTTP協(xié)議請求-Kencery-cnblog
- HTTP深入淺出 http請求-尹京昱-cnblog
- URI vs URL
- 圖解 HTTP-書
- 瀏覽器 HTTP 協(xié)議緩存機(jī)制詳解
本教程版權(quán)歸小韓同學(xué)和饑人谷所有,轉(zhuǎn)載須說明來源