日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

HTTP權(quán)威指南

 硬核項(xiàng)目經(jīng)理 2021-05-31

一、HTTP概述

1.Web服務(wù)器是Web資源(Web resource)的宿主,資源可以是靜態(tài)文件或動態(tài)內(nèi)容

2.MIME類型(Multipurpose Internet Mail Extension,多用途因特網(wǎng)郵件擴(kuò)展),Web服務(wù)器會為所有HTTP對象數(shù)據(jù)附加一個MIME類型,當(dāng)瀏覽器從服務(wù)器取回一個對象時,會去查看相關(guān)的MIME類型

3.統(tǒng)一資源標(biāo)識符(Uniform Resource Identifier,URI),標(biāo)識并定位信息資源,有兩種形式:URL和URN

4.統(tǒng)一資源定位符(URL)是資源標(biāo)識符最常見的形式

5.統(tǒng)一資源名(URN),作為特定內(nèi)容的唯一名稱使用的,與目前的資源所在地?zé)o關(guān),很少使用

6.一個HTTP事務(wù)由一條(從客戶端發(fā)往服務(wù)器的)請求命令和一個(從服務(wù)器發(fā)回客戶端的)響應(yīng)結(jié)果組成,這種通信是通過名為HTTP報文(HTTP message)的格式化數(shù)據(jù)塊進(jìn)行的,包括:方法、狀態(tài)碼以及多個對象

7.HTTP報文是由一行一行的簡單字符串組成的,分為請求報文和響應(yīng)報文,包括:起始行、首部字段、主體

8.HTTP協(xié)議位于TCP的上層,HTTP使用TCP來傳輸其報文數(shù)據(jù)

9.Web的一些結(jié)構(gòu)組件:代理、緩存、網(wǎng)關(guān)、隧道、Agent代理

二、URL與資源

1.URL是瀏覽器尋找信息時所需的資源位置,是人們對HTTP和其他協(xié)議的常用訪問點(diǎn):一個人將瀏覽器指向一個URL,瀏覽器就會在幕后發(fā)送適當(dāng)?shù)膮f(xié)議報文來獲取人們所期望的資源

2.大多數(shù)URL都有同樣的“方案<scheme>://服務(wù)器位置<host> /路徑<path> ”結(jié)構(gòu):

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

3.Web常用方案:http、https、mailto、ftp、rtsp,rtspu、file、news、telnet

三、HTTP報文

1.HTTP報文是在HTTP應(yīng)用程序之間發(fā)送的數(shù)據(jù)塊,這些數(shù)據(jù)塊以一些文本形式的元信息(meta-information)開頭

2.HTTP使用術(shù)語流入(inbound)和流出(outbound)來描述事務(wù)處理(transaction)的方向,報文流入源商服務(wù)器,工作完成之后,會流回用戶的Agent代理中

3.HTTP報文是簡單的格式化數(shù)據(jù)塊,每條報文都包含一條來自客戶端的請求,或者一條來自服務(wù)器的響應(yīng),由三個部分組成:對報文進(jìn)行描述的起始行(start line)、包含屬性的首部(header)塊,以及可選的、包含數(shù)據(jù)的主體(body)部分

4.所有的HTTP報文都可以分為:請求報文(request message)和響應(yīng)報文(response message),請求報文會向Web服務(wù)器請求一個動作,響應(yīng)報文會將請求的結(jié)果返回給客戶端

  • 請求報文格式:

<method> <request-URL> <version>

<headers>

<entity-body>

  • 響應(yīng)報文格式:

<version> <status> <resaon-phrase>

<headers>

<entity-body>

5.HTTP定義了一組安全方法,GET和HEAD方法都被認(rèn)為是安全的,意味著使用GET或HEAD方法的HTTP請求都不會產(chǎn)生什么動作,但這是由WEB開發(fā)者決定的

6.TRACE方法允許客戶端在最終將請求發(fā)送給服務(wù)器時,看看它變成了什么樣子,主要用于診斷,不能帶有實(shí)體的主體部分,響應(yīng)的實(shí)體主體部分包含了響應(yīng)服務(wù)器收到的請求的精確副本

