HTTP原理

1.1 HTTP——因特網(wǎng)的多媒體信使

HTTP使用的是可靠的數(shù)據(jù)傳輸協(xié)議,可以從遍布全世界的Web服務(wù)器上將這些信息快迅速、便捷凌彬、可靠地搬移到人們桌面上的Web瀏覽器上去吗铐。

1.2 Web客戶端和服務(wù)器

web內(nèi)容都是存儲(chǔ)在Web服務(wù)器上的。Web服務(wù)器所使用的是HTTP協(xié)議乌叶,因此經(jīng)常會(huì)被稱為HTTP服務(wù)器。這些HTTP服務(wù)器存儲(chǔ)了因特網(wǎng)中的數(shù)據(jù),如果HTTP客戶端發(fā)出請(qǐng)求的話伯铣。它們會(huì)提供數(shù)據(jù)÷秩遥客戶端向服務(wù)器發(fā)送HTTP請(qǐng)求腔寡,服務(wù)器會(huì)在HTTP響應(yīng)中回送所請(qǐng)求的數(shù)據(jù)。HTTP客戶端和HTTP服務(wù)器共同構(gòu)成了萬維網(wǎng)的基本組件蜡感。

瀏覽一個(gè)頁面時(shí)(http://www.oreilly.com/index.html),瀏覽器會(huì)向服務(wù)器www.oreilly.com發(fā)送一條HTTP請(qǐng)求蹬蚁。服務(wù)器會(huì)去尋找所期望的對(duì)象(index.html),如果成功郑兴,就將對(duì)象犀斋、對(duì)象類型、對(duì)象長(zhǎng)度以及其它一些信息放在HTTP響應(yīng)中發(fā)送給客戶端情连。

1.3 資源

Web服務(wù)器是Web資源的宿主叽粹。最簡(jiǎn)單的Web資源就是Web服務(wù)器文件系統(tǒng)中的靜態(tài)文件。這些文件可以包含任意內(nèi)容:文本文件、HTML文件虫几、微軟的Word文件锤灿、Adobe的Acrobat文件、JPEG圖片文件辆脸、AVI電影文件但校,或所有其他你能夠想到格式。

但資源不一定非的是靜態(tài)文件啡氢。資源還可以是根據(jù)需要生成內(nèi)容的軟件程序状囱。這些動(dòng)態(tài)內(nèi)容資源可以根據(jù)你的身份、所請(qǐng)求的信息或每天的不同時(shí)段來產(chǎn)生內(nèi)容倘是。

1.3.1 媒體類型

因特網(wǎng)上有數(shù)千種不同的數(shù)據(jù)類型亭枷,HTTP仔細(xì)地給每種要通過Web傳輸?shù)膶?duì)象都打上了名為MIME類型的數(shù)據(jù)格式標(biāo)簽。最初設(shè)計(jì)MIME是為了解決在不同的電子郵件系統(tǒng)之間搬移報(bào)文時(shí)存在的問題搀崭。MIME在電子郵件系統(tǒng)中工作的非常好叨粘,因此HTTP也采納了它,用它來描述并標(biāo)記多媒體內(nèi)容瘤睹。

Web服務(wù)器會(huì)為所有HTTP對(duì)象數(shù)據(jù)附加一個(gè)MIME類型升敲。當(dāng)Web瀏覽器從服務(wù)器中取回一個(gè)對(duì)象時(shí),會(huì)去查看相關(guān)的MIME類型默蚌,看看它是否知道應(yīng)該如何處理這個(gè)對(duì)象冻晤。大多數(shù)瀏覽器都可以處理數(shù)百種常見的對(duì)象類型:顯示圖片文件、簡(jiǎn)析并格式化HTML文件绸吸、通過計(jì)算機(jī)聲卡播放音頻文件鼻弧,或者運(yùn)行外部插件軟件來處理特殊格式的數(shù)據(jù)。

