問答
1.OSI 七層模型指什么
七層模型匙奴,也就是OSI(Open System Interconnection)详炬,即開放式系統(tǒng)互聯(lián)通信模型
裙品。
它是國際標(biāo)準(zhǔn)化組織(ISO)
制定的一個用于計算機(jī)或通信系統(tǒng)間互聯(lián)的標(biāo)準(zhǔn)體系
忍宋,一般稱為OSI參考模型或七層模型帝火。
它是一個七層的溜徙、抽象的模型
,不僅包括一系列抽象的概念
犀填,也包括具體的協(xié)議
蠢壹。
從低到高:
物理層 -> 數(shù)據(jù)鏈路層 -> 網(wǎng)絡(luò)層 -> 傳輸層 -> 會話層 -> 表示層 -> 應(yīng)用層
2.HTTP 的工作原理是什么?
HTTP協(xié)議采用請求/響應(yīng)模型,即客戶端向服務(wù)器發(fā)送一個請求報文九巡,服務(wù)器以一個狀態(tài)作為響應(yīng)图贸。
工作原理:
①客戶端連接到web服務(wù)器
一個HTTP客戶端,通常是瀏覽器冕广,與web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個TCP套接字連接疏日。
②客戶端向服務(wù)器發(fā)起HTTP請求
通過已建立的TCP 連接,客戶端向服務(wù)器發(fā)送一個請求報文;一個請求報文由請求行撒汉、請求頭部沟优、空行和請求數(shù)據(jù)4部分組成。
③服務(wù)器接受請求并返回HTTP響應(yīng)
Web服務(wù)器解析請求睬辐,定位請求資源挠阁。服務(wù)器將資源副本寫到TCP套接字宾肺,由客戶端讀取。一個響應(yīng)由狀態(tài)行侵俗、響應(yīng)頭部锨用、空行和響應(yīng)數(shù)據(jù)4部分組成。
④服務(wù)器斷開TCP 連接
Web服務(wù)器主動關(guān)閉TCP套接字隘谣,斷開TCP連接增拥;客戶端被動關(guān)閉TCP套接字,斷開TCP連接洪橘。
一般情況下跪者,一旦web服務(wù)器向?yàn)g覽器發(fā)送了請求數(shù)據(jù),它就要關(guān)閉TCP連接熄求,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼Connection:keep-alive,TCP連接發(fā)送后將仍然保持打開狀態(tài)渣玲,于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求弟晚。保持連接節(jié)省了為每個請求建立新連接所需要的時間忘衍,還節(jié)約了網(wǎng)絡(luò)帶寬。
⑤客戶端瀏覽器解析HTML內(nèi)容
客戶端瀏覽器先解析狀態(tài)行卿城,查看表明請求是否是成功的狀態(tài)代碼枚钓。然后解析每一個響應(yīng)頭,響應(yīng)頭告知一下為若干字節(jié)的HTML文檔和文檔的字符集瑟押〔蠼荩客戶端瀏覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語法對其進(jìn)行格式化多望,并在瀏覽器窗口中顯示嫩舟。
參考文章
3.URI 的格式是什么?常見的協(xié)議有哪些
常見的協(xié)議:HTTP(HyperText Transfer Protocol 超文本傳輸協(xié)議)怀偷、HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer http的安全版)家厌、FTP(文件傳輸協(xié)議)、mailto(電子郵件協(xié)議)椎工、file(本地文件傳輸協(xié)議)
4.HTTP 協(xié)議有幾種和服務(wù)器交互的方法
根據(jù)HTTP標(biāo)準(zhǔn)饭于,HTTP請求可以使用多種請求方法,來以不同方式操作指定資源维蒙。
①GET:向服務(wù)器請求資源掰吕。
GET方法用來請求訪問已被URI識別的資源。指定的資源經(jīng)服務(wù)器解析后颅痊,返回響應(yīng)的內(nèi)容畴栖。
②POST: 向服務(wù)器發(fā)送數(shù)據(jù),返回服務(wù)器端接收數(shù)據(jù)后傳回的結(jié)果
③HEAD:該方法和GET類似八千,但是服務(wù)器的響應(yīng)中沒有資源的內(nèi)容吗讶,只有資源的一些基本信息燎猛,主要用于在不獲取資源的情況下獲取資源的信息(類型、大小等)照皆。通過狀態(tài)碼查看資源是否存在重绷,通過查看首部,可以測試資源是否被修改了膜毁。
④PUT:發(fā)送并且改寫服務(wù)器端內(nèi)容昭卓,請求會將文件的內(nèi)容保存到指定的URI中,一般來說瘟滨,服務(wù)器為安全起見候醒,不會使用該方法。
⑤DELETE:用于要求服務(wù)器刪除請求的URL杂瘸,服務(wù)器基本上不會支持這個功能倒淫。
⑥CONNECT:要求用隧道協(xié)議連接代理,隧道可按要求建立起一條與其他服務(wù)器的通信線路败玉,并使用一些加密方式敌土,讓客戶端與服務(wù)器進(jìn)行安全的通信
⑦OPTIONS: 允許客戶端查看服務(wù)器的功能
⑧TRACE:客戶端發(fā)送一個請求的時候,這個請求可能會穿過防火墻运翼、代理返干、網(wǎng)管和一些其他的應(yīng)用程序,每個中間節(jié)點(diǎn)都可能修改HTTP請求血淌,TRACE方法允許客戶端在最終請求發(fā)往服務(wù)器的時候矩欠,看看它變成了什么樣子。
5. 狀態(tài)碼200悠夯,301晚顷, 304,403,404,500疗疟,503分別代表什么意思
2xx (成功):表示成功處理了請求
200:OK,服務(wù)器收到請求瞳氓,并正常返回用戶所要求的資源
3xx (重定向):表示要完成請求策彤,需要進(jìn)一步操作
301:Moved Prmanently,資源永久重定向匣摘,表示請求的資源已被分配了新的URI店诗,瀏覽器會自動連接到新的URL。比如訪問mp3.baidu.com會跳轉(zhuǎn)到music.baidu.com音榜。區(qū)分與302的差異庞瘸,302是臨時重定向
304:自從上次請求后,請求的網(wǎng)頁未修改過赠叼,從本地緩存中讀取擦囊。
4xx(請求錯誤):這些狀態(tài)代碼表示請求可能出錯违霞,妨礙了服務(wù)器的處理
403:forbidden,表示請求被服務(wù)器拒絕瞬场,客戶端可能不具備訪問該資源的權(quán)限信息买鸽。
404:客戶端輸入有誤或者資源已被刪除,找不到資源贯被,當(dāng)服務(wù)器拒絕用戶訪問時眼五,也可能出現(xiàn)404。
5xx(服務(wù)器錯誤) :這些狀態(tài)代碼表示服務(wù)器在嘗試處理請求時發(fā)生內(nèi)部錯誤彤灶。 這些錯誤可能是服務(wù)器本身的錯誤看幼,而不是請求出錯。
500:Internal Server Error幌陕,服務(wù)器錯誤诵姜,表示可能服務(wù)器在執(zhí)行請求時發(fā)生了錯誤。
503:Service Unavailable苞轿,服務(wù)器處于超負(fù)荷或者正在進(jìn)行停機(jī)維護(hù)的狀態(tài)茅诱,無法處理請求。
6. 報文有哪幾部分組成
用于HTTP協(xié)議交互的信息被稱為HTTP報文搬卒;
HTTP報文是簡單的格式化數(shù)據(jù)塊瑟俭,數(shù)據(jù)塊以文本形式的元信息
開頭,描述報文的內(nèi)容及含義契邀,后面跟著可選的數(shù)據(jù)部分摆寄;
每個報文都包含一條來自客戶端的請求或者一條來自服務(wù)器的響應(yīng)。
報文是由3部分組成:
①對報文進(jìn)行描述的起始行 —— start line
②包含屬性的首部塊 —— header
③可選的包含數(shù)據(jù)的主體部分 —— body
報文都可以分為兩類:請求報文(request message)和響應(yīng)報文(response message)坯门。請求報文會向 Web 服務(wù)器請求一個動作微饥。響應(yīng)報文會將請求的結(jié)果返回客戶端谒臼。請求與響應(yīng)報文的基本報文結(jié)構(gòu)相同民效。
請求報文詳圖如下:
響應(yīng)報文詳解如下:
7.請求頭的格式和作用是什么里初?給個范例截圖說明
格式:鍵值對诵冒;
作用:
Accept:告訴web服務(wù)器自己接受什么介質(zhì)類型.
Accept-Encoding:瀏覽器聲明自己接收的編碼方法续滋,通常指定壓縮方法偷厦,是否支持壓縮霹肝,支持什么壓縮方法申钩。
Accept-Language:瀏覽器聲明自己接收的語言叉袍。
Cache-control:瀏覽器的緩存方法始锚,no-cache(不要緩存的實(shí)體,要求現(xiàn)在從web服務(wù)器去取)喳逛,max-age(只接受age值小于max-age值瞧捌,并且沒有過期的對象)。
Connection:告訴web服務(wù)器或者代理服務(wù)器,在完成本次請求的響應(yīng)后姐呐,斷開連接殿怜,不要等待本次連接的后續(xù)請求了。keep-alive(連續(xù)保持著皮钠,在等待本次連接的后續(xù)請求)稳捆,close(請求已關(guān)閉)。
Cookie:客戶端傳遞的字符串麦轰,可能和一些登陸信息有關(guān)乔夯。
Host:客戶端指定自己想訪問的WEB服務(wù)器的域名/IP地址和端口號。
User-Agent: 瀏覽器表明自己的身份(是哪種瀏覽器)款侵。
Referer : 提供了包含當(dāng)前請求URI的文檔的URL末荐,告訴服務(wù)器自己來源。
8.首部的格式和作用是什么新锈?給個范例截圖說明
格式:鍵值對甲脏;
作用:
Request URL:請求文件的路徑
Request Method : 請求文件的方法
Status Code : 狀態(tài)碼以及狀態(tài)信息
Remote Address:服務(wù)器地址
9.主體的作用是什么?給個范例
主體就是客戶端發(fā)給服務(wù)器或者服務(wù)器發(fā)給客戶端的主要內(nèi)容妹笆,服務(wù)器發(fā)給客戶端的用于向用戶呈現(xiàn)的相應(yīng)信息块请,而客戶端發(fā)給服務(wù)器的主要用于向服務(wù)器傳送除協(xié)議相關(guān)以外的信息。
10.簡述瀏覽器緩存是如何控制的
緩存機(jī)制1
緩存機(jī)制2
緩存機(jī)制3
緩存行為主要由緩存策略決定拳缠,而緩存策略由內(nèi)容擁有者設(shè)置墩新。這些策略主要通過特定的HTTP頭部來清晰地表達(dá)。
當(dāng)一個用戶發(fā)起一個靜態(tài)資源請求的時候窟坐,瀏覽器會通過以下幾步來獲取資源:
- 本地緩存階段:先在本地查找該資源海渊,如果有發(fā)現(xiàn)該資源,而且該資源還沒有過期哲鸳,就使用這一個資源臣疑,完全不會發(fā)送http請求到服務(wù)器;
- 協(xié)商緩存階段:如果在本地緩存找到對應(yīng)的資源徙菠,但是不知道該資源是否過期或者已經(jīng)過期讯沈,則發(fā)一個http請求到服務(wù)器,然后服務(wù)器判斷這個請求,如果請求的資源在服務(wù)器上沒有改動過婿奔,則返回304缺狠,讓瀏覽器使用本地找到的那個資源;
-
緩存失敗階段:當(dāng)服務(wù)器發(fā)現(xiàn)請求的資源已經(jīng)修改過脸秽,或者這是一個新的請求(在本來沒有找到資源),服務(wù)器則返回該資源的數(shù)據(jù)蝴乔,并且返回200记餐, 當(dāng)然這個是指找到資源的情況下,如果服務(wù)器上沒有這個資源薇正,則返回404片酝。
Paste_Image.png
11.下圖各個參數(shù)是什么意思
General(通用首部)
request URL:請求資源的URL路徑
request method:請求使用的方法
status code:響應(yīng)狀態(tài)碼及描述
emote address:請求的服務(wù)器的IP及端口
response headers(響應(yīng)首部)
connection:keep-alive 響應(yīng)的連接狀態(tài)為保持鏈路連接
Content-Length:12 響應(yīng)內(nèi)容長度(字節(jié))
Content-Type:json 響應(yīng)體的內(nèi)容格式囚衔,這里是json格式
date:該響應(yīng)報文創(chuàng)建的日期和時間(是服務(wù)器時間)
server:服務(wù)器版本信息
x-powered-by:服務(wù)器使用的技術(shù)
request headers(請求首部)
accept:客戶端能處理的響應(yīng)內(nèi)容格式,這里是所有格式
Accept-Encoding:客戶端能處理的響應(yīng)內(nèi)容編碼格式
Accept-Language:客戶端能處理的語言種類和優(yōu)先級,默認(rèn)權(quán)重值q為1雕沿,這里優(yōu)先考慮zh-CN
connection:keep-alive 請求的連接狀態(tài)為保持鏈路連接
content-length:56 請求體內(nèi)容長度(字節(jié))练湿,這里為56個字節(jié)
Content-Type:請求體的內(nèi)容格式
cookie:緩存信息
Host:表示服務(wù)器的域名以及服務(wù)器所監(jiān)聽的端口號。如果所請求的端口是對應(yīng)的服務(wù)的標(biāo)準(zhǔn)端口(80)审轮,則端口號可以省略肥哎。
Origin:告知服務(wù)器請求的源地址。
Referer:告知服務(wù)器請求的原始資源的URI疾渣。
User-Agent:客戶端使用的操作系統(tǒng)和瀏覽器的名稱和版本篡诽。
X-Requsted-With:xmlhttprequest 表示使用的是Ajax異步請求。
Form Data:向服務(wù)器提交的表單數(shù)據(jù)榴捡。
HTTP協(xié)議請求-Kencery-cnblog5
HTTP深入淺出 http請求-尹京昱-cnblog3
URI vs URL