7.OPTIONS方法請求Web服務(wù)器告知其支持的各種功能,可以詢問服務(wù)器通常支持哪些方法,或者對某些特殊資源支持哪些方法

8.擴(kuò)展方法,不是在正式規(guī)范中定義的,可能大部分服務(wù)器或客戶端并不支持:LOCK、MKCOL、COPY、MOVE

9.狀態(tài)碼:

  • 100~199-信息性狀態(tài)碼:100 Continue(HTTP/1.1),101 Switching Protocols

  • 200~299-成功狀態(tài)碼:200,201 Created,202 Accpted,203,204 No Content,205 Reset Content,206

  • 300~399-重定向狀態(tài)碼:300,301 永久,302 臨時,303 post重寫向,304 條件請求,305 必須通過代理來訪問資源,306,307

  • 400~499-客戶端錯誤狀態(tài)碼:400,401,402,403 請求被拒絕,404,405 不支持的方法,406,407,408,409,410,411,412,413,414,415,416,417

  • 500~599-服務(wù)器錯誤狀態(tài)碼:502,503,504,505

10.首部:

  • 通用首部:Connection、Date、MIME-Version、Trailer、Transfer-Encoding、Update、Via、Cache-Control、Pragma

  • 請求首部:Client-IP、From、Host、Referer、UA-Color、UA-CPU、UA-Disp、UA-OS、UA-Pixels、User-Agent,Accept首部:Accept、Accept-Charset、Accept-Encoding、Accept-Language、TE,條件請求首部:Expect、If-Match、If-Modified-Since、If-None-match、If-Range、If-Unmodified-Since、Range,安全請求首部:Authorization、Cookie、Cookie2,代理請求首部:Max-Forward、Proxy-Authorization、Proxy-Connection

  • 響應(yīng)首部:Age、Public、Retry-After、Server、Title、Warning,協(xié)商首部:Accept-Ranges、Vary,安全響應(yīng)首部:Proxy-Authenticate、Set-Cookie、Set-Cookie2、WWW-Authenticate

  • 實(shí)體首部:Allow、Location,內(nèi)容首部:Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type,實(shí)體緩存首部:ETag、Expires、Last-Modified

四、連接管理

1.HTTP要傳送一條報文時,會以流的形式將報文數(shù)據(jù)的內(nèi)容通過一條找開的TCP連接按序傳輸,TCP收到數(shù)據(jù)流之后,會將數(shù)據(jù)流砍成被稱作段的小數(shù)據(jù)塊,并將段封裝在IP分組中,通過因特網(wǎng)進(jìn)行傳輸

2.TCP是通過端口號來保持所有連接的正確運(yùn)行的

3.HTTP緊挨著TCP,位于其上層,所以HTTP事務(wù)的性能在很大程度上取決于底層TCP通道的性能

4.在事務(wù)處理結(jié)束之后仍然保持在打開狀態(tài)的TCP連接被稱為持久連接,HTTP/1.1(或各種HTTP/1.0增強(qiáng)版)允許HTTP設(shè)備在事務(wù)處理結(jié)束之后將TCP連接保持在打開狀態(tài),以便未來的HTTP請求重用現(xiàn)存的連接

5.HTTP/1.0-Keep Alive連接:客戶端必須發(fā)送一個Connection:Keep-Alive請求首部來激活,使用Proxy-Connection解決啞代理問題,

6.HTTP/1.1的持久連接在默認(rèn)情況是激活的,除非顯式使用Connection:close;HTTP/1.1停止了對keep-alive連接的支持

7.HTTP/1.1允許在持久連接上可選地使用請求管道,在響應(yīng)到達(dá)之前,可以將多條請求放入隊(duì)列,當(dāng)?shù)谝粭l請求通過網(wǎng)絡(luò)流向地球另一端的服務(wù)器時,第二條和第三條請求也可以開始發(fā)送了,在高時延網(wǎng)絡(luò)條件下,這樣做可以降低網(wǎng)絡(luò)的環(huán)回時間;不應(yīng)該用管道化的方式發(fā)送會產(chǎn)生副作用的請求(如POST)

