1. OSI 七層模型指什么
OSI(Open System Interconnection,開放系統(tǒng)互連)七層網(wǎng)絡(luò)模型稱為開放式系統(tǒng)互聯(lián)參考模型 ,是一個邏輯上的定義,一個規(guī)范,它把網(wǎng)絡(luò)從邏輯上分為了7層。每一層都有相關(guān)、相對應的物理設(shè)備,比如路由器,交換機。
OSI 七層模型是一種框架性的設(shè)計方法 ,建立七層模型的主要目的是為解決異種網(wǎng)絡(luò)互連時所遇到的兼容性問題,其最主要的功能使就是幫助不同類型的主機實現(xiàn)數(shù)據(jù)傳輸。
它的最大優(yōu)點是將服務、接口和協(xié)議這三個概念明確地區(qū)分開來,通過七個層次化的結(jié)構(gòu)模型使不同的系統(tǒng)不同的網(wǎng)絡(luò)之間實現(xiàn)可靠的通訊。





物理層:主要定義物理設(shè)備標準,如網(wǎng)線的接口類型、光纖的接口類型、各種傳輸介質(zhì)的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉(zhuǎn)化為電流強弱來進行傳輸,到達目的地后在轉(zhuǎn)化為1、0,也就是我們常說的數(shù)模轉(zhuǎn)換與模數(shù)轉(zhuǎn)換)。這一層的數(shù)據(jù)叫做比特。
數(shù)據(jù)鏈路層:定義了如何讓格式化數(shù)據(jù)以進行傳輸,以及如何讓控制對物理介質(zhì)的訪問。這一層通常還提供錯誤檢測和糾正,以確保數(shù)據(jù)的可靠傳輸。
網(wǎng)絡(luò)層:在位于不同地理位置的網(wǎng)絡(luò)中的兩個主機系統(tǒng)之間提供連接和路徑選擇。Internet的發(fā)展使得從世界各站點訪問信息的用戶數(shù)大大增加,而網(wǎng)絡(luò)層正是管理這種連接的層。
傳輸層:定義了一些傳輸數(shù)據(jù)的協(xié)議和端口號(WWW端口80等),如:TCP(傳輸控制協(xié)議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數(shù)據(jù)量大的數(shù)據(jù))UDP( 用戶數(shù)據(jù)報協(xié)議 ,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數(shù)據(jù)量小的數(shù)據(jù),如QQ聊天數(shù)據(jù)就是通過這種方式傳輸?shù)模?。主要是將從下層接收的?shù)據(jù)進行分段和傳輸,到達目的地址后再進行重組。常常把這一層數(shù)據(jù)叫做段。
會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數(shù)據(jù)傳輸?shù)耐?。主要在你的系統(tǒng)之間發(fā)起會話或者接受會話請求(設(shè)備之間需要互相認識可以是IP也可以是MAC或者是主機名)
表示層:可確保一個系統(tǒng)的應用層所發(fā)送的信息可以被另一個系統(tǒng)的應用層讀取。例如,PC程序與另一臺計算機進行通信,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符。如有必要,表示層會通過使用一種通格式來實現(xiàn)多種數(shù)據(jù)格式之間的轉(zhuǎn)換。
應用層: 是最靠近用戶的OSI層。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網(wǎng)絡(luò)服務。
2. HTTP 的工作原理是什么?
以下是HTTP請求/響應的步驟:
客戶端連接到Web服務器
一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。發(fā)送HTTP請求
通過TCP套接字,客戶端向Web服務器發(fā)送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4部分組成。服務器接受請求并返回HTTP響應
Web服務器解析請求,定位請求資源。服務器將資源復本寫到TCP套接字,由客戶端讀取。一個響應由狀態(tài)行、響應頭部、空行和響應數(shù)據(jù)4部分組成。釋放連接TCP連接
Web服務器主動關(guān)閉TCP套接字,釋放TCP連接;客戶端被動關(guān)閉TCP套接字,釋放TCP連接。客戶端瀏覽器解析HTML內(nèi)容
客戶端瀏覽器首先解析狀態(tài)行,查看表明請求是否成功的狀態(tài)代碼。然后解析每一個響應頭,響應頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集??蛻舳藶g覽器讀取響應數(shù)據(jù)HTML,根據(jù)HTML的語法對其進行格式化,并在瀏覽器窗口中顯示。
3. URI 的格式是什么?常見的協(xié)議有哪些
http://mail.163.com/index.html
- http://:這個是協(xié)議,也就是HTTP超文本傳輸協(xié)議,也就是網(wǎng)頁在網(wǎng)上傳輸?shù)膮f(xié)議。
- mail:這個是服務器名,代表著是一個郵箱服務器,所以是mail.
- 163.com:這個是域名,是用來定位網(wǎng)站的獨一無二的名字。
- mail.163.com:這個是網(wǎng)站名,由服務器名+域名組成。
- /:這個是根目錄,也就是說,通過網(wǎng)站名找到服務器,然后在服務器存放網(wǎng)頁的根目錄
- index.html:這個是根目錄下的默認網(wǎng)頁(當然,163的默認網(wǎng)頁是不是這個我不知道,只是大部分的默認網(wǎng)頁,都是index.html)
-
http://mail.163.com/index.html:這個叫做URL,統(tǒng)一資源定位符,全球性地址,用于定位網(wǎng)上的資源。