MIME類型是一種文本標(biāo)記锦茁,表示一種主要的對(duì)象類型和一個(gè)特定的子類型攘轩,中間由一條斜杠來分隔。

HTML格式的文本文檔由test/html類型來標(biāo)記码俩。

JPEG格式的圖片為image/jpeg類型度帮。

1.3.2 URI

每個(gè)Web服務(wù)器資源都有一個(gè)名字,這樣客戶端就可以說明它們感興趣的資源是什么了稿存。服務(wù)器資源名被稱為統(tǒng)一資源標(biāo)識(shí)符(URI)笨篷,在世界范圍內(nèi)唯一標(biāo)識(shí)并定位信息資源。

URI有兩種形式瓣履,分別稱為URL和URN率翅。

1.3.3 URL

統(tǒng)一資源定位符(URL)是資源標(biāo)識(shí)符最常見的形式。URL描述了一臺(tái)特定服務(wù)器上某資源的特定位置袖迎。它們可以明確說明如何從一個(gè)精確冕臭、固定的位置獲取資源腺晾。

包含三個(gè)部分:

(1)方案,說明訪問資源的協(xié)議類型辜贵,通常為http協(xié)議

(2)服務(wù)器的因特網(wǎng)地址

(3)指定了Web服務(wù)器上的某個(gè)資源

1.3.4 URN

統(tǒng)一資源名(URN) 在實(shí)驗(yàn)階段悯蝉,未大范圍使用。

1.4 事務(wù)

客戶端是怎么通過HTTP與Web服務(wù)器及其資源進(jìn)行事務(wù)處理的托慨。

一個(gè)HTTP事務(wù)由一條(從客戶端發(fā)往服務(wù)器的)請(qǐng)求命令和一個(gè)(從服務(wù)器發(fā)回客戶端的)響應(yīng)結(jié)果組成鼻由。這種通信是通過名為HTTP報(bào)文(HTTP message)的格式化數(shù)據(jù)塊進(jìn)行的。

1.4.1 方法

HTTP支持幾種不同的請(qǐng)求命令榴芳,這些命令被稱為HTTP方法(HTTP method)嗡靡。每條HTTP請(qǐng)求報(bào)文都包含一個(gè)方法。這些方法會(huì)告訴服務(wù)器要執(zhí)行什么動(dòng)作窟感。

以下列出五種常見的HTTP方法

GET? 從服務(wù)器向客戶端發(fā)送命名資源

PUT? ?將來自客戶端的數(shù)據(jù)存儲(chǔ)到一個(gè)命名的服務(wù)器資源中去

DELETE? ? 從服務(wù)器中刪除命名資源

POST? 將客戶端數(shù)據(jù)發(fā)送到一個(gè)服務(wù)器網(wǎng)關(guān)應(yīng)用程序

HEAD? ?僅發(fā)送命名資源響應(yīng)中的HTTP首部

1.4.2 狀態(tài)碼

每條HTTP響應(yīng)報(bào)文返回時(shí)都會(huì)攜帶一個(gè)狀態(tài)碼。狀態(tài)碼是一個(gè)三位數(shù)字的代碼歉井,告知客戶端請(qǐng)求是否成功柿祈,或者是否需要采取其他動(dòng)作。

100~199? 信息性狀態(tài)碼

200~299? ?成功狀態(tài)碼

300~399? ?重定向狀態(tài)碼

400~499? ?客戶端錯(cuò)誤狀態(tài)碼

500~599? ?服務(wù)器錯(cuò)誤狀態(tài)碼

300? 客戶端請(qǐng)求一個(gè)實(shí)際指向多個(gè)資源的URL時(shí)會(huì)返回這個(gè)狀態(tài)碼哩至。

301? ?在請(qǐng)求的URL已被移除時(shí)使用躏嚎。

302? ?與301類似

303? ?告知客戶端應(yīng)該用另一個(gè)URL來獲取資源。