8.即使在非錯誤情況下,連接也可以在任意時刻關(guān)閉,HTTP應(yīng)用程序要做好正確處理非預(yù)期關(guān)閉的準(zhǔn)備

9.如果一個事務(wù),不管執(zhí)行一次還是很多次,得到的結(jié)果都相同,這個事務(wù)就是冪等的

五、Web服務(wù)器

1.Web服務(wù)器做些什么:建立連接、接收請求、處理請求、訪問資源、構(gòu)建響應(yīng)、發(fā)送響應(yīng)、處理事務(wù)處理過程

六、代理

1.Web代理(proxy)服務(wù)器是網(wǎng)絡(luò)的中間實(shí)體,代理位于客戶端和服務(wù)器之間,扮演“中間人”的角色,在各端點(diǎn)之間來回傳送HTTP報文 

2.單個客戶端專用的代理被稱為私有代理,眾多客戶端共享的代理被稱為公共代理

3.代理連接的是兩個或多個使用相同協(xié)議的應(yīng)用程序,而網(wǎng)關(guān)連接的則是兩個或多個使用不同協(xié)議的端點(diǎn),網(wǎng)關(guān)扮演的是“協(xié)議轉(zhuǎn)換器”的角色,即使客戶端和服務(wù)器使用的是不同的協(xié)議,客戶端也可以通過它完成與服務(wù)器之間的事務(wù)處理

4.代理的作用:兒童過濾器、文檔訪問控制、安全防火墻、Web緩存、反向代理、內(nèi)容路由器、轉(zhuǎn)碼器、匿名者

5.代理服務(wù)器的部署:出口代理、訪問(入口)代理、反向代理、網(wǎng)絡(luò)交換代理

6.Via首部字段包含一個由逗號分隔的路標(biāo)(waypoint),每個路標(biāo)都表示一個獨(dú)立的代理服務(wù)器或網(wǎng)關(guān),且包含與那個中間節(jié)點(diǎn)的協(xié)議和地址有關(guān)的信息

7.TRACE方法,用戶可以跟蹤代理鏈傳輸?shù)恼埱髨笪?,觀察報文經(jīng)過了哪些代理,以及每個代理是如何對請求報文進(jìn)行修改的,對代理的調(diào)試非常有用

七、緩存

1.If-Modified-Since添加到請求中去,只有在緩存了對象的副本之后,又對其進(jìn)行了修改的情況下,才發(fā)送此對象

2.緩存的處理步驟:接收、解析、查詢、新鮮度檢測、創(chuàng)建響應(yīng)、發(fā)送、日志

3.通過HTTP/1.1的Cache-Control首部和HTTP/1.0的Expires首部來指定過期日期,Cache-Control:max-age=100000是相對日期,從文檔第一次生成開始,Expires是絕對日期

4.If-Modified-Since:<date>,如果指定日期之后文檔被修改過了,就執(zhí)行請求的方法,可以與Last-Modified服務(wù)器響應(yīng)首部配合使用

5.If-None-Match:<tags>,服務(wù)器可以為文檔提供特殊的標(biāo)簽(ETag),如果已緩存標(biāo)簽與服務(wù)器文檔中的標(biāo)簽有所不同,就會執(zhí)行所請求的方法

6.HTTP/1.1支持“弱驗(yàn)證器”,如果只對內(nèi)容進(jìn)行了少量修改,就允許服務(wù)器聲明那是“足夠好”的等價體

