問(wèn)答
OSI 七層模型指什么 (難度***)
- OSI參考模型(OSI/RM)的全稱是開(kāi)放系統(tǒng)互連參考模型(Open System Interconnection Reference Model,OSI/RM),它是由國(guó)際標(biāo)準(zhǔn)化組織ISO提出的一個(gè)網(wǎng)絡(luò)系統(tǒng)互連模型。
- 模型把網(wǎng)絡(luò)通信的工作分為7層。1至4層被認(rèn)為是低層,這些層與數(shù)據(jù)移動(dòng)密切相關(guān)。5至7層是高層,包含應(yīng)用程序級(jí)的數(shù)據(jù)。每一層負(fù)責(zé)一項(xiàng)具體的工作,然后把數(shù)據(jù)傳送到下一層。由低到高具體分為:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。
- 第7層應(yīng)用層:直接對(duì)應(yīng)用程序提供服務(wù),提供網(wǎng)絡(luò)服務(wù)的接口,常見(jiàn)的HTTP、FTP都屬于此層。
- 第6層表示層:提供數(shù)據(jù)格式轉(zhuǎn)換服務(wù),例如:URL加密、口令加密、圖片編解碼
- 第5層會(huì)話層:建立端連接并提供訪問(wèn)驗(yàn)證和會(huì)話管理,例如使用校驗(yàn)點(diǎn)恢復(fù)通信,常見(jiàn):服務(wù)器驗(yàn)證用戶登陸、斷點(diǎn)續(xù)傳。
- 第4層傳輸層:提供應(yīng)用進(jìn)程之間的邏輯通信,例如:建立連接,處理數(shù)據(jù)包錯(cuò)誤、數(shù)據(jù)包次序,常見(jiàn):TCP、UDP、進(jìn)程、端口(socket)
- 第3層網(wǎng)絡(luò)層:為數(shù)據(jù)在節(jié)點(diǎn)之間傳輸創(chuàng)建邏輯鏈路,例如:對(duì)子網(wǎng)間的數(shù)據(jù)包進(jìn)行路由選擇,常見(jiàn):路由器、多層交換機(jī)、防火墻、IP、IPX、RIP、OSPF。
- 第2層鏈路層:在通信的實(shí)體間建立數(shù)據(jù)鏈路連接,例如:將數(shù)據(jù)分幀,并處理流控制、物理地址尋址、重發(fā)等,常見(jiàn):網(wǎng)卡,網(wǎng)橋,二層交換機(jī)。
- 第1層物理層:為數(shù)據(jù)端設(shè)備提供原始比特流的傳輸?shù)耐罚纾壕W(wǎng)絡(luò)通信的數(shù)據(jù)傳輸介質(zhì),由電纜與設(shè)備共同構(gòu)成,常見(jiàn)的有:中繼器、集線器、網(wǎng)線等。
HTTP 的工作原理是什么? (難度***)
HTTP協(xié)議采用請(qǐng)求/相應(yīng)模型??蛻舳讼蚍?wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文,請(qǐng)求報(bào)文包含請(qǐng)求的放大、URL、協(xié)議版本、請(qǐng)求頭部、請(qǐng)求數(shù)據(jù)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括:協(xié)議版本、狀態(tài)碼、服務(wù)器信息、相應(yīng)頭部和響應(yīng)數(shù)據(jù)。下圖表明了這種請(qǐng)求/響應(yīng)模型:
以下是HTTP請(qǐng)求/響應(yīng)的步驟:
- 客戶端連接到Web服務(wù)器
一個(gè)HTTP客戶端,通常是瀏覽器,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP套接字(socket)連接。
- 客戶端連接到Web服務(wù)器
- 發(fā)送HTTP請(qǐng)求
通過(guò)TCP套接字,客戶端向Web服務(wù)器發(fā)送一個(gè)文本的請(qǐng)求報(bào)文,一個(gè)請(qǐng)求報(bào)文由請(qǐng)求行、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)4部分組成。
- 發(fā)送HTTP請(qǐng)求
- 服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)
Web服務(wù)器解析請(qǐng)求,定位請(qǐng)求資源。服務(wù)器將資源復(fù)本寫(xiě)到TCP套接字,由客戶端讀取。一個(gè)響應(yīng)由狀態(tài)行、響應(yīng)頭部、空行和響應(yīng)數(shù)據(jù)4部分組成。
- 服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)
- 釋放連接TCP連接
Web服務(wù)器主動(dòng)關(guān)閉TCP套接字,釋放TCP連接;客戶端被動(dòng)關(guān)閉TCP套接字,釋放TCP連接。
- 釋放連接TCP連接
- 客戶端瀏覽器解析HTML內(nèi)容
客戶端瀏覽器首先解析狀態(tài)行,查看表明請(qǐng)求是否成功的狀態(tài)代碼。然后解析每一個(gè)響應(yīng)頭,響應(yīng)頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集??蛻舳藶g覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語(yǔ)法對(duì)其進(jìn)行格式化,并在瀏覽器窗口中顯示。
- 客戶端瀏覽器解析HTML內(nèi)容
URI 的格式是什么?常見(jiàn)的協(xié)議有哪些 (難度***)
- URI(Uniform Resource Identifier),統(tǒng)一資源標(biāo)識(shí)符,其格式如下:
protocol:// [username:password@]hostname[:port]/path/[;parameters][?query]#fragment
其中帶方括號(hào)[]的為可選項(xiàng)
protocol -> 協(xié)議
username -> 用戶名(不常用)
password -> 密碼(不常用)
hostname -> 主機(jī)名
port -> 端口號(hào)
path -> 路徑
parameters -> 參數(shù)(不常用)
query -> 查詢字符串,是一組鍵值對(duì),如有多個(gè)參數(shù)用“&”符號(hào)隔開(kāi)
fragment -> 信息片斷(hash),網(wǎng)頁(yè)內(nèi)部定位
- 常見(jiàn)的協(xié)議:
-
http
:HyperText Transfer Protocol,超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上應(yīng)用最廣泛的一種網(wǎng)絡(luò)協(xié)議
-
-
file
:資源是本地計(jì)算機(jī)上的文件
-
-
ftp
:File Transfer Protoco,文件傳輸協(xié)議,用于Internet上的控制文件的雙向傳輸
-
-
https
:Hyper Text Transfer Protocol over Secure Socket Layer,是以安全為目標(biāo)的HTTP通道,,即HTTP下加入SSL層,簡(jiǎn)單講是HTTP的安全版。
-
-
mailto
:創(chuàng)建一個(gè)指向電子郵件地址的超級(jí)鏈接,通過(guò)該鏈接可以在Internet中發(fā)送電子郵件。
-
-
ed2k
:eDonkey2000 network,中文名電驢,是一種文件共享網(wǎng)絡(luò)協(xié)議
-
-
thunder
:迅雷專用下載文件協(xié)議
-
HTTP 協(xié)議有幾種和服務(wù)器交互的方法 (難度***)
-
GET
:從指定的資源請(qǐng)求數(shù)據(jù) -
POST
:向指定的資源提交要被處理的數(shù)據(jù) -
HEAD
:與GET
相同,但只返回 HTTP 報(bào)頭,不返回文檔主體。 -
PUT
:向服務(wù)器發(fā)送請(qǐng)求,如果URI不存在,則要求服務(wù)器根據(jù)請(qǐng)求創(chuàng)建資源,如果存在,服務(wù)器就接受請(qǐng)求內(nèi)容,并修改URI資源的原始版本。 -
DELETE
:刪除指定資源。 -
OPTIONS
:返回服務(wù)器支持的 HTTP 方法。 -
CONNECT
:把請(qǐng)求連接轉(zhuǎn)換到透明的 TCP/IP 通道,用于HTTP代理,不在網(wǎng)頁(yè)開(kāi)發(fā)中使用。
狀態(tài)碼200,301, 304,403,404,500,503分別代表什么意思 (難度****)
狀態(tài)碼 | 狀態(tài)信息 | 含義 |
---|---|---|
200 | OK | 一切正常,對(duì)GET和POST請(qǐng)求的應(yīng)答文檔跟在后面 |
301 | Moved Permanently | 客戶請(qǐng)求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應(yīng)該自動(dòng)地訪問(wèn)新的URL。(永久性重定向) |
304 | Not Modified | 客戶端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,原來(lái)緩沖的文檔還可以繼續(xù)使用。 |
403 | Forbidden | 資源不可用。服務(wù)器理解客戶的請(qǐng)求,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致。 |
404 | Not Found | 無(wú)法找到指定位置的資源。 |
500 | Internal Server Error | 服務(wù)器遇到了意料不到的情況,不能完成客戶的請(qǐng)求。 |
503 | Service Unavailable | 服務(wù)器由于維護(hù)或者負(fù)載過(guò)重未能應(yīng)答。例如,Servlet可能在數(shù)據(jù)庫(kù)連接池已滿的情況下返回503。服務(wù)器返回503時(shí)可以提供一個(gè) Retry-After頭。 |
報(bào)文有哪幾部分組成? (可選 難度****)
- HTTP報(bào)文是簡(jiǎn)單的格式化數(shù)據(jù)塊,每個(gè)報(bào)文都包含一條來(lái)自客戶端的請(qǐng)求或者一條來(lái)自服務(wù)器的響應(yīng),由3個(gè)部分組成,如下所示
<request-line> // 請(qǐng)求行
<headers> // 首部
<blank line> // 空白行
[<request-body>] // 請(qǐng)求主體
- 在HTTP請(qǐng)求中,第一行必須是一個(gè)請(qǐng)求行(request line),用來(lái)說(shuō)明請(qǐng)求類型、要訪問(wèn)的資源以及使用的HTTP版本。緊接著是一個(gè)首部(header)小節(jié),用來(lái)說(shuō)明服務(wù)器要使用的附加信息。在首部之后是一個(gè)空行,再此之后可以添加任意的其他數(shù)據(jù)[稱之為主體(body)]。
請(qǐng)求頭的格式和作用是什么?給個(gè)范例截圖說(shuō)明 (可選 難度****)
-
以訪問(wèn)百度首頁(yè)為例,查看他的請(qǐng)求頭如下圖所示:
請(qǐng)求頭
請(qǐng)求頭 | 作用 |
---|---|
Request URL | 請(qǐng)求的URL地址 |
Request Method | 請(qǐng)求方法 |
Status Code | 返回的狀態(tài)碼 |
Remote Address | 遠(yuǎn)程IP地址 |
首部的格式和作用是什么?給個(gè)范例截圖說(shuō)明 (可選 難度****)
-
以訪問(wèn)百度首頁(yè)為例,查看他的首部如下圖所示:
首部
首部 | 作用 |
---|---|
Accept | 告訴服務(wù)器能夠發(fā)送那些媒體類型(MIME) |
Accept-Encoding | 告訴瀏覽器能夠發(fā)送的壓縮編碼格式 |
Accept-Language | 告訴服務(wù)器能夠發(fā)送那些語(yǔ)言 |
Cache-Control | 隨報(bào)文傳送緩存指示 |
Connection | 客戶端和服務(wù)器是否保持連接 |
Cookie | 客戶端內(nèi)的緩存 |
Host | 接收請(qǐng)求的服務(wù)器的主機(jī)名和端口號(hào) |
Upgrade-Insecure-Requests | 用于讓瀏覽器自動(dòng)升級(jí)請(qǐng)求從http到https,讓大量包含http資源的http網(wǎng)頁(yè)直接升級(jí)到https而不會(huì)報(bào)錯(cuò) |
User-Agent | 發(fā)起請(qǐng)求的客戶端應(yīng)用程序(瀏覽器) |
主體的作用是什么?給個(gè)范例(可選 截圖說(shuō)明難度****)
- 一般get方法的請(qǐng)求中沒(méi)有主體,post方法的請(qǐng)求中主體為數(shù)據(jù)的字符串,而響應(yīng)報(bào)文的主體即為網(wǎng)頁(yè)的HTML文本
簡(jiǎn)述瀏覽器緩存是如何控制的(可選 難度*****)
- 瀏覽器是否使用緩存、緩存多久,是由服務(wù)器控制的。當(dāng)瀏覽器請(qǐng)求網(wǎng)頁(yè)時(shí),服務(wù)器返回的HTTP響應(yīng)報(bào)文中,包含有關(guān)緩存的4個(gè)字段的關(guān)鍵信息。
- Cache-Control : 緩存的指示信息
- Expires : 資源失效的日期
- Last-Modified : 資源最后一次的修改時(shí)間
- ETag : 對(duì)資源的唯一性標(biāo)識(shí)
- 當(dāng) Expires 和 Cache-Control 同時(shí)出現(xiàn)時(shí),通常后者會(huì)覆蓋前者的設(shè)定。在過(guò)期時(shí)間以內(nèi),用戶點(diǎn)擊刷新按鈕了大部分瀏覽器不會(huì)直接使用緩存中的數(shù)據(jù),而會(huì)發(fā)一個(gè)條件請(qǐng)求。對(duì)于這類請(qǐng)求,瀏覽器會(huì)在請(qǐng)求頭中包含
If-Modified-Since
或If-None-Match
字段。前者是瀏覽器當(dāng)初得到的Last-Modified,后者是ETag。當(dāng)服務(wù)器發(fā)現(xiàn)資源更新的時(shí)間晚于If-Modified-Since所示的時(shí)間,或者資源在服務(wù)器當(dāng)前的ETag和If-None-Match所提供的不符時(shí),會(huì)響應(yīng)整個(gè)資源,否則只會(huì)響應(yīng)一個(gè)304 Not Modified的狀態(tài)碼。 - 此外,如果資源過(guò)期,瀏覽器通常會(huì)有兩種選擇:重新下載這個(gè)資源,或發(fā)出一個(gè)條件請(qǐng)求。很多瀏覽器會(huì)采取后者,以節(jié)約資源。
下圖各個(gè)參數(shù)是什么意思(可選 難度*****)
-
從上往下依次為:
題目圖片
參數(shù) | 作用 |
---|---|
Request URL | 請(qǐng)求的URL地址 |
Request Method | 請(qǐng)求方法 |
Status Code | 返回的狀態(tài)碼 |
Remote Address | 遠(yuǎn)程IP地址 |
Connection | 客戶端和服務(wù)器是否保持連接 |
Content-Length | 響應(yīng)主體的長(zhǎng)度 |
Content-Type | 響應(yīng)主體的MIME |
Date | 報(bào)文創(chuàng)建日期 |
Server | 服務(wù)器應(yīng)用軟件名稱和版本 |
X-Powered-By | 非標(biāo)準(zhǔn)字段,表示PHP版本的信息 |
Accept | 告訴服務(wù)器能夠發(fā)送那些媒體類型(MIME) |
Accept-Encoding | 告訴瀏覽器能夠發(fā)送的壓縮編碼格式 |
Accept-Language | 告訴服務(wù)器能夠發(fā)送那些語(yǔ)言 |
Cookie | 客戶端內(nèi)的緩存 |
Host | 接收請(qǐng)求的服務(wù)器的主機(jī)名和端口號(hào) |
Origin | 表示源服務(wù)器 |
Referer | 提供了包含當(dāng)前請(qǐng)求URI的文檔的URL,告訴服務(wù)器自己來(lái)源 |
User-Agent | 發(fā)起請(qǐng)求的客戶端應(yīng)用程序(瀏覽器) |
X-Requested-With | 發(fā)送請(qǐng)求報(bào)文的方式 |