304? ?客戶端可以通過所包含的請(qǐng)求首部菩貌,使其請(qǐng)求變成有條件的卢佣。

305? ?用來說明必須通過一個(gè)代理來訪問資源。

306? ?當(dāng)前未使用

307? ?與301類似

1.4.3 Web頁面中可以包含多個(gè)對(duì)象

應(yīng)用程序完成一項(xiàng)任務(wù)時(shí)通常會(huì)發(fā)布多個(gè)HTTP事務(wù)箭阶。比如虚茶,Web瀏覽器會(huì)發(fā)布一系列HTTP事務(wù)來獲取并顯示一個(gè)包含了豐富圖片的Web頁面。這些嵌入式資源甚至可能位于不同的服務(wù)器上仇参。因此嘹叫,一個(gè)“Web頁面”通常并不是單個(gè)資源,而是一組資源的集合诈乒。

1.5 報(bào)文

HTTP報(bào)文包括以下三個(gè)部分:

起始行? ?

首部字段

主體

1.6 連接

概要介紹了HTTP報(bào)文的構(gòu)成之后罩扇,我們來討論一下報(bào)文是如何通過傳輸控制協(xié)議(TCP)連接從一個(gè)地方搬移到另一個(gè)地方去的。

1.6.1 TCP/IP

HTTP是個(gè)應(yīng)用層協(xié)議怕磨。HTTP無需操心網(wǎng)絡(luò)通信的具體細(xì)節(jié)喂饥;它把聯(lián)網(wǎng)的細(xì)節(jié)都交給了通用、可靠的因特網(wǎng)傳輸協(xié)議TCP/IP肠鲫。

TCP提供了:

(1)無差錯(cuò)的數(shù)據(jù)傳輸员帮;

(2)按序傳輸(數(shù)據(jù)總是會(huì)按照發(fā)送的順序到達(dá));

(3)未分段的數(shù)據(jù)流(可以在任意時(shí)刻以任意尺寸將數(shù)據(jù)發(fā)送出去)

只要建立了TCP連接滩届,客戶端和服務(wù)器之間的報(bào)文交換就不會(huì)丟失集侯、不會(huì)被破壞被啼,也不會(huì)在接收時(shí)出現(xiàn)錯(cuò)序了。

用網(wǎng)絡(luò)術(shù)語來說棠枉,HTTP協(xié)議位于TCP的上層浓体。HTTP使用TCP來傳輸其報(bào)文數(shù)據(jù)。與之類似辈讶,TCP則位于IP的上層命浴。(HTTP 網(wǎng)絡(luò)協(xié)議棧)

HTTP連接實(shí)際上就是TCP連接及其使用規(guī)則。TCP流是分段的贱除、由IP分組傳送生闲。

TCP的數(shù)據(jù)是通過名為IP分組(或IP數(shù)據(jù)報(bào))的小數(shù)據(jù)塊來發(fā)送的。HTTP就是“HTTP over TCP over IP”這個(gè)協(xié)議棧中的最頂層了月幌。其安全版本HTTPS就是在HTTP和TCP之間插入了一個(gè)(稱為TLS或SSL的)密碼加密層碍讯。

TCP連接握手需要經(jīng)過以下幾個(gè)步驟:

(1)請(qǐng)求新的TCP連接時(shí),客戶端要向服務(wù)器發(fā)送一個(gè)小的TCP分組扯躺。這個(gè)分組中設(shè)置了一個(gè)特殊的SYN標(biāo)記捉兴,說明這是一個(gè)連接請(qǐng)求。

(2)如果服務(wù)器接受了連接录语,就會(huì)對(duì)一些連接參數(shù)進(jìn)行計(jì)算倍啥,并向客戶端回送一個(gè)TCP分組,這個(gè)分組中的SYN和ACK標(biāo)記都被置位澎埠,說明連接請(qǐng)求已被接受虽缕。