7.控制緩存的能力:

  • Cache-Control:no-store,禁止緩存對響應(yīng)進(jìn)行復(fù)制

  • Cache-Control:no-cache,可以存儲在本地緩存區(qū)中,只是在與原服務(wù)器進(jìn)行新鮮度再驗(yàn)證之前,緩存不能將其提供給客戶端使用,除了與只理解Pragma:no-cache的HTTP/1.0交互時,都應(yīng)該使用Cache-Control:no-cache

  • Cache-Control:max-age,表示從服務(wù)器將文檔傳來之時起,可以認(rèn)為此文檔處于新鮮狀態(tài)的秒數(shù),還有s-maxage僅適用于共享(公有)緩存,設(shè)置為0為不緩存

  • Expires,指定實(shí)際的過期日期而不是秒數(shù),不推薦使用

  • Cache-Control:must-revalidate,可以配置緩存使其提供一些陳舊(過期)對象,以提高性能

  • Cache-Control:max-stale = <s>,緩存可以隨意提供過期的文件,如果指定了s,在這段時間內(nèi),文檔就不能過期

  • Cache-Control:min-fresh=<s>,至少在未來s秒內(nèi)文檔要保持新鮮

  • Cache-Control:max-age=<s>,緩存無法返回緩存時間長于s秒的文檔

  • Cache-Control:only-if-cached,只有當(dāng)緩存中有副本存在時,客戶端才會獲取一份副本

八、網(wǎng)關(guān)、隧道及中繼

1.應(yīng)用程序可以(通過HTTP或者其他已定義的接口)請求網(wǎng)關(guān)來處理某條請求,網(wǎng)關(guān)可以提供一條響應(yīng)

2.通用網(wǎng)關(guān)接口(Common Gateway Interface,CGI)是一個標(biāo)準(zhǔn)接口集,Web服務(wù)器可以用它來裝載程序以響應(yīng)對特定URL的HTTP請求,并收集程序的輸出數(shù)據(jù),將其放在HTTP響應(yīng)中回送

3.Web隧道(Web tunnel)允許用戶通過HTTP連接發(fā)送非HTTP流量,這樣就可以在HTTP上捎帶其他協(xié)議數(shù)據(jù)了

4.CONNECT方法請求隧道網(wǎng)關(guān)創(chuàng)建一條到達(dá)任意目的服務(wù)器端口的TCP連接,并對客戶端和服務(wù)器之間的后繼數(shù)據(jù)進(jìn)行盲轉(zhuǎn)發(fā)

5.HTTP中繼(relay)是沒有完全遵循HTTP規(guī)范的簡單HTTP代理,中繼負(fù)責(zé)處理HTTP中建立連接的部分,然后對字節(jié)進(jìn)行盲轉(zhuǎn)發(fā)

九、Web機(jī)器人

1.爬蟲爬行時要避免環(huán)路

2.拒絕機(jī)器人訪問標(biāo)準(zhǔn):robots.txt文件

3.robots.txt文件:User-Agent: <robot-name>指定User-Agent首部;Disallow和Allow,禁止或允許訪問的路徑;

4.使得robot-control標(biāo)簽:<META NAME="ROBOTS" CONTENT="NOINDEX | NOFOLLOW | INDEX | FOLLOW | NOARCHIVE | ALL | NONE"/>

十、HTTP-NG

十一、客戶端識別與cookie機(jī)制

1.HTTP首部:

  • From:用戶的E-mail地址

  • User-Agent:用戶的瀏覽器軟件

  • Referer:用戶是從這個頁面上依照鏈接跳轉(zhuǎn)過來的

  • Authorization:用戶名和密碼

  • Client-IP:客戶端的IP地址

  • X-Forwarded-For:客戶端的IP地址

  • Cookie:服務(wù)器產(chǎn)生的ID標(biāo)簽

2.產(chǎn)生cookie的服務(wù)器可以向Set-Cookie響應(yīng)首部添加一個Domain屬性來控制哪些站點(diǎn)可以看到那個cookie

3.可以通過path屬性列出的URL路徑前綴下所有cookie都是有效的

十二、基本認(rèn)證機(jī)制

1.HTTP原生的質(zhì)詢/響應(yīng)(challenge/response)框架:Web應(yīng)用程序收到一條HTTP請求報文時,服務(wù)器沒有按照請求執(zhí)行動作,而是以一個”認(rèn)證質(zhì)詢“進(jìn)行響應(yīng)(返回401響應(yīng)),要求用戶提供一些保密信息來說明他是誰,從而對其進(jìn)行質(zhì)詢。用戶戶再次發(fā)起請求時,要附上保密證書(用戶名和密碼)

