1.OSI 七層模型指什么
OSI(Open System Interconnection判帮,開放系統(tǒng)互連)七層網(wǎng)絡(luò)模型稱為開放式系統(tǒng)互聯(lián)參考模型 ,是一個(gè)邏輯上的定義氓侧,一個(gè)規(guī)范脊另,它把網(wǎng)絡(luò)從邏輯上分為了7層导狡。
由下往上可分為:
2.HTTP 的工作原理是什么约巷?
(1)客戶端連接到Web服務(wù)器
一個(gè)HTTP客戶端,通常是瀏覽器旱捧,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP套接字連接独郎。
(2)發(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部分組成。
(3)服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)
Web服務(wù)器解析請(qǐng)求贪婉,定位請(qǐng)求資源反粥。服務(wù)器將資源復(fù)本寫到TCP套接字,由客戶端讀取疲迂。一個(gè)響應(yīng)由狀態(tài)行才顿、響應(yīng)頭部、空行和響應(yīng)數(shù)據(jù)4部分組成尤蒿。
(4)釋放連接TCP連接
Web服務(wù)器主動(dòng)關(guān)閉TCP套接字郑气,釋放TCP連接;客戶端被動(dòng)關(guān)閉TCP套接字腰池,釋放TCP連接尾组。
(5)客戶端瀏覽器解析HTML內(nèi)容
客戶端瀏覽器首先解析狀態(tài)行,查看表明請(qǐng)求是否成功的狀態(tài)代碼示弓。然后解析每一個(gè)響應(yīng)頭讳侨,響應(yīng)頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集∽嗍簦客戶端瀏覽器讀取響應(yīng)數(shù)據(jù)HTML爷耀,根據(jù)HTML的語(yǔ)法對(duì)其進(jìn)行格式化,并在瀏覽器窗口中顯示拍皮。
3.URI 的格式是什么歹叮?常見的協(xié)議有哪些
格式:<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
-
<scheme>協(xié)議方案名,常見的協(xié)議有:
(1)http:應(yīng)用最廣泛的網(wǎng)絡(luò)傳輸協(xié)議,主要用于傳輸網(wǎng)頁(yè)資源
(2)https:超文本傳輸安全協(xié)議,是一種網(wǎng)絡(luò)安全傳輸協(xié)議铆帽,使用超文本傳輸協(xié)議進(jìn)行通訊咆耿,但利用 SSL/TLS 協(xié)議來(lái)對(duì)封包進(jìn)行加密
(3)ftp:文件傳輸協(xié)議,主要用于傳輸文件
(4)smtp:簡(jiǎn)單郵件傳輸協(xié)議,主要用于以推送方式傳輸郵件
(5)imap:交互郵件訪問(wèn)協(xié)議,主要用于訪問(wèn)遠(yuǎn)程服務(wù)器上的郵件
(6)ssh:計(jì)算機(jī)上的 Shell 提供安全的傳輸和使用環(huán)境的安全協(xié)議
- <user>:<password>登錄信息:認(rèn)證信息
- <host>主機(jī)名:IP地址或域名,用于確定要連接的對(duì)象的地址
- <port>端口號(hào):用來(lái)區(qū)分主機(jī)上的進(jìn)程爹橱,方便找到web服務(wù)器萨螺,一般不需要寫(http默認(rèn)80,https默認(rèn)443愧驱,ftp默認(rèn)21)
- <path>路徑:帶層次的資源路徑慰技,符合web服務(wù)器路由約定即可
- <params>參數(shù):在一些協(xié)議中需要參數(shù)來(lái)訪問(wèn)資源,例如ftp是二進(jìn)制還是文本傳輸组砚,參數(shù)是名值對(duì)吻商,用;隔開
- <query>查詢字符串:主要用于 get 請(qǐng)求傳遞參數(shù),name=value的形式
- <hash>片段標(biāo)識(shí)符:用于標(biāo)識(shí)文檔的一部分糟红,又稱錨點(diǎn)艾帐,對(duì)server沒用乌叶,協(xié)議不傳輸
4.HTTP 協(xié)議有幾種和服務(wù)器交互的方法
- GET:最常用,通常用于請(qǐng)求服務(wù)器發(fā)送某個(gè)資源(平時(shí)在瀏覽器輸入網(wǎng)頁(yè)地址就是給服務(wù)器發(fā)送一個(gè)GET請(qǐng)求)
- POST:用于向服務(wù)器發(fā)送數(shù)據(jù)柒爸,通常用來(lái)支持HTML表單准浴,將表單中的數(shù)據(jù)發(fā)送到服務(wù)器
- HEAD:和GET類似,但是在服務(wù)器的響應(yīng)中沒有資源的內(nèi)容捎稚,只有資源的一些基本信息乐横,主要用于: 1.在不獲取資源的情況下獲取資源信息(類型、大小等) 2.通過(guò)狀態(tài)碼產(chǎn)看資源是否存在 3.通過(guò)查看首部今野,測(cè)試資源是否被修改了
- PUT:和GET從服務(wù)器獲取資源相反晰奖,PUT用于向服務(wù)器寫入資源;PUT的語(yǔ)義就是讓服務(wù)器用請(qǐng)求的主體部分創(chuàng)建一個(gè)請(qǐng)求URL命名的文檔腥泥,如果存在就替換匾南;出于安全原因不是所有的服務(wù)器都能實(shí)現(xiàn)
- TRACE:客戶端發(fā)送一個(gè)請(qǐng)求的時(shí)候,這個(gè)請(qǐng)求可能會(huì)穿過(guò)防火墻蛔外、代理蛆楞、網(wǎng)關(guān)和一些其它應(yīng)用程序,每個(gè)中間節(jié)點(diǎn)都可能修改HTTP請(qǐng)求夹厌,TRACE方法允許客戶端在最終請(qǐng)求發(fā)往服務(wù)器的時(shí)候豹爹,看看它變成了什么樣子;TRACE請(qǐng)求會(huì)在目的服務(wù)器端發(fā)送一個(gè)“閉環(huán)”診斷矛纹,行程最后一站服務(wù)器會(huì)彈回一條TRACE響應(yīng)臂聋,并在響應(yīng)主題中攜帶它收到的原始請(qǐng)求報(bào)文
- DELETE:DELETE方法用于要求服務(wù)器刪除請(qǐng)求的URL,和PUT一樣或南,服務(wù)器可能會(huì)不支持(刪除資源)
- OPTIONS:OPTIONS方法用于請(qǐng)求 web服務(wù)器告知其支持的各種功能(比如查看-服務(wù)器支持以上哪幾種方法)
5.狀態(tài)碼200孩等,301, 304采够,403,404,500肄方,503分別代表什么意思
- 200:OK;該請(qǐng)求被成功地完成蹬癌,所請(qǐng)求的資源發(fā)送回客戶端权她。
- 301:Moved Permanently;永久性定向逝薪,客戶請(qǐng)求的文檔在其他地方隅要,新的URL在Location頭中給出,瀏覽器應(yīng)該自動(dòng)地訪問(wèn)新的URL
- 304:Not Modified董济;上次的文檔已經(jīng)被緩存了步清, 還可以繼續(xù)使用。
- 403:Forbidden感局;服務(wù)器收到請(qǐng)求尼啡,但是拒絕提供服務(wù)
- 404:Not Found暂衡;請(qǐng)求資源不存在(一般是輸錯(cuò)了URL)
- 500:Internal Server Error询微;服務(wù)器發(fā)生了不可預(yù)期的錯(cuò)誤
- 503:Server Unavailable崖瞭;服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常
6.報(bào)文有哪幾部分組成撑毛?
- 請(qǐng)求報(bào)文:
(1)起始行:請(qǐng)求方法书聚、URI、協(xié)議版本
(2)首部:請(qǐng)求首部藻雌、通用首部 雌续、實(shí)體首部及其他
(3)空行
(4)報(bào)文主體 - 響應(yīng)報(bào)文:
(1)起始行:協(xié)議版本、狀態(tài)碼胯杭、狀態(tài)碼描述
(2)首部:響應(yīng)首部驯杜、通用首部、實(shí)體首部及其他
(3)空行
(4)報(bào)文主體
7.請(qǐng)求頭的格式和作用是什么做个?給個(gè)范例截圖說(shuō)明
Accept:瀏覽器能接收的資源類型
Accept-Encoding:告訴服務(wù)器能夠發(fā)送哪些編碼
Accept-Language:告訴服務(wù)器能夠發(fā)送哪些語(yǔ)言
Cache-Control:緩存控制
Connection:客戶端和服務(wù)器是否保持連接
Cookie:客戶端字符串
Host:接受請(qǐng)求的服務(wù)器的主機(jī)號(hào)和端口號(hào)
User-Agent:發(fā)起請(qǐng)求的客戶端應(yīng)用程序
8.首部的格式和作用是什么鸽心?給個(gè)范例截圖說(shuō)明
Request URL:請(qǐng)求的URL地址
Request Method:請(qǐng)求的方法
Status Code:狀態(tài)碼
Remote Address:遠(yuǎn)程地址即服務(wù)器地址
9.主體的作用是什么?給個(gè)范例
主體就是客戶端和服務(wù)器所傳輸?shù)闹饕獌?nèi)容
10.簡(jiǎn)述瀏覽器緩存是如何控制的
瀏覽器是否使用緩存居暖、緩存多久顽频,是由服務(wù)器控制的。準(zhǔn)確來(lái)說(shuō)太闺,當(dāng)瀏覽器請(qǐng)求一個(gè)網(wǎng)頁(yè)(或者其他資源)時(shí)糯景,服務(wù)器發(fā)回的響應(yīng)的「響應(yīng)頭」部分的某些字段指明了有關(guān)緩存的關(guān)鍵信息。通過(guò)Expires,Cache-Contrll省骂,Last-Modified/If-Modified-Since蟀淮,Etag/If-None-Match控制。
- Expires:是Web服務(wù)器響應(yīng)消息頭字段钞澳,在響應(yīng)http請(qǐng)求時(shí)告訴瀏覽器在過(guò)期時(shí)間前瀏覽器可以直接從瀏覽器緩存取數(shù)據(jù)灭贷,而無(wú)需再次請(qǐng)求。
- Cache-Control:與Expires的作用一致略贮,都是指明當(dāng)前資源的有效期甚疟,控制瀏覽器是否直接從瀏覽器緩存取數(shù)據(jù)還是重新發(fā)請(qǐng)求到服務(wù)器取數(shù)據(jù),不過(guò)Cache-Control有多個(gè)參數(shù)逃延,優(yōu)先級(jí)高于Expires览妖。
- Last-Modified/If-Modified-Since:Last-Modified/If-Modified-Since要配合Cache-Control使用。最后修改時(shí)間/除非在某個(gè)制定日期之后修改過(guò)揽祥,否則限制這個(gè)請(qǐng)求
- Etag/If-None-Match:Etag/If-None-Match也要配合Cache-Control使用讽膏。
Etag:web服務(wù)器響應(yīng)請(qǐng)求時(shí),告訴瀏覽器當(dāng)前資源在服務(wù)器的唯一標(biāo)識(shí)拄丰。
If-None-Match:當(dāng)資源過(guò)期時(shí)(使用Cache-Control標(biāo)識(shí)的max-age)府树,發(fā)現(xiàn)資源具有Etage聲明俐末,則再次向web服務(wù)器請(qǐng)求時(shí)帶上頭If-None-Match(Etag的值)
參考