http

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

開放式系統(tǒng)互聯(lián)通信參考模型(英語(yǔ):Open System Interconnection Reference Model,縮寫為 OSI),簡(jiǎn)稱為OSI模型(OSI model),一種概念模型,由國(guó)際標(biāo)準(zhǔn)化組織(ISO)提出,一個(gè)試圖使各種計(jì)算機(jī)在世界范圍內(nèi)互連為網(wǎng)絡(luò)的標(biāo)準(zhǔn)框架。定義于ISO/IEC 7498-1。

|OSI 模型|||
--|--|--|--
|數(shù)據(jù)單元|層|功能
主機(jī)層|Data(數(shù)據(jù))|7. 應(yīng)用層|網(wǎng)絡(luò)進(jìn)程到應(yīng)用程序。針對(duì)特定應(yīng)用規(guī)定各層協(xié)議、時(shí)序、表示等,進(jìn)行封裝 。在端系統(tǒng)中用軟件來實(shí)現(xiàn),如HTTP等
||6. 表示層|數(shù)據(jù)表示形式,加密和解密,把機(jī)器相關(guān)的數(shù)據(jù)轉(zhuǎn)換成獨(dú)立于機(jī)器的數(shù)據(jù)。規(guī)定數(shù)據(jù)的格式化表示 ,數(shù)據(jù)格式的轉(zhuǎn)換等
||5. 會(huì)話層|主機(jī)間通訊,管理應(yīng)用程序之間的會(huì)話。規(guī)定通信時(shí)序 ;數(shù)據(jù)交換的定界、同步,創(chuàng)建檢查點(diǎn)等
|Segments(數(shù)據(jù)段)|4. 傳輸層|在網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)之間可靠地分發(fā)數(shù)據(jù)包。所有傳輸遺留問題;復(fù)用;流量;可靠
媒介層|網(wǎng)絡(luò)分組/數(shù)據(jù)報(bào)文|3. 網(wǎng)絡(luò)層|在網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)之間進(jìn)行地址分配、路由和(不一定可靠的)分發(fā)報(bào)文。路由( IP尋址);擁塞控制。
|Bit/Frame(數(shù)據(jù)幀)|2. 數(shù)據(jù)鏈路層|一個(gè)可靠的點(diǎn)對(duì)點(diǎn)數(shù)據(jù)直鏈。檢錯(cuò)與糾錯(cuò)(CRC碼);多路訪問;尋址
|Bit(比特)|1. 物理層|一個(gè)(不一定可靠的)點(diǎn)對(duì)點(diǎn)數(shù)據(jù)直鏈。定義機(jī)械特性;電氣特性;功能特性;規(guī)程特性

2.HTTP 的工作原理是什么? (難度***)

HTTP 是基于 TCP/IP 協(xié)議的應(yīng)用層協(xié)議,瀏覽器向服務(wù)器發(fā)送URI,服務(wù)器發(fā)回HTML。它不涉及數(shù)據(jù)包(packet)傳輸,主要規(guī)定了客戶端和服務(wù)器之間的通信格式,默認(rèn)使用80端口。
HTTP通信機(jī)制是在一次完整的HTTP通信過程中,Web瀏覽器與Web服務(wù)器之間將完成下列7個(gè)步驟:
(1) 建立TCP連接
在HTTP工作開始之前,Web瀏覽器首先要通過網(wǎng)絡(luò)與Web服務(wù)器建立連接,該連接是通過TCP來完成的,該協(xié)議與IP協(xié)議共同構(gòu)建Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡(luò)。HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能,才能進(jìn)行更層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號(hào)是80
(2) Web瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求命令
一旦建立了TCP連接,Web瀏覽器就會(huì)向Web服務(wù)器發(fā)送請(qǐng)求命令
例如:GET/sample/hello.jsp HTTP/1.1
(3) Web瀏覽器發(fā)送請(qǐng)求頭信息
瀏覽器發(fā)送其請(qǐng)求命令之后,還要以頭信息的形式向Web服務(wù)器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來通知服務(wù)器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。
(4) Web服務(wù)器應(yīng)答
客戶機(jī)向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器會(huì)客戶機(jī)回送應(yīng)答,
HTTP/1.1 200 OK
應(yīng)答的第一部分是協(xié)議的版本號(hào)和應(yīng)答狀態(tài)碼
(5) Web服務(wù)器發(fā)送應(yīng)答頭信息
正如客戶端會(huì)隨同請(qǐng)求發(fā)送關(guān)于自身的信息一樣,服務(wù)器也會(huì)隨同應(yīng)答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請(qǐng)求的文檔。
(6) Web服務(wù)器向?yàn)g覽器發(fā)送數(shù)據(jù)
Web服務(wù)器向?yàn)g覽器發(fā)送頭信息后,它會(huì)發(fā)送一個(gè)空白行來表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)
(7) Web服務(wù)器關(guān)閉TCP連接
一般情況下,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬。