2.基本認(rèn)證:服務(wù)器可以拒絕一個事務(wù),質(zhì)詢客戶端,請用戶提供有效的用戶名和密碼,服務(wù)器會返回301狀態(tài)碼,而不是200狀態(tài)碼來初始化認(rèn)證質(zhì)詢,并用WWW-Authenticate響應(yīng)首部指定要訪問的安全域,瀏覽器收到質(zhì)詢時,會打開 一個對話框,用戶輸入用戶名和密碼,然后將用戶名和密碼稍加擾碼,再用Authorization請求首部回送給服務(wù)器

3.基本認(rèn)證的安全缺陷:

  • 會通過網(wǎng)絡(luò)發(fā)送用戶名和密碼,密碼實(shí)際上是明文的

  • 即使密碼是以更難解碼的方式加密的,第三方用戶仍然可以捕獲被修改過的用戶名和密碼

  • 基本認(rèn)證沒有提供任何針對代理和作為中間人的中間節(jié)點(diǎn)的防護(hù)措施

  • 假冒服務(wù)器很容易騙過基本認(rèn)證

十三、摘要認(rèn)證

1.摘要認(rèn)證遵循的是“絕不通過網(wǎng)絡(luò)發(fā)磅密碼”,客戶端不會發(fā)送密碼,而是會發(fā)送一個“指紋”或密碼的“摘要”,這是密碼的不可逆擾碼,客戶端和服務(wù)器都知道這個密碼,因此服務(wù)器可以驗(yàn)證所提供的摘要是否與密碼相匹配

2.摘要認(rèn)證的核心就是對公共信息、保密信息和有時限的隨機(jī)值這個組合的單向摘要

3.安全問題:首部篡改、重放攻擊、多重認(rèn)證機(jī)制、詞典攻擊、惡意代理攻擊和中間人攻擊、選擇明文攻擊、存儲密碼

十四、安全HTTP

1.HTTPS在HTTP下面提供了一個傳輸級的密碼安全層——可以使用SSL,也可以使用其后繼者——傳輸層安全(Transport Layer Security, TLS)

2.數(shù)據(jù)簽名是附加在報文上的特殊加密校驗(yàn)碼

3.HTTPS沒有將未加密的HTTP報文發(fā)送給TCP,它在將HTTP報文發(fā)送給TCP之前,先將其發(fā)送給了一個安全層,進(jìn)行加密

4.SSL握手:交換協(xié)議版本號;選擇一個兩端都了解的密碼;對兩端的身份進(jìn)行認(rèn)證;生成臨時的會話密鑰,以便加密信道

十五、實(shí)體和編碼

1.HTTP/1.1實(shí)體首部:

  • Content-Type,實(shí)體中承載對象的類型

  • Content-Length,所傳送實(shí)體主體的長度或大小

  • Content-Language,與所傳送對象最相配的人類語言

  • Content-Encoding,對象數(shù)據(jù)所做的任意變換

  • Content-Location,一個備用位置,請求時可能通過它獲得對象

  • Content-Range,如果這是部分實(shí)體,說明它是整體的哪個部分

  • Content-MD5,實(shí)體主體內(nèi)容的校驗(yàn)和

  • Last-Modified,所傳輸內(nèi)容在服務(wù)器上創(chuàng)建或最后修改的日期時間

  • Expires,實(shí)體數(shù)據(jù)將要失效的日期時間

  • Allow,該資源所允許的各種請求訪求

  • ETag,文檔特定實(shí)例的唯一驗(yàn)證碼

  • Cache-Control,指出如何緩存該文檔

2.除非使用了分塊編碼,否則Content-Length首部就是帶有實(shí)體主體的報文必須使用的,為了能夠檢測出服務(wù)器崩潰而導(dǎo)致的報文截尾,并對共享持久連接的多個報文進(jìn)行正確分段

3.內(nèi)容編碼:gzip、compress、deflate、identity

4.傳輸編碼,作用在實(shí)體主體上的可逆變換,與內(nèi)容的格式無關(guān),是為了改變報文中的數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)姆绞?/p>