(3)最后,客戶端向服務(wù)器回送一條確認(rèn)信息蒲稳,通知它連接已成功建立〉鳎現(xiàn)代的TCP棧都允許客戶端在這個(gè)確認(rèn)分組中發(fā)送數(shù)據(jù)。

TCP的慢啟動(dòng):TCP數(shù)據(jù)的傳輸性能還取決于TCP連接的使用期弟塞。TCP連接會(huì)隨著時(shí)間進(jìn)行自我“調(diào)諧”凭峡,起初會(huì)限制連接的最大速度,如果數(shù)據(jù)成功傳輸决记,會(huì)隨著時(shí)間的推移提高傳輸?shù)乃俣却菁健_@種調(diào)諧被稱為TCP慢啟動(dòng),用于防止因特網(wǎng)的突然過載和擁塞系宫。

1.6.2 連接索昂、IP地址及端口號(hào)

在HTTP客戶端向服務(wù)器發(fā)送報(bào)文之前,需要用網(wǎng)際協(xié)議(IP)地址和端口號(hào)在客戶端和服務(wù)器之間建立一條TCP/IP連接扩借。

在TCP中椒惨,你需要知道服務(wù)器的IP地址,以及在服務(wù)器上運(yùn)行的特定軟件相關(guān)的TCP端口號(hào)潮罪。通過URL來獲得:

http://207.200.83.29:80/index.html

http://www.netscape.com:80/index.html

http://www.netscape.com/index.html

第一個(gè)URL使用了機(jī)器的IP地址康谆,207.200.83.29以及端口號(hào)80

第二個(gè)URL沒有使用數(shù)字形式的IP地址领斥,它使用的是文本形式的域名,或者稱為主機(jī)名(www.netscape.com)沃暗。主機(jī)名就是IP地址比較人性化的別稱月洛。可以通過一種稱為域名服務(wù)(DNS)的機(jī)制方便地將主機(jī)名轉(zhuǎn)換為IP地址孽锥,這樣所有問題就都可以解決了嚼黔。

最后一個(gè)URL沒有端口號(hào)。HTTP的URL中沒有端口號(hào)時(shí)惜辑,可以假設(shè)默認(rèn)端口號(hào)是80唬涧。

有了IP地址和端口號(hào),客戶端就可以很方便地通過TCP/IP進(jìn)行通信了盛撑。

基本的瀏覽器連接處理碎节,步驟如下:

(a)瀏覽器從URL中解析出服務(wù)器的主機(jī)名;

(b)瀏覽器將服務(wù)器的主機(jī)名轉(zhuǎn)換成服務(wù)器的IP地址撵彻;

(c)瀏覽器將端口號(hào)(如果有的話)從URL中解析出來钓株;

(d)瀏覽器建立一條與Web服務(wù)器的TCP連接;

(e)瀏覽器向服務(wù)器發(fā)送一條HTTP請(qǐng)求報(bào)文陌僵;

(f)服務(wù)器向?yàn)g覽器回送一條HTTP響應(yīng)報(bào)文;

(g)關(guān)閉連接创坞,瀏覽器顯示文檔碗短。

1.7 Web的結(jié)構(gòu)組件

我們重點(diǎn)介紹了兩個(gè)Web應(yīng)用程序(Web瀏覽器和Web服務(wù)器)是如何相互發(fā)送報(bào)文來實(shí)現(xiàn)基本事務(wù)處理的。在因特網(wǎng)上题涨,要與很多Web應(yīng)用程序進(jìn)行交互偎谁。在本節(jié)中,我們將列出其他一些比較重要的應(yīng)用程序纲堵,如下所示:

(1)代理

位于客戶端和服務(wù)器之間的HTTP中間實(shí)體巡雨。

