6.1、HTTP介紹
成都創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、做網(wǎng)站、浠水網(wǎng)絡(luò)推廣、微信小程序、浠水網(wǎng)絡(luò)營(yíng)銷(xiāo)、浠水企業(yè)策劃、浠水品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供浠水建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
Web、服務(wù)器和相關(guān)的Web應(yīng)用程序都是通過(guò)HTTP相互通信的。HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)是現(xiàn)代全球因特網(wǎng)中使用的公共語(yǔ)言。Web內(nèi)容都是存儲(chǔ)在Web服務(wù)器上的,Web服務(wù)器所使用的是HTTP協(xié)議,因此經(jīng)常會(huì)被稱(chēng)為HTTP服務(wù)器。這些HTTP服務(wù)器存儲(chǔ)了因特網(wǎng)中的數(shù)據(jù),如果HTTP客戶(hù)端發(fā)出請(qǐng)求,它們會(huì)提供數(shù)據(jù)??蛻?hù)端向服務(wù)器發(fā)送HTTP請(qǐng)求,服務(wù)器會(huì)在HTTP響應(yīng)中回送所請(qǐng)求的數(shù)據(jù)。
資源與資源的類(lèi)型
Web服務(wù)器就是Web資源的宿主,Web資源就是Web內(nèi)容的源頭。最簡(jiǎn)單的Web資源就是Web服務(wù)器文件系統(tǒng)中的靜態(tài)文件。這些文件可以包含任意內(nèi)容:文本文件、HTML文件、word文件、AVI電影文件等。但是資源并不一定是靜態(tài)文件,資源還可以是根據(jù)需要生成內(nèi)容的軟件程序,這些程序可以根據(jù)用戶(hù)身份、所請(qǐng)求的信息來(lái)產(chǎn)生不同的內(nèi)容。
因特網(wǎng)上有數(shù)千種不同類(lèi)型的數(shù)據(jù)類(lèi)型,HTTP給每種要通過(guò)Web傳輸?shù)膶?duì)象都打上了MIME類(lèi)型的數(shù)據(jù)格式標(biāo)簽。Web服務(wù)器會(huì)為所有的HTTP對(duì)象數(shù)據(jù)附加MIME(Multipurpose Internet Mail Extension,多用途因特網(wǎng)郵件擴(kuò)展)類(lèi)型。當(dāng)Web瀏覽器從服務(wù)器中取回一個(gè)對(duì)象時(shí),會(huì)查看相關(guān)的MIME類(lèi)型,看看能否知道該如何處理該對(duì)象,大多數(shù)瀏覽器都可以處理數(shù)百種常見(jiàn)的對(duì)象類(lèi)型。
MIME類(lèi)型是一種文本標(biāo)記,表示一種主要的對(duì)象類(lèi)型和一個(gè)特定的子類(lèi)型,中間用斜杠分隔。
HTML格式的文本文檔由text/html類(lèi)型來(lái)標(biāo)記 普通ASCII文本文檔由text/plain類(lèi)型來(lái)標(biāo)記 JPEG版本圖片為image/jpeg類(lèi)型 GIF版本圖片為image/gif類(lèi)型 ... |
URI與URL
每個(gè)Web服務(wù)器資源都有一個(gè)名字,這樣客戶(hù)端可以通過(guò)該名字找到所需要的資源。服務(wù)器資源名被稱(chēng)為統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Indentifier,URI)。URI就像英特網(wǎng)上的郵政地址一樣,在世界范圍內(nèi)唯一標(biāo)示并定位信息資源。
例如: http://www.joes-hardware.com/specials/saw-blade.gif
統(tǒng)一資源定位符(Uniform Resource Locator,URL)是資源標(biāo)識(shí)符最常見(jiàn)的形式,URL描述了一臺(tái)特定服務(wù)器上某資源的特定位置。它們可以明確說(shuō)明如何從喲個(gè)精確、固定的位置獲取資源。如圖顯示了URL如何精確的說(shuō)明某自愿的位置以及如何訪問(wèn)。
事務(wù)
下圖展示了客戶(hù)端如何通過(guò)HTTP與Web服務(wù)器及其資源進(jìn)行事務(wù)處理。一個(gè)HTTP事務(wù)由一條(客戶(hù)端發(fā)往服務(wù)器端)請(qǐng)求和一個(gè)響應(yīng)(服務(wù)器端發(fā)回客戶(hù)端)組成。這種通信通過(guò)HTTP報(bào)文的格式畫(huà)數(shù)據(jù)塊進(jìn)行。
HTTP支持幾種不同的請(qǐng)求命令,這些命令被稱(chēng)為HTTP方法(HTTP mothod)。每種HTTP請(qǐng)求報(bào)文都包含一個(gè)方法。這些方法告訴服務(wù)器要執(zhí)行什么動(dòng)作,常見(jiàn)的HTTP方法有:
GET | 請(qǐng)求獲取一個(gè)資源,需要服務(wù)器發(fā)送 |
HEAD | 跟GET相似,但其不需要服務(wù)發(fā)送資源而僅傳回響應(yīng)首部 |
PUT | 與GET相反,向服務(wù)端寫(xiě)入文檔;例如發(fā)布系統(tǒng) |
DELETE | 請(qǐng)求刪除URL指向的資源 |
OPTIONS | 探測(cè)服務(wù)器端對(duì)某資源所支持的請(qǐng)求方法 |
TRACE | 跟蹤請(qǐng)求要經(jīng)過(guò)的防火墻、代理或網(wǎng)關(guān)等 |
POS | 支持HTML表單提交,表單中有用戶(hù)填入的數(shù)據(jù),這些數(shù)據(jù)會(huì)發(fā)送到服務(wù)器端,由服務(wù)器存儲(chǔ)至某位置(例如發(fā)送處理程序) |
每條HTTP響應(yīng)報(bào)文返回時(shí)都會(huì)攜帶一個(gè)狀態(tài)碼。狀態(tài)碼是一個(gè)三位數(shù)字的代碼,告知客戶(hù)端請(qǐng)求是否成功,或者是否需要采取其他動(dòng)作,常見(jiàn)的狀態(tài)碼有:
1xx | 純信息性狀態(tài)碼 |
2xx | “成功”類(lèi)的信息 (200, 201, 202) |
3xx | 重定向狀態(tài)碼 301:Moved Permanently, 在響應(yīng)報(bào)文中用首部“Location: URL”指定資源現(xiàn)在所處位置 302:Found, 在響應(yīng)報(bào)文中使用首部“Location: URL”指定臨時(shí)資源位置; 304:Not Modified, 條件式請(qǐng)求中使用;(緩存中使用) |
4xx | 客戶(hù)端錯(cuò)誤類(lèi)的信息 403:Forbidden,請(qǐng)求被服務(wù)器拒絕 404:Not Found,服務(wù)器無(wú)法找到請(qǐng)求的URL 405:Method Not Allowed,不允許使用此方法請(qǐng)求相應(yīng)的URL |
5xx | 服務(wù)器端錯(cuò)誤類(lèi)的信息 500:Internal Server Error,服務(wù)器內(nèi)部錯(cuò)誤; 502:Bad Gateway,代理服務(wù)器從上游收到了一條偽響應(yīng); 503:Service Unavailable,服務(wù)器此時(shí)無(wú)法提供服務(wù),但將來(lái)可能可用; 504:Gateway Timeout,網(wǎng)關(guān)代理請(qǐng)求后端服務(wù)時(shí),后端服務(wù)沒(méi)有及時(shí)響應(yīng)。 |
報(bào)文
HTTP報(bào)文是由一行一行的簡(jiǎn)單字符串組成.HTTP報(bào)文都是純文本,而不是二進(jìn)制代碼,所以可以方便地對(duì)其進(jìn)行讀寫(xiě)。下圖展示了一個(gè)簡(jiǎn)單事務(wù)所使用的HTTP報(bào)文。
HTTTP報(bào)文主要分為三個(gè)部分:起始行、首部字段、主體。
請(qǐng)求報(bào)文語(yǔ)法: (必須空一行) 響應(yīng)報(bào)文語(yǔ)法: (必須空一行) |
HTTTP協(xié)議版本
http/0.9:僅純文本(超鏈接), ASCII
http/1.0:支持多媒體數(shù)據(jù)的處理。支持保持連接。
http/1.1:支持持久連接。更精細(xì)的緩存控制
HTTP-NG(又稱(chēng)HTTP/2.0),重點(diǎn)是性能的大幅優(yōu)化,以及更強(qiáng)大的服務(wù)邏輯遠(yuǎn)程執(zhí)行框架,但沒(méi)有要取代http/1.1的計(jì)劃。
HTTP首部
HTTP首部和方法配合工作,共同決定了客戶(hù)端和服務(wù)器能做什么。首部通??梢苑譃槲宸N類(lèi)型:
通用首部:請(qǐng)求報(bào)文和響應(yīng)報(bào)文都可以使用的
HTTP/1.0引入允許HTTP應(yīng)用程序緩存對(duì)象本地副本的首部,這樣就不需要總是直接從服務(wù)器段獲取。
請(qǐng)求首部:只在請(qǐng)求報(bào)文中有意義
請(qǐng)求的信息性首部:
Accept首部:
條件請(qǐng)求首部:
安全請(qǐng)求首部:
代理請(qǐng)求首部:
響應(yīng)首部:只在請(qǐng)求報(bào)文中有意義
響應(yīng)的信息性首部
協(xié)商首部
安全響應(yīng)首部
實(shí)體首部:用于指定實(shí)體屬性
實(shí)體的信息性首部
內(nèi)容首部
實(shí)體緩存首部
擴(kuò)展首部:非標(biāo)準(zhǔn)首部,可能是由程序開(kāi)發(fā)者創(chuàng)建的,例如X-Forward-For
HTTTP的實(shí)現(xiàn)軟件
客戶(hù)端:
GUI:IE、Firefox、Safari、chrome、Opera
CLI:elinks, curl
服務(wù)端:
Server: httpd(ASF基金會(huì))、nginx、lighttpd
App Server: IIS、tomcat、jetty、resin
6.2、Web服務(wù)器處理連接請(qǐng)求的架構(gòu)方式
1、單線程web服務(wù)器(Single-threaded web servers)
此種架構(gòu)方式中,web服務(wù)器一次處理一個(gè)請(qǐng)求,結(jié)束后讀取并處理下一個(gè)請(qǐng)求。在某請(qǐng)求處理過(guò)程中,其它所有的請(qǐng)求將被忽略,因此,在并發(fā)請(qǐng)求較多的場(chǎng)景中將會(huì)出現(xiàn)嚴(yán)重的必能問(wèn)題。
2、多進(jìn)程/多線程web服務(wù)器
此種架構(gòu)方式中,web服務(wù)器生成多個(gè)進(jìn)程或線程并行處理多個(gè)用戶(hù)請(qǐng)求,進(jìn)程或線程可以按需或事先生成。有的web服務(wù)器應(yīng)用程序?yàn)槊總€(gè)用戶(hù)請(qǐng)求生成一個(gè)單獨(dú)的進(jìn)程或線程來(lái)進(jìn)行響應(yīng),不過(guò),一旦并發(fā)請(qǐng)求數(shù)量達(dá)到成千上萬(wàn)時(shí),多個(gè)同時(shí)運(yùn)行的進(jìn)程或線程將會(huì)消耗大量的系統(tǒng)資源。
3、I/O多路復(fù)用web服務(wù)器
為了能夠支持更多的并發(fā)用戶(hù)請(qǐng)求,越來(lái)越多的web服務(wù)器正在采用多種復(fù)用的架構(gòu)——同步監(jiān)控所有的連接請(qǐng)求的活動(dòng)狀態(tài),當(dāng)一個(gè)連接的狀態(tài)發(fā)生改變時(shí)(如數(shù)據(jù)準(zhǔn)備完畢或發(fā)生某錯(cuò)誤),將為其執(zhí)行一系列特定操作;在操作完成后,此連接將重新變回暫時(shí)的穩(wěn)定態(tài)并返回至打開(kāi)的連接列表中,直到下一次的狀態(tài)改變。由于其多路復(fù)用的特性,進(jìn)程或線程不會(huì)被空閑的連接所占用,因而可以提供高效的工作模式。
4、多路復(fù)用多線程web服務(wù)器
將多進(jìn)程和多路復(fù)用的功能結(jié)合起來(lái)形成的web服務(wù)器架構(gòu),其避免了讓一個(gè)進(jìn)程服務(wù)于過(guò)多的用戶(hù)請(qǐng)求,并能充分利用多CPU主機(jī)所提供的計(jì)算能力。
一次web請(qǐng)求響應(yīng)的過(guò)程
1、建立連接——接受或拒絕客戶(hù)端連接請(qǐng)求;
2、接收請(qǐng)求——通過(guò)網(wǎng)絡(luò)讀取HTTP請(qǐng)求報(bào)文;
3、處理請(qǐng)求——解析請(qǐng)求報(bào)文并做出相應(yīng)的動(dòng)作;
4、訪問(wèn)資源——訪問(wèn)請(qǐng)求報(bào)文中相關(guān)的資源;
5、構(gòu)建響應(yīng)——使用正確的首部生成HTTP響應(yīng)報(bào)文;
6、發(fā)送響應(yīng)——向客戶(hù)端發(fā)送生成的響應(yīng)報(bào)文;
7、記錄日志——當(dāng)已經(jīng)完成的HTTP事務(wù)記錄進(jìn)日志文件;