任務(wù)34 - HTTP

問(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)連接。
    • 發(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部分組成。
    • 服務(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部分組成。
    • 釋放連接TCP連接
      Web服務(wù)器主動(dòng)關(guān)閉TCP套接字,釋放TCP連接;客戶端被動(dòng)關(guān)閉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)行格式化,并在瀏覽器窗口中顯示。

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-SinceIf-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)文的方式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容