代理位于客戶端與服務(wù)器之間,接收所有客戶端的HTTP請(qǐng)求席函,并將這些請(qǐng)求轉(zhuǎn)發(fā)給服務(wù)器(可能會(huì)對(duì)請(qǐng)求進(jìn)行修改之后轉(zhuǎn)發(fā))铐望。對(duì)用戶來說,這些應(yīng)用程序就是一個(gè)代理茂附,代表用戶訪問服務(wù)器正蛙。代理還可以對(duì)請(qǐng)求和響應(yīng)進(jìn)行過濾。

(2)緩存

HTTP的倉(cāng)庫营曼,使常用頁面的副本可以保存在離客戶端更近的地方乒验。

Web緩存或代理緩存是一種特殊的HTTP代理服務(wù)器,可以將經(jīng)過代理傳送的常用文檔復(fù)制保存起來蒂阱。下一個(gè)請(qǐng)求同一文檔的客戶端就可以享受緩存的私有副本所提供的服務(wù)了锻全。

客戶端從附近的緩存下載文檔會(huì)比從遠(yuǎn)程Web服務(wù)器下載快得多狂塘。HTTP定義了很多功能,使得緩存更加高效鳄厌,并規(guī)范了文檔的新鮮度和緩存內(nèi)容的隱私性荞胡。

使用緩存有下列優(yōu)點(diǎn):

* 緩存減少了冗余的數(shù)據(jù)傳輸,節(jié)省了你的網(wǎng)絡(luò)費(fèi)用部翘。

* 緩存緩解了網(wǎng)絡(luò)瓶頸的問題硝训。不需要更多的帶寬就能夠更快地加載頁面。

* 緩存降低了對(duì)原始服務(wù)器的要求新思。服務(wù)器可以更快地響應(yīng)窖梁,避免過載的出現(xiàn)。

* 緩存降低了距離時(shí)延夹囚,因?yàn)閺妮^遠(yuǎn)的地方加載頁面會(huì)更慢一些纵刘。

緩存的處理步驟:

1) 接收——緩存從網(wǎng)絡(luò)中讀取抵達(dá)的請(qǐng)求報(bào)文。

2) 解析——緩存對(duì)報(bào)文進(jìn)行解析荸哟,提取出URL和各種首部假哎。

3)查詢——緩存查看是否有本地副本可用,如果沒有鞍历,就獲取一份副本(并將其保存在本地)

4)新鮮度檢測(cè)——緩存查看已緩存副本是否足夠新鮮舵抹,如果不是,就詢問服務(wù)器是否有任何更新劣砍。

5)創(chuàng)建響應(yīng)——緩存會(huì)用新的首部和已緩存的主體來構(gòu)建一條響應(yīng)報(bào)文惧蛹。

6)發(fā)送——緩存通過網(wǎng)絡(luò)將響應(yīng)發(fā)回給客戶端。

7)日志——緩存可選地創(chuàng)建一個(gè)日志文件條目來描述這個(gè)事務(wù)刑枝。

(3)網(wǎng)關(guān)

連接其他應(yīng)用程序的特殊Web服務(wù)器香嗓。

網(wǎng)關(guān)是一種特殊的服務(wù)器,作為其他服務(wù)器的中間實(shí)體使用装畅。通常用于將HTTP流量轉(zhuǎn)換成其他的協(xié)議靠娱。

例如,一個(gè)HTTP/FTP網(wǎng)關(guān)會(huì)通過HTTP請(qǐng)求接收對(duì)FTP URI的請(qǐng)求掠兄,但通過FTP協(xié)議來獲取文檔像云。得到的文檔會(huì)被封裝成一條HTTP報(bào)文,發(fā)送給客戶端徽千。

(4)隧道

對(duì)HTTP通信報(bào)文進(jìn)行盲轉(zhuǎn)發(fā)的特殊代理苫费。

