偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

計算機(jī)網(wǎng)絡(luò)應(yīng)用層之HTTP協(xié)議

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
HTTP協(xié)議由兩部分程序?qū)崿F(xiàn):一個客戶機(jī)程序和一個服務(wù)器程序,它們運(yùn)行在不同的端系統(tǒng)中,通過交換HTTP報文運(yùn)行會話。HTTP定義了Web客戶機(jī)是如何向Web服務(wù)器請求Web頁面,以及服務(wù)器如何將Web頁面?zhèn)魉徒o客戶機(jī)的。

一、什么是HTTP協(xié)議

HTTP是HyperText Transfer Protocol即超文本傳輸協(xié)議的縮寫,是Web應(yīng)用層協(xié)議之一。

HTTP協(xié)議由兩部分程序?qū)崿F(xiàn):一個客戶機(jī)程序和一個服務(wù)器程序,它們運(yùn)行在不同的端系統(tǒng)中,通過交換HTTP報文運(yùn)行會話。HTTP定義了Web客戶機(jī)是如何向Web服務(wù)器請求Web頁面,以及服務(wù)器如何將Web頁面?zhèn)魉徒o客戶機(jī)的。

HTTP使用 TCP作為它的支撐運(yùn)輸協(xié)議。HTTP客戶機(jī)發(fā)起一個與服務(wù)器的TCP連接,一旦連接建立,瀏覽器(客戶機(jī))和服務(wù)器進(jìn)程就可以通過套接字接口訪問 TCP。至于TCP是什么,在后面的文章中,會詳細(xì)介紹,這里讀者只需要知道,TCP是面向連接的,提供可靠的數(shù)據(jù)傳輸服務(wù),可以無差錯、按順序地交付要發(fā)送的數(shù)據(jù)。即使用TCP作為其支撐的HTTP協(xié)議不用擔(dān)心數(shù)據(jù)丟失,也不用擔(dān)心TCP是如何從網(wǎng)絡(luò)的數(shù)據(jù)丟失和亂序故障中恢復(fù)的,因?yàn)槟鞘荰CP以及協(xié)議棧底層協(xié)議的工作。

HTTP是一個無狀態(tài)協(xié)議,所以服務(wù)器向客戶機(jī)發(fā)送被請求的文件時,并不存儲任何關(guān)于該客戶機(jī)的狀態(tài)信息。舉個例子來說,就是假如某個特定的客戶機(jī)在短短幾秒內(nèi)兩次請求同一個對象,服務(wù)器并不會因?yàn)閯倓倿樵撚脩籼峁┝嗽搶ο蠖蛔龀龇磻?yīng),而是重新發(fā)送該對象,就好像服務(wù)器已經(jīng)完全忘記了之前所做的事一樣。

最后補(bǔ)充一下,我們平時上網(wǎng)請求的Web頁面是由對象組成的。對象,簡單點(diǎn)來說就是文件,如HTML文件、jpg圖片、視頻等文件,這些文件可通過一個URL地址尋址。當(dāng)我們請求一個頁面時,我們通常會得到一個HTML文件和幾個引用對象,然后再根據(jù)HTML文件中對象的URL地址來加載對象。

二、非持久連接和持久連接

當(dāng)客戶機(jī)/服務(wù)器的交互運(yùn)行于TCP協(xié)議上時,應(yīng)用程序的每個請求/響應(yīng)對是經(jīng)一個單獨(dú)的TCP連接,則該應(yīng)用程序使用非持久連接,而當(dāng)應(yīng)用程序的每個請求/響應(yīng)對是經(jīng)相同的TCP連接發(fā)送,則該應(yīng)用程序使用持久連接。

1、首先,我們來研究一下非持久連接。

在非持久連接的情況下,服務(wù)器在發(fā)送響應(yīng)后,關(guān)閉TCP連接。我們定義往返時間RTT為一個小分組從客戶機(jī)到服務(wù)器再回到客戶所花費(fèi)的時間。所以RTT包括分組傳播時延、排列時延以及分組處理時延。