參考HTTP深入淺出 http請(qǐng)求-尹京昱-cnblog

3.URI 的格式是什么?常見的協(xié)議有哪些 (難度***)

URI是 Uniform Resource Identifier的簡(jiǎn)稱,是統(tǒng)一資源標(biāo)識(shí)符。
格式是:



其中,
登錄信息這一項(xiàng)是可選項(xiàng),現(xiàn)在一般都不用了。

常見的協(xié)議有HTTP協(xié)議,還有ftp、mailto、telnet、file等。

4.HTTP 協(xié)議有幾種和服務(wù)器交互的方法 (難度***)

一般有GET、POST、DELETE、PUT這幾種方法。
一個(gè)URL地址,它用于描述一個(gè)網(wǎng)絡(luò)上的資源,而HTTP中的GET,POST,PUT,DELETE就對(duì)應(yīng)著對(duì)這個(gè)資源的查,改,增,刪4個(gè)操作。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息。PUT用于上傳文件,DELETE用于刪除文件。

5.狀態(tài)碼200,301, 304,403,404,500,503分別代表什么意思 (難度****)

200 代表ok,表示從客戶端發(fā)來的請(qǐng)求在服務(wù)器端被正常處理了。
301 代表永久性重定向,表示請(qǐng)求的資源已經(jīng)被分配了新的URI,以后應(yīng)使用資源現(xiàn)在所指的URI。
304 代表未修改,表示自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過。 服務(wù)器返回此響應(yīng)時(shí),不會(huì)返回網(wǎng)頁(yè)內(nèi)容。
403 表示客戶端對(duì)請(qǐng)求資源的訪問被服務(wù)器拒絕了。
404 代表文件找不到,表明服務(wù)器上無法找到請(qǐng)求的資源。也可以在服務(wù)器拒絕請(qǐng)求但是找不到理由時(shí)使用。
500 表明服務(wù)器端在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤。
503 表明服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù),現(xiàn)在無法處理請(qǐng)求。

6.報(bào)文有哪幾部分組成? (可選 難度****)

用于HTTP協(xié)議交互的信息被稱為HTTP報(bào)文??蛻舳说腍TTP報(bào)文叫做請(qǐng)求報(bào)文,服務(wù)端的叫做響應(yīng)報(bào)文。
HTTP報(bào)文本身是由多行數(shù)據(jù)構(gòu)成的字符串文本。大致可分為報(bào)文首部和報(bào)文主體兩塊。通常,并不一定要有報(bào)文主體。
如下圖示:


報(bào)文首部:服務(wù)器端或客戶端需處理的請(qǐng)求或響應(yīng)的內(nèi)容及屬性。
報(bào)文主體:應(yīng)該發(fā)送的數(shù)據(jù)。

7.請(qǐng)求頭的格式和作用是什么?給個(gè)范例截圖說明 (可選 難度****)

請(qǐng)求頭的格式:

<method> <request-UTL> <version> //起始行,包括方法、URI、HTTP版本
<headers>

作用:用于說明請(qǐng)求的附加信息、客戶端信息、對(duì)響應(yīng)內(nèi)容相關(guān)的優(yōu)先級(jí)等內(nèi)容。
訪問cn.bing.com網(wǎng)站時(shí),請(qǐng)求頭如圖示:

8.首部的請(qǐng)求格式和作用是什么?給個(gè)范例截圖說明 (可選 難度****)

請(qǐng)求首部組成如下圖:



請(qǐng)求行的格式:

<method> <request-UTL> <version>

響應(yīng)首部組成如下圖:



響應(yīng)行的格式:

<version> <status><reason-phrase>