常見的協(xié)議有http,https,ftp,mailto,telnet、file
常見協(xié)議參考
4. HTTP 協(xié)議有幾種和服務器交互的方法
HTTP最大的作用就是客戶端發(fā)送請求,服務器給出響應,客戶端想服務器發(fā)送請求的方式有很多
| 方法 | 作用 |
|---|---|
| GET | 是最常用的方法,通常用于請求服務器發(fā)送某個資源我們平時在瀏覽器輸入網(wǎng)頁地址,就是給服務器發(fā)送了一個get請求,希望得到這個網(wǎng)頁 |
| HEAD | 和GET類似,但是在服務器的響應中沒有資源的內(nèi)容,只有資源的一些基本信息,主要用于 1. 在不獲取資源的情況下獲取資源信息(類型、大小等2. 通過狀態(tài)碼產(chǎn)看資源是否存在3. 通過查看首部,測試資源是否被修改了 |
| PUT | 和GET從服務器獲取資源相反,PUT用于想服務器寫入資源。PUT的語義就是讓服務器用請求的主體部分創(chuàng)建一個請求URL命名的文檔,如果存在就替換。當然處于安全原因,并不是所有的服務器都實現(xiàn),當然最近大熱的RESTful API使它有了用武之地 |
| POST | 用于想服務器發(fā)送數(shù)據(jù),通常用來支持HTML的表單(input、select、textarea),表單中的數(shù)據(jù)會被發(fā)送到服務器 |
| TRACE | 客戶端發(fā)送一個請求的時候,這個請求可能會穿過防火墻、代理、網(wǎng)關(guān)和一些其它應用程序,沒個中間節(jié)點都可能修改HTTP請求,TRACE方法允許客戶端在最終請求發(fā)往服務器的時候,看看它變成了什么樣子TRACE請求會在目的服務器端發(fā)送一個“閉環(huán)”診斷,行程最后一站服務器會彈回一條TRACE響應,并在響應主題中攜帶它收到的原始請求報文 |
| DELETE | 用于要求服務器刪除請求的URL,和PUT一樣,服務器可能會不支持 |
| OPTIONS | 用于請求 web服務器告知其支持的各種功能 |
5. 狀態(tài)碼200,301,304,403,404,500,503分別代表什么意思
Status Code
完整的 HTTP 1.1規(guī)范說明書來自于RFC 2616,HTTP 1.1的狀態(tài)碼被標記為新特性,用來表示請求的結(jié)果,狀態(tài)碼被分為五大類:
- 100-199 用于指定客戶端應相應的某些動作。
- 200-299 用于表示請求成功。
- 300-399 用于已經(jīng)移動的文件并且常被包含在定位頭信息中指定新的地址信息。
- 400-499 用于指出客戶端的錯誤。
- 500-599 用于支持服務器錯誤。
| 狀態(tài)代碼 | 狀態(tài)信息 | 含義 |
|---|---|---|
| 200 | OK | 一切正常,對GET和POST請求的應答文檔跟在后面。 |
| 301 | Moved Permanently | 客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。 |
| 304 | Not Modified | 客戶端有緩沖的文檔并發(fā)出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告 訴客戶,原來緩沖的文檔還可以繼續(xù)使用。 |
| 403 | Forbidden | 資源不可用。服務器理解客戶的請求,但拒絕處理它。通常由于服務器上文件或目錄的權(quán)限設(shè)置導致。 |
| 404 | Not Found | 無法找到指定位置的資源。這也是一個常用的應答。 |
| 500 | Internal Server Error | 服務器遇到了意料不到的情況,不能完成客戶的請求。 |
| 503 | Service Unavailable | 服務器由于維護或者負載過重未能應答。例如,Servlet可能在數(shù)據(jù)庫連接池已滿的情況下返回503。服務器返回503時可以提供一個 Retry-After頭。 |
6. 報文有哪幾部分組成?
1、請求報文的組成
起始行(請求方法,URI及協(xié)議版本)
首部(請求首部, 通用首部 ,實體首部及其他)
空行
報文主體;2、響應報文的組成
起始行(版本協(xié)議 ,狀態(tài)碼, 狀態(tài)碼對應的短語解釋)
首部(響應首部,通用首部,實體首部及其他)
空行
報文主體。
HTTP/1.0 200 OK
content-type: text/plain
content-length: 19
Hi, I'm a message
起始行和首部就是由行分隔的ASCII文本,主題是一個可選的數(shù)據(jù)塊,可能是文本、二進制或者為空
7. 請求頭的格式和作用是什么?給個范例截圖說明

`
8. 首部的格式和作用是什么?給個范例截圖說明

9. 主體的作用是什么?給個范例
主體就是服務端返回的頁面代碼等信息

10. 簡述瀏覽器緩存是如何控制的

注:除了Last-Modified和Etag,上面沒有把http1.0的產(chǎn)物---Expires和Pragma及http1.1的產(chǎn)物--Cache-Control列出來 。 關(guān)于Last-Modified、Etag、Expires及Cache-Control 可見下圖:

具體可詳見:HTTP緩存控制小結(jié)
文章提到,當同時存在Pragma 、Cache-Control、 Expires時, 優(yōu)先級從高到低分別是 Pragma -> Cache-Control -> Expires
其他緩存詳細介紹可見:騰訊web前端團隊博客 或者博客園的這篇文章
11. 下圖各個參數(shù)是什么意思