我們知道 HTTP協(xié)議基于TCP協(xié)議作為運(yùn)輸層,所以使用HTTP與服務(wù)器之間建立一個連接,則要發(fā)起一個到服務(wù)器的TCP連接,而TCP建立連接涉及一個“三次握手”的過程。關(guān)于“三次握手”在后面介紹TCP的文章中會詳細(xì)介紹,這里我們只需要知道,它就是客戶機(jī)向服務(wù)器發(fā)送一個小TCP報文段,服務(wù)器用一個小的報文段做出確認(rèn)和響應(yīng),最后,客戶機(jī)向服務(wù)器返回確認(rèn)。注意,完成了三次握手的前兩部分后,客戶機(jī)將三次握手的第三部分(確認(rèn))與一個HTTP請求報文結(jié)合起來發(fā)送到該TCP連接。一旦請求報文到達(dá)服務(wù)器,服務(wù)器向該TCP連接發(fā)送HTML文件。從上面的描述,我們可以知道,對于一個非持久連接,請求一個HTTP請求/響應(yīng)需要的總時間為兩個RTT+服務(wù)器傳輸HTML文件的時間。

2、再來看看持久連接。

在持久連接的情況下,服務(wù)器在發(fā)送響應(yīng)后,保持該TCP連接打開。在相同的客戶機(jī)與服務(wù)器之間的后續(xù)請求和響應(yīng)報文通過相同的連接進(jìn)行傳送。特別是一個完整的Web頁面(包括多個對象)可以使用單個持久TCP連接進(jìn)行傳送。如果一個連接經(jīng)過一定時間間隔仍未被使用,HTTP服務(wù)器就關(guān)閉該連接。

位于同一臺服務(wù)器的多個Web頁面在從該服務(wù)器發(fā)送給同一個客戶機(jī)時,可以在單個持久TCP連接上進(jìn)行,這睦對象請求可一個接一個地發(fā)出,而不必等待未決請求的回答,這種方式叫做流水線式的持久連接,它是HTTP默認(rèn)使用的持久連接。

3、非持久連接的缺點(diǎn)

首先,非持久連接必須為每一個請求的對象建立和維護(hù)一個全新的連接。對于每個這樣的連接,在客戶機(jī)和服務(wù)器都要分配TCP的緩沖區(qū)和變量,從而給服務(wù)器帶來了嚴(yán)重的負(fù)擔(dān)。其次,每一個對象的傳輸時延為兩個RTT,即一個RTT用于建立TCP,另一個RTT用于請求和接收一個對象。

三、HTTP報文格式

1、HTTP的請求報文格式

首先,來看看HTTP的請求報文的報文格式,如下圖所示:

第一行是請求行,請求行有3個字段,方法字段、URL字段和HTTP版本字段。方法字段可以取值GET、POST、HEAD、PUT和DELETE等,絕大多數(shù)請求使用GET方法。其后繼行叫做首部行。當(dāng)使用GET方法時,實(shí)體主體通常為空,而當(dāng)使用POST方法時,實(shí)體主體通常為需要POST給服務(wù)器的內(nèi)容,例如,我們在網(wǎng)頁上輸入的數(shù)據(jù)。

下面,給出一個真正的HTTP請求報文,如下:

GET /xxx/page.html HTTP/1.1

Host: www.xxx.com

Connection: close

User-agent:Mozilla/4.0

Accept-language: fr

跟上圖對應(yīng),這個報文第一行表示請求行,瀏覽器向服務(wù)器請求一個對象,使用了GET方法,它的地址在URL字段中,為/xxx/page.html,所使用的HTTP版本為1.1。

其余的行為首部行,冒號前的是首部字段名,后面是字段的值。

Host: www.xxx.com 定義了目標(biāo)所在的主機(jī),首部行提供的信息是Web代理高速緩存所要求的。

Connection: close 它告訴服務(wù)器不希望使用持久連接,它要求服務(wù)器在發(fā)送完被請求的對象后就關(guān)閉連接。

User-agent:Mozilla/4.0 用來定義用戶代理,即向服務(wù)器發(fā)送請求的瀏覽器類型,這里為Netscape瀏覽器。