HTTP首部字段是由首部字段名和字段值構(gòu)成的,中間用冒號(hào)分隔。
格式是:

首部字段名: 字段值

分為四種類型。分別是通用首部字段,請(qǐng)求首部字段,響應(yīng)首部字段和實(shí)體首部字段這四種。
HTTP的首部字段是構(gòu)成HTTP報(bào)文的要素之一,起到傳遞重要信息的作用,可以給瀏覽器和服務(wù)器提供報(bào)文主體大小、所用的語(yǔ)言、認(rèn)證信息等內(nèi)容。
如圖示:

9.主體的作用是什么?給個(gè)范例(可選 截圖說明難度****)

報(bào)文主體是HTTP報(bào)文的負(fù)荷。就是HTTP要傳輸?shù)膬?nèi)容。
HTTP報(bào)文主體可以承載很多類型的數(shù)字?jǐn)?shù)據(jù):圖片、視頻、HTML文檔、軟件應(yīng)用程序等。
例子如下圖所示:


10.簡(jiǎn)述瀏覽器緩存是如何控制的(可選 難度*****)

http報(bào)文首部字段中與緩存相關(guān)的字段:
1.通用首部字段



2.請(qǐng)求首部字段



3.響應(yīng)首部字段

4.實(shí)體首部字段

其中,

  • Expires是Web服務(wù)器響應(yīng)消息頭字段,在響應(yīng)http請(qǐng)求時(shí)告訴瀏覽器在過期時(shí)間前瀏覽器可以直接從瀏覽器緩存取數(shù)據(jù),而無需再次請(qǐng)求。這個(gè)時(shí)間是服務(wù)器的時(shí)間,所以有時(shí)候客戶端時(shí)間和服務(wù)器時(shí)間不一致時(shí)并不能及時(shí)緩存。
  • Cache-Control與Expires的作用一致,都是指明當(dāng)前資源的有效期,控制瀏覽器是否直接從瀏覽器緩存取數(shù)據(jù)還是重新發(fā)請(qǐng)求到服務(wù)器取數(shù)據(jù)。只不過Cache-Control的選擇更多,設(shè)置更細(xì)致,如果同時(shí)設(shè)置的話,其優(yōu)先級(jí)高于Expires。
    Cache-Control也是一個(gè)通用首部字段,這意味著它能分別在請(qǐng)求報(bào)文和響應(yīng)報(bào)文中使用。在RFC中規(guī)范了 Cache-Control 的格式為:
"Cache-Control" ":" cache-directive

作為請(qǐng)求首部時(shí),cache-directive 的可選值有:

作為響應(yīng)首部時(shí),cache-directive 的可選值有:

Cache-Control 允許自由組合可選值,例如:
Cache-Control: max-age=3600, must-revalidate

它意味著該資源是從原服務(wù)器上取得的,且其緩存(新鮮度)的有效時(shí)間為一小時(shí),在后續(xù)一小時(shí)內(nèi),用戶重新訪問該資源則無須發(fā)送請(qǐng)求。 當(dāng)然這種組合的方式也會(huì)有些限制,比如 no-cache 就不能和 max-age、min-fresh、max-stale 一起搭配使用。

  • Last-Modified:標(biāo)示這個(gè)響應(yīng)資源的最后修改時(shí)間。web服務(wù)器在響應(yīng)請(qǐng)求時(shí),告訴瀏覽器資源的最后修改時(shí)間。
  • If-Modified-Since:當(dāng)資源過期時(shí)(使用Cache-Control標(biāo)識(shí)的max-age),發(fā)現(xiàn)資源具有Last-Modified聲明,則再次向web服務(wù)器請(qǐng)求時(shí)帶上頭 If-Modified-Since,表示請(qǐng)求時(shí)間。web服務(wù)器收到請(qǐng)求后發(fā)現(xiàn)有頭If-Modified-Since 則與被請(qǐng)求資源的最后修改時(shí)間進(jìn)行比對(duì)。若最后修改時(shí)間較新,說明資源又被改動(dòng)過,則響應(yīng)整片資源內(nèi)容(寫在響應(yīng)消息包體內(nèi)),HTTP 200;若最后修改時(shí)間較舊,說明資源無新修改,則響應(yīng)HTTP 304 (無需包體,節(jié)省瀏覽),告知瀏覽器繼續(xù)使用所保存的cache。
  • Etag:web服務(wù)器響應(yīng)請(qǐng)求時(shí),告訴瀏覽器當(dāng)前資源在服務(wù)器的唯一標(biāo)識(shí)(生成規(guī)則由服務(wù)器覺得)。Apache中,ETag的值,默認(rèn)是對(duì)文件的索引節(jié)(INode),大?。⊿ize)和最后修改時(shí)間(MTime)進(jìn)行Hash后得到的。
  • If-None-Match:當(dāng)資源過期時(shí)(使用Cache-Control標(biāo)識(shí)的max-age),發(fā)現(xiàn)資源具有Etage聲明,則再次向web服務(wù)器請(qǐng)求時(shí)帶上頭If-None-Match (Etag的值)。web服務(wù)器收到請(qǐng)求后發(fā)現(xiàn)有頭If-None-Match 則與被請(qǐng)求資源的相應(yīng)校驗(yàn)串進(jìn)行比對(duì),決定返回200或304。
  • 瀏覽器緩存行為還與用戶的行為有關(guān)。