隧道是建立起來以后,就會(huì)在兩條連接之間對(duì)原始數(shù)據(jù)進(jìn)行盲轉(zhuǎn)發(fā)的HTTP應(yīng)用程序双抽。HTTP隧道通常用來在一條或多條HTTP連接上轉(zhuǎn)發(fā)非HTTP數(shù)據(jù)百框,轉(zhuǎn)發(fā)時(shí)不會(huì)窺探數(shù)據(jù)。

HTTP隧道的一種常見用途是通過HTTP連接承載加密的安全套接字層(SSL)流量牍汹,這樣SSL流量就可以穿過只允許Web流量通過的防火墻了铐维。

(5)Agent代理

發(fā)起自動(dòng)HTTP請(qǐng)求的半智能Web客戶端柬泽。

用戶Agent代理是代表用戶發(fā)起HTTP請(qǐng)求的客戶端程序。所有發(fā)布Web請(qǐng)求的應(yīng)用程序都是HTTP Agent代理嫁蛇。到目前為止锨并,我們只提到過一種HTTP Agent代理:Web 瀏覽器,但用戶Agent代理還有很多其它類型睬棚。

1.8 客戶端識(shí)別與cookie機(jī)制

cookie 是當(dāng)前識(shí)別用戶第煮,實(shí)現(xiàn)持久會(huì)話的最好方式。

cookie的存在也影響了緩存抑党,大多數(shù)緩存和瀏覽器都不允許對(duì)任何cookie的內(nèi)容進(jìn)行緩存包警。

1.8.1 cookie的類型

可以籠統(tǒng)的將cookie分為兩類:會(huì)話cookie和持久cookie。

會(huì)話cookie是一種臨時(shí)cookie底靠,它記錄了用戶訪問站點(diǎn)時(shí)的設(shè)置和偏好害晦。用戶退出瀏覽器時(shí),會(huì)話cookie就被刪除了暑中。持久cookie的生存時(shí)間更長(zhǎng)一些壹瘟;它們存儲(chǔ)在硬盤上,瀏覽器退出鳄逾,計(jì)算機(jī)重啟時(shí)它們?nèi)匀淮嬖诘竟臁Mǔ?huì)用持久cookie維護(hù)某個(gè)用戶會(huì)周期性訪問的站點(diǎn)的配置文件或登錄名。

會(huì)話cookie和持久cookie之間唯一的區(qū)別就是它們的過期時(shí)間雕凹。

1.8.2 cookie是如何工作的

cookie就像服務(wù)器給用戶貼的“嗨澄者,我叫”的貼紙一樣。用戶訪問一個(gè)Web站點(diǎn)時(shí)请琳,這個(gè)Web站點(diǎn)就可以讀取那個(gè)服務(wù)器貼在用戶身上的所有貼紙。

用戶首次訪問Web站點(diǎn)時(shí)赠幕,Web服務(wù)器對(duì)用戶一無所知俄精。Web服務(wù)器希望這個(gè)用戶會(huì)再次回來,所以想給這個(gè)用戶“拍上”一個(gè)獨(dú)有的cookie榕堰,這樣以后它就可以識(shí)別出這個(gè)用戶了竖慧。cookie中包含了一個(gè)由名字=值,這樣的信息構(gòu)成的任意列表逆屡,并通過set-Cookie或Set-Cookie2 HTTP響應(yīng)(擴(kuò)展)首部將其貼到用戶身上去圾旨。

cookie中可以包含任意信息,但它們通常都只包含一個(gè)服務(wù)器為了進(jìn)行跟蹤而產(chǎn)生的獨(dú)特的識(shí)別碼魏蔗。比如砍的,服務(wù)器會(huì)將一個(gè)表示id="23456"的cookie貼到用戶上去。服務(wù)器可以用這個(gè)數(shù)字來查找服務(wù)器為其訪問者積累的數(shù)據(jù)庫信息莺治。但是廓鞠,cookie并不僅限于ID號(hào)帚稠。很多Web服務(wù)器都會(huì)將信息直接保存在cookie中。瀏覽器會(huì)記住從服務(wù)器返回的Set-Cookie或Set-Cookie2首部中的cookie內(nèi)容床佳,并將cookie集存儲(chǔ)在瀏覽器的cookie數(shù)據(jù)庫中滋早。將來用戶返回同一個(gè)站點(diǎn)時(shí),瀏覽器會(huì)挑中那個(gè)服務(wù)器貼到用戶上的那些cookie砌们,并在一個(gè)cookie請(qǐng)求首部中將其傳回去杆麸。