5.Transfer-Encoding,告知接收方為了可靠地傳輸報文,已經(jīng)對其進(jìn)行了何種編碼

6.TE,用在請求首部中,告知服務(wù)器可以使用哪些傳輸編碼擴(kuò)展

7.傳輸編碼目前僅有分塊編碼,把報文分割為若干個大小已知的塊,塊之間是緊挨著發(fā)送的

8.范圍請求,允許客戶端實(shí)際上只請求文檔的一部分,或者說某個范圍

9.差異編碼是HTTP協(xié)議的一個擴(kuò)展,通過交換對象改變的部分而不是完整的對象來優(yōu)化傳輸性能

十六、國際化

1.Web服務(wù)器通過在Content-Type首部中使用charset參數(shù)把MIME字符集標(biāo)記發(fā)送給客戶端,可以在HTML內(nèi)容的的META標(biāo)簽指定字符集

2.Content-Language描述實(shí)體的目標(biāo)受眾語言,不僅限于文本文檔

3.可以在Accept-Language首部中放入多個語言標(biāo)記以枚舉所支持的全部語言及其優(yōu)先順序

4.語言標(biāo)記,第一個子標(biāo)記標(biāo)準(zhǔn)化的語言記號,第二個子標(biāo)記國家記號,第三個及以后沒有特殊規(guī)則,如:en_us,zh_cn

5.URL編碼就是對特殊字符進(jìn)行ASC2的十六位編碼

十七、內(nèi)容協(xié)商與轉(zhuǎn)碼

1.內(nèi)容協(xié)商,讓客戶端和服務(wù)器作決定發(fā)送什么內(nèi)容給客戶端最適合,包括客戶端驅(qū)動協(xié)商、服務(wù)器驅(qū)動協(xié)商以及透明協(xié)商

2.透明協(xié)商機(jī)制試圖從服務(wù)器上去除服務(wù)器驅(qū)動協(xié)商所需的負(fù)載,并用中間代理來代理客戶端以使與客戶端的報文交換最小化,服務(wù)器在響應(yīng)中發(fā)送Vary首部,以告知中間節(jié)點(diǎn)需要使用哪些請求首部進(jìn)行內(nèi)容協(xié)商

十八、Web主機(jī)托管

1.Host首部描述了所請求的資源所在的因特網(wǎng)主機(jī)和端口號

十九、發(fā)布系統(tǒng)

二十、重定向與負(fù)載均衡

1.重定向包括:HTTP重定向、DNS重定向、任播尋址、IP MAC轉(zhuǎn)發(fā)、IP地址轉(zhuǎn)發(fā)(NAT)、網(wǎng)元控制協(xié)議(NECP)

2.代理重定向:顯式瀏覽器配置、代理自動配置(PAC協(xié)議)、Web代理自動發(fā)現(xiàn)協(xié)議(WPAD、DHCP)

3.WCCP重定向,可以使路由器將Web流量重定向到代理緩存中去,WCCP負(fù)責(zé)路由器和緩存服務(wù)器之間的通信,這樣路由器就可以對緩存進(jìn)行驗(yàn)證,在緩存之間進(jìn)行負(fù)載均衡,并將特定類型的流量發(fā)送給特定的緩存了

4.ICP(因特網(wǎng)緩存協(xié)議)允許緩存在其兄弟緩存中查找命中內(nèi)容,如果某個緩存中沒有HTTP報文所請求的內(nèi)容,可以查明內(nèi)容是否在附近的兄弟緩存中

5.CARP(緩存陣列路由協(xié)議),是ICP的一個替代協(xié)議

6.HTCP(超文本緩存協(xié)議)允許兄弟緩存之間通過URL和所有的請求及響應(yīng)首部來相互查詢文檔是否存在,以降低錯誤命中的可能

二十一、日志記錄與使用情況跟蹤

1.通常會記錄的字段:HTTP方法、客戶端和服務(wù)器的HTTP版本、所請求資源的URL、響應(yīng)的HTTP狀態(tài)碼、請求和響應(yīng)報文的尺寸、事務(wù)開始時的時間戳、Referer首部和User-Agent首部

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多