用戶操作 Expires/Cache-Control Last-Modified/Etag
地址欄回車 有效 有效
頁(yè)面鏈接跳轉(zhuǎn) 有效 有效
新開窗口 有效 有效
前進(jìn)、后退 有效 有效
F5刷新 無效 有效
Ctrl+F5刷新 無效 無效

總結(jié):



參考
1.瀏覽器緩存機(jī)制
2.HTTP緩存控制小結(jié)

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

|參數(shù)|含義
--|--|--
General|Request URL|請(qǐng)求的URL,這里是http://note.ruoyu.site/api/articles/56fe491655c1cafc367f913d
|Request Method|請(qǐng)求方式,這里是是PUT
|Status Code|狀態(tài)碼,這里的200表示服務(wù)器已成功處理了請(qǐng)求。
|Remote Address|請(qǐng)求的遠(yuǎn)程地址,這里是121.40.201.213:80
Response Headers|Connection|連接方式,keep-alive告訴服務(wù)器客戶端和服務(wù)器之間是持久連接
|Content-length|請(qǐng)求的字段的大小,這里是12字節(jié)
|Date|服務(wù)器發(fā)出消息的時(shí)間,是格林威治時(shí)間
|Server|服務(wù)器的類型,這里是ngix/1.6.2
|X-Powered-By|由語(yǔ)言解析器或者應(yīng)用程序框架輸出的。這個(gè)值的意義用于告知網(wǎng)站是用何種語(yǔ)言或框架編寫的,這里是Express框架
Request Headers|Accept|告訴服務(wù)器客戶端可以接收的文檔類型。這里*/*表示所有類型
|Accept-Encoding|告訴服務(wù)器客戶端可以接收的壓縮編碼的方式,這里是gzip,deflate,sdch
|Accept-Language|告訴服務(wù)器客戶端支持的語(yǔ)言,這里是中文,q是相對(duì)優(yōu)先級(jí)
|Connection|連接方式,keep-alive告訴服務(wù)器客戶端和服務(wù)器之間是持久連接
|Content-Length|用于描述HTTP消息實(shí)體的長(zhǎng)度,這里是56字節(jié)
|Content-Type|用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁(yè)的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個(gè)文件,這里是 表單數(shù)據(jù)向服務(wù)器提交時(shí)所采用的編碼類型,編碼方式是utf-8
|Cookie| 服務(wù)器接收到的Cookie信息
|Host|告知服務(wù)器,請(qǐng)求的資源所處的互聯(lián)網(wǎng)主機(jī)名和端口號(hào),這里是note.ruoyu.site
|Origin| 用來說明最初請(qǐng)求是從哪里發(fā)起的,只用于POST請(qǐng)求,這里是從http://note.rouyu.site發(fā)起的
|Referer|查看請(qǐng)求的URI是從哪個(gè)頁(yè)面發(fā)起的,這里是從http://note.rouyu.site/發(fā)起的
|User-Agent|瀏覽器的種類
|X-Requested-With|內(nèi)容是XMLHttpRequest,表示為Ajax請(qǐng)求
Form Data|article|表單的標(biāo)題

參考 圖解 HTTP-書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容