1.8.3 不同站點(diǎn)使用不同的cookie

瀏覽器內(nèi)部的cookie罐中可以有成百上千個(gè)cookie,但瀏覽器不會(huì)將每個(gè)cookie都發(fā)送給所有的站點(diǎn)浪感。實(shí)際上昔头,它們通常只向每個(gè)站點(diǎn)發(fā)送2~3個(gè)cookie。cookie就是由服務(wù)器貼到客戶端上篮撑,由客戶端維護(hù)的狀態(tài)片段减细,只會(huì)回送給那些合適的站點(diǎn)。

1.8.4 cookie與會(huì)話跟蹤

可以用cookie在用戶與某個(gè)Web站點(diǎn)進(jìn)行多項(xiàng)事務(wù)處理時(shí)對(duì)用戶進(jìn)行跟蹤赢笨。電子商務(wù)Web站點(diǎn)用會(huì)話cookie在用戶瀏覽時(shí)記錄下用戶的購(gòu)物車信息未蝌。

1.8.5 cookie與緩存

緩存那些與cookie事務(wù)有關(guān)的文檔時(shí)要特別小心。你不會(huì)希望給用戶分配一個(gè)過去某些用戶用過的cookie茧妒,或者更糟糕的是萧吠,向一個(gè)用戶展示其他人私有文檔的內(nèi)容。

cookie和緩存的規(guī)則并沒有很好地建立起來桐筏。下面是處理緩存時(shí)的一些指導(dǎo)性規(guī)則:

* 如果無法緩存文檔纸型,要將其標(biāo)識(shí)出來

* 緩存 Set-Cookie 首部時(shí)要小心

* 小心處理帶有 Cookie首部的請(qǐng)求

1.9 HTTPS——細(xì)節(jié)介紹

HTTPS是最常見的HTTP安全版本。HTTPS將HTTP協(xié)議與一組強(qiáng)大的對(duì)稱梅忌、非對(duì)稱和基于證書的加密技術(shù)結(jié)合在一起狰腌,使得HTTPS不僅很安全,而且很靈活牧氮,很容易在處于無序狀態(tài)的琼腔、分散的全球互聯(lián)網(wǎng)上進(jìn)行管理。

1.9.1 HTTPS概述

HTTPS就是在安全的傳輸層上發(fā)送的HTTP踱葛。HTTPS沒有將未加密的HTTP報(bào)文發(fā)送給TCP丹莲,并通過世界范圍內(nèi)的因特網(wǎng)進(jìn)行傳輸,它在將HTTP報(bào)文發(fā)送給TCP之前尸诽,先將其發(fā)送了一個(gè)安全層甥材,對(duì)其進(jìn)行加密。

HTTP安全層是通過SSL及其現(xiàn)代替代協(xié)議TLS來實(shí)現(xiàn)的性含。

1.9.2 建立安全傳輸

在未加密HTTP中洲赵,客戶端會(huì)打開一條到Web服務(wù)器端口80的TCP連接,發(fā)送一條請(qǐng)求報(bào)文,接收一條響應(yīng)報(bào)文板鬓,關(guān)閉連接悲敷。