Accept-language: fr 表示用戶想得到該對象的法語版本。

2、HTTP響應(yīng)報文格式

HTTP響應(yīng)報文格式與HTTP請求報文有點(diǎn)不同,HTTP的響應(yīng)報文格式如下圖所示:

我們可以看到它同樣由三部分組成,第一行為狀態(tài)行,其后的為首部行,最后的為要發(fā)送的實(shí)體主體。實(shí)體主體部分是報文的主體,即它包含了所請求的對象本身。

下面來看看一個真實(shí)的HTTP響應(yīng)報文,如下:

HTTP/1.1 200 OK

Connection: close

Data: Thu, 03, Jul, 2013 00:00:00 GMT

Server: Apache/1.3.0 (Unix)

Last-Modified: Sun, 6, May 2007 09:23:24 GMT

Content-Type: text/html

(data ... data ...)

首先看一看第一行,它對應(yīng)上圖中的狀態(tài)行,在該報文中,狀態(tài)行指示服務(wù)器使用的協(xié)議是HTTP/1.1,狀態(tài)碼為200,短語為OK,表示一切正常,信息包含在返回的響應(yīng)報文中。

第2到5行為首部行,

Connection: close 告訴客戶機(jī)在報文發(fā)送完后關(guān)閉該TCP連接。

Data 首部行指示服務(wù)器產(chǎn)生并發(fā)送該響應(yīng)報文的日期和時間,它是服務(wù)器從它的文件系統(tǒng)中檢索到該對象,插入到響應(yīng)報文的時間。

Server 首部行表明該報文是由一個Apache Web服務(wù)器產(chǎn)生的,它類似于請求報文中的User-agent首部行。

Last-Modified 首部行指示了該對象創(chuàng)建或者最后修改的時間和日期。

Content-Type 首部行指示了實(shí)體主體中的對象的文件類型,對象類型應(yīng)該正式地使用該首部行而不是用文件擴(kuò)展名來指示,因?yàn)樵谀承┫到y(tǒng)(如Linux),文件的類型并不是用擴(kuò)展名為區(qū)分的。

Content-Length 首部行表明了被發(fā)送對象的字節(jié)數(shù)。

3、常見的HTTP狀態(tài)碼和短語

200 OK:請求成功,信息包含在返回的響應(yīng)報文中。

301 Moved Permanently:請求的對象已經(jīng)被永久轉(zhuǎn)移了,新的URL定義在響應(yīng)報文的Location 首部行中指定??蛻魴C(jī)可自動用新的URL獲取該對象。

400 Bad Repuest:一個通用差錯代碼,指示該請求不能被服務(wù)器所理解。

404 Not Found:被請求的文檔不在服務(wù)器上。

505 HTTP Version Not Supported:服務(wù)器不支持請求報文使用的HTTP協(xié)議版本。

博客原文:http://blog.csdn.net/ljianhui/article/details/13087145

責(zé)任編輯:張存 來源: 博客
相關(guān)推薦

2013-11-25 10:07:31

P2P對等網(wǎng)絡(luò)

2013-03-08 12:51:03

計算機(jī)網(wǎng)絡(luò)基礎(chǔ)協(xié)議DHCP

2013-05-14 13:02:17

計算機(jī)網(wǎng)絡(luò)基礎(chǔ)協(xié)議

2010-09-02 16:02:45

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-09-08 20:45:31

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-09-08 20:42:09

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-06-12 16:56:37

2025-08-26 02:50:00

2015-05-28 11:09:00

2010-06-14 18:58:52

VoIP計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-09-08 20:53:14

WinPCap計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-09-08 21:01:44

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-06-14 18:54:57

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-06-13 15:08:07

計算機(jī)網(wǎng)絡(luò)協(xié)議

2025-02-25 08:16:43

2010-06-14 18:51:05

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-09-02 16:56:10

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-06-09 11:00:56

2010-06-13 13:35:54

計算機(jī)網(wǎng)絡(luò)協(xié)議

2010-06-12 16:51:54

計算機(jī)網(wǎng)絡(luò)通信協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號