在HTTPS中,客戶端首先打開一條到Web服務(wù)器端口443(默認(rèn)端口)的連接俭令。一旦建立了TCP連接后德,客戶端和服務(wù)器就會(huì)初始化SSL層,對(duì)加密參數(shù)進(jìn)行溝通抄腔,并交換密鑰瓢湃。握手完成以后,SSL初始化就完成了赫蛇,客戶端就可以將請(qǐng)求報(bào)文發(fā)送給安全層了绵患。在將這些報(bào)文發(fā)送給TCP之前,要先對(duì)其進(jìn)行加密悟耘。

1.9.3 SSL握手

在發(fā)送已加密的HTTP報(bào)文之前落蝙,客戶端和服務(wù)器要進(jìn)行一次SSL握手,在這個(gè)握手過程中暂幼,它們要完成以下工作:

* 交換協(xié)議版本號(hào)

* 選擇一個(gè)兩端都了解的密碼

* 對(duì)兩端的身份進(jìn)行認(rèn)證

* 生成臨時(shí)的會(huì)話密鑰筏勒,以便加密信道


推薦:圖靈程序設(shè)計(jì)叢書? 《HTTP 權(quán)威指南》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市旺嬉,隨后出現(xiàn)的幾起案子管行,更是在濱河造成了極大的恐慌,老刑警劉巖邪媳,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捐顷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡雨效,警方通過查閱死者的電腦和手機(jī)迅涮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徽龟,“玉大人逗柴,你說我怎么就攤上這事《俜危” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵渣蜗,是天一觀的道長(zhǎng)屠尊。 經(jīng)常有香客問我,道長(zhǎng)耕拷,這世上最難降的妖魔是什么讼昆? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮骚烧,結(jié)果婚禮上浸赫,老公的妹妹穿的比我還像新娘闰围。我一直安慰自己,他們只是感情好既峡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布羡榴。 她就那樣靜靜地躺著,像睡著了一般运敢。 火紅的嫁衣襯著肌膚如雪校仑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天传惠,我揣著相機(jī)與錄音迄沫,去河邊找鬼。 笑死卦方,一個(gè)胖子當(dāng)著我的面吹牛羊瘩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盼砍,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼尘吗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了衬廷?” 一聲冷哼從身側(cè)響起摇予,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吗跋,沒想到半個(gè)月后侧戴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跌宛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年酗宋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疆拘。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜕猫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哎迄,到底是詐尸還是另有隱情回右,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布漱挚,位于F島的核電站翔烁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏旨涝。R本人自食惡果不足惜蹬屹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慨默,春花似錦贩耐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒜胖,卻和暖如春消别,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背台谢。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工寻狂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朋沮。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓蛇券,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親樊拓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纠亚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

  • 工作流程 一次HTTP操作稱為一個(gè)事務(wù),其工作過程可分為四步: 1)首先客戶機(jī)與服務(wù)器需要建立連接筋夏。只要單擊某個(gè)超...
    保川閱讀 4,585評(píng)論 2 14
  • 在做web前端開發(fā)時(shí)蒂胞,我們必須要知道客戶端和服務(wù)端是如何通信的,通俗簡(jiǎn)單點(diǎn)就是 請(qǐng)求(客戶端) R11 > 響應(yīng) ...
    80bb3ef13dea閱讀 1,694評(píng)論 0 1
  • Web 頁面的實(shí)現(xiàn) Web 基于 HTTP 協(xié)議通信 客戶端(Client)的 Web 瀏覽器從 Web 服務(wù)器端...
    毛圈閱讀 1,072評(píng)論 0 2
  • 登錄和授權(quán) 登錄 身份認(rèn)證的過程条篷,在輸入賬號(hào)和密碼以及點(diǎn)擊登錄按鈕這一操作流程骗随,就是將「你本人」和所輸入的「賬號(hào)」...
    valentizx閱讀 1,560評(píng)論 0 2
  • 2018年10月19日上午9時(shí),周寨行政村對(duì)長(zhǎng)期無人居住的危漏房屋赴叹,進(jìn)行拆除鸿染,以確保本村居民生活安全。在支部書記周...
    一縷秋思閱讀 345評(píng)論 0 0