HTTP協(xié)議

HTTP(HyperText Transfer Protocol)是一套計(jì)算機(jī)通過網(wǎng)絡(luò)進(jìn)行通信的規(guī)則纵刘。計(jì)算機(jī)專家設(shè)計(jì)出HTTP,使HTTP客戶(如Web瀏覽器)能夠從HTTP服務(wù)器(Web服務(wù)器)請(qǐng)求信息和服務(wù)犬第,HTTP目前協(xié)議的版本是1.1.HTTP是一種無狀態(tài)的協(xié)議锦积,無狀態(tài)是指Web瀏覽器和Web服務(wù)器之間不需要建立持久的連接,這意味著當(dāng)一個(gè)客戶端向服務(wù)器端發(fā)出請(qǐng)求歉嗓,然后Web服務(wù)器返回響應(yīng)(response)丰介,連接就被關(guān)閉了,在服務(wù)器端不保留連接的有關(guān)信息.HTTP遵循請(qǐng)求(Request)/應(yīng)答(Response)模型鉴分。Web瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求哮幢,Web服務(wù)器處理請(qǐng)求并返回適當(dāng)?shù)膽?yīng)答。所有HTTP連接都被構(gòu)造成一套請(qǐng)求和應(yīng)答志珍。
HTTP使用內(nèi)容類型橙垢,是指Web服務(wù)器向Web瀏覽器返回的文件都有與之相關(guān)的類型。所有這些類型在MIME Internet郵件協(xié)議上模型化伦糯,即Web服務(wù)器告訴Web瀏覽器該文件所具有的種類柜某,是HTML文檔、GIF格式圖像舔株、聲音文件還是獨(dú)立的應(yīng)用程序莺琳。大多數(shù)Web瀏覽器都擁有一系列的可配置的輔助應(yīng)用程序,它們告訴瀏覽器應(yīng)該如何處理Web服務(wù)器發(fā)送過來的各種內(nèi)容類型载慈。

HTTP通信機(jī)制是在一次完整的HTTP通信過程中惭等,Web瀏覽器與Web服務(wù)器之間將完成下列7個(gè)步驟:
(1) 建立TCP連接
在HTTP工作開始之前,Web瀏覽器首先要通過網(wǎng)絡(luò)與Web服務(wù)器建立連接办铡,該連接是通過TCP來完成的辞做,該協(xié)議與IP協(xié)議共同構(gòu)建Internet琳要,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡(luò)秤茅。HTTP是比TCP更高層次的應(yīng)用層協(xié)議稚补,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能框喳,才能進(jìn)行更層協(xié)議的連接课幕,因此,首先要建立TCP連接五垮,一般TCP連接的端口號(hào)是80
(2) Web瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求命令
一旦建立了TCP連接乍惊,Web瀏覽器就會(huì)向Web服務(wù)器發(fā)送請(qǐng)求命令
例如:GET/sample/hello.jsp HTTP/1.1
(3) Web瀏覽器發(fā)送請(qǐng)求頭信息
瀏覽器發(fā)送其請(qǐng)求命令之后,還要以頭信息的形式向Web服務(wù)器發(fā)送一些別的信息放仗,之后瀏覽器發(fā)送了一空白行來通知服務(wù)器润绎,它已經(jīng)結(jié)束了該頭信息的發(fā)送。
(4) Web服務(wù)器應(yīng)答
客戶機(jī)向服務(wù)器發(fā)出請(qǐng)求后诞挨,服務(wù)器會(huì)客戶機(jī)回送應(yīng)答莉撇,
HTTP/1.1 200 OK
應(yīng)答的第一部分是協(xié)議的版本號(hào)和應(yīng)答狀態(tài)碼
(5) Web服務(wù)器發(fā)送應(yīng)答頭信息
正如客戶端會(huì)隨同請(qǐng)求發(fā)送關(guān)于自身的信息一樣,服務(wù)器也會(huì)隨同應(yīng)答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請(qǐng)求的文檔惶傻。
(6) Web服務(wù)器向?yàn)g覽器發(fā)送數(shù)據(jù)
Web服務(wù)器向?yàn)g覽器發(fā)送頭信息后棍郎,它會(huì)發(fā)送一個(gè)空白行來表示頭信息的發(fā)送到此為結(jié)束,接著达罗,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)
(7) Web服務(wù)器關(guān)閉TCP連接
一般情況下坝撑,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接粮揉,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài)巡李,于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請(qǐng)求扶认。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間侨拦,還節(jié)約了網(wǎng)絡(luò)帶寬。

HTTP請(qǐng)求格式

當(dāng)客戶端向服務(wù)器發(fā)出請(qǐng)求時(shí)辐宾,它向服務(wù)器傳遞了一個(gè)數(shù)據(jù)塊狱从,也就是請(qǐng)求信息,HTTP請(qǐng)求信息由3部分組成:

  1. 請(qǐng)求方法URI協(xié)議/版本
  • 請(qǐng)求方法URI協(xié)議/版本
    請(qǐng)求的第一行是“方法URL議/版本”:GET/sample.jsp HTTP/1.1
    以上代碼中“GET”代表請(qǐng)求方法叠纹,“/sample.jsp”表示URI季研,“HTTP/1.1代表協(xié)議和協(xié)議的版本。
    根據(jù)HTTP標(biāo)準(zhǔn)誉察,HTTP請(qǐng)求可以使用多種請(qǐng)求方法与涡。例如:HTTP1.1支持7種請(qǐng)求方法:GET、POST、HEAD驼卖、OPTIONS氨肌、PUT、DELETE和TARCE酌畜。在Internet應(yīng)用中怎囚,最常用的方法是GET和POST。
  1. 請(qǐng)求頭(Request Header)
  • 請(qǐng)求頭包含許多有關(guān)的客戶端環(huán)境和請(qǐng)求正文的有用信息桥胞。例如恳守,請(qǐng)求頭可以聲明瀏覽器所用的語言,請(qǐng)求正文的長(zhǎng)度等埠戳。
    Accept:image/gif.image/jpeg./
    Accept-Language:zh-cn
    Connection:Keep-Alive
    Host:localhost
    User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
    Accept-Encoding:gzip,deflate.
  1. 請(qǐng)求正文
  • 請(qǐng)求頭和請(qǐng)求正文之間是一個(gè)空行井誉,這個(gè)行非常重要,它表示請(qǐng)求頭已經(jīng)結(jié)束整胃,接下來的是請(qǐng)求正文。請(qǐng)求正文中可以包含客戶提交的查詢字符串信息:
    username=jinqiao&password=1234
  1. 下面是一個(gè)HTTP請(qǐng)求的例子:
    GET/sample.jspHTTP/1.1
    Accept:image/gif.image/jpeg,/
    Accept-Language:zh-cn
    Connection:Keep-Alive
    Host:localhost
    User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
    Accept-Encoding:gzip,deflate

username=jinqiao&password=1234

HTTP應(yīng)答

  • HTTP應(yīng)答與HTTP請(qǐng)求相似喳钟,HTTP響應(yīng)也由3個(gè)部分構(gòu)成屁使,分別是:
  1. 協(xié)議狀態(tài)版本代碼描述
  • 協(xié)議狀態(tài)代碼描述HTTP響應(yīng)的第一行類似于HTTP請(qǐng)求的第一行,它表示通信所用的協(xié)議是HTTP1.1服務(wù)器已經(jīng)成功的處理了客戶端發(fā)出的請(qǐng)求(200表示成功)
  1. 響應(yīng)頭(Response Header)
  • 響應(yīng)頭也和請(qǐng)求頭一樣包含許多有用的信息奔则,例如服務(wù)器類型蛮寂、日期時(shí)間、內(nèi)容類型和長(zhǎng)度等:
       Server:Apache Tomcat/5.0.12
    Date:Mon,6Oct2003 13:13:33 GMT
    Content-Type:text/html
    Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
    Content-Length:112
  1. 響應(yīng)正文
  • 響應(yīng)頭和正文之間也必須用空行分隔易茬。
  • HTTP應(yīng)答碼
       HTTP應(yīng)答碼也稱為狀態(tài)碼酬蹋,它反映了Web服務(wù)器處理HTTP請(qǐng)求狀態(tài)。HTTP應(yīng)答碼由3位數(shù)字構(gòu)成抽莱,其中首位數(shù)字定義了應(yīng)答碼的類型:
       1XX-信息類(Information),表示收到Web瀏覽器請(qǐng)求范抓,正在進(jìn)一步的處理中
       2XX-成功類(Successful),表示用戶請(qǐng)求被正確接收,理解和處理例如:200 OK
    3XX-重定向類(Redirection),表示請(qǐng)求沒有成功食铐,客戶必須采取進(jìn)一步的動(dòng)作匕垫。
    4XX-客戶端錯(cuò)誤(Client Error),表示客戶端提交的請(qǐng)求有錯(cuò)誤 例如:404 NOT
    Found虐呻,意味著請(qǐng)求中所引用的文檔不存在象泵。
    5XX-服務(wù)器錯(cuò)誤(Server Error)表示服務(wù)器不能完成對(duì)請(qǐng)求的處理:如 500
  1. 下面是一個(gè)HTTP響應(yīng)的例子:
    HTTP/1.1 200 OK
    Server:Apache Tomcat/5.0.12
    Date:Mon,6Oct2003 13:23:42 GMT
    Content-Length:112

安全連接

Web應(yīng)用最常見的用途之一是電子商務(wù),可以利用Web服務(wù)器端程序使人們能夠網(wǎng)絡(luò)購(gòu)物斟叼,需要指出一點(diǎn)是偶惠,缺省情況下,通過Internet發(fā)送信息是不安全的朗涩,如果某人碰巧截獲了你發(fā)給朋友的一則消息忽孽,他就能打開它,假想在里面有你的信用卡號(hào)碼,這會(huì)有多么糟糕扒腕,幸運(yùn)的是绢淀,很多Web服務(wù)器以及Web瀏覽器都有創(chuàng)立安全連接的能力,這樣它們就可以安全的通信了瘾腰。
通過Internet提供安全連接最常見的標(biāo)準(zhǔn)是安全套接層(Secure Sockets layer,SSl)協(xié)議皆的。SSL協(xié)議是一個(gè)應(yīng)用層協(xié)議(和HTTP一樣),用于安全方式在Web上交換數(shù)據(jù)蹋盆,SSL使用公開密鑰編碼系統(tǒng)费薄。從本質(zhì)講,這意味著業(yè)務(wù)中每一方都擁有一個(gè)公開的和一個(gè)私有的密鑰栖雾。當(dāng)一方使用另一方公開密鑰進(jìn)行編碼時(shí)楞抡,只有擁有匹配密鑰的人才能對(duì)其解碼。簡(jiǎn)單來講析藕,公開密鑰編碼提供了一種用于在兩方之間交換數(shù)據(jù)的安全方法召廷,SSL連接建立之后,客戶和服務(wù)器都交換公開密鑰账胧,并在進(jìn)行業(yè)務(wù)聯(lián)系之前進(jìn)行驗(yàn)證竞慢,一旦雙方的密鑰都通過驗(yàn)證,就可以安全地交換數(shù)據(jù)治泥。

GET方法

GET方法是默認(rèn)的HTTP請(qǐng)求方法筹煮,我們?nèi)粘S肎ET方法來提交表單數(shù)據(jù),然而用GET方法提交的表單數(shù)據(jù)只經(jīng)過了簡(jiǎn)單的編碼居夹,同時(shí)它將作為URL的一部分向Web服務(wù)器發(fā)送败潦,因此,如果使用GET方法來提交表單數(shù)據(jù)就存在著安全隱患上准脂。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
從上面的URL請(qǐng)求中劫扒,很容易就可以辯認(rèn)出表單提交的內(nèi)容。(意狠?之后的內(nèi)容)另外由于GET方法提交的數(shù)據(jù)是作為URL請(qǐng)求的一部分所以提交的數(shù)據(jù)量不能太大

POST方法

POST方法是GET方法的一個(gè)替代方法粟关,它主要是向Web服務(wù)器提交表單數(shù)據(jù),尤其是大批量的數(shù)據(jù)环戈。POST方法克服了GET方法的一些缺點(diǎn)闷板。通過POST方法提交表單數(shù)據(jù)時(shí),數(shù)據(jù)不是作為URL請(qǐng)求的一部分而是作為標(biāo)準(zhǔn)數(shù)據(jù)傳送給Web服務(wù)器院塞,這就克服了GET方法中的信息無法保密和數(shù)據(jù)量太小的缺點(diǎn)遮晚。因此,出于安全的考慮以及對(duì)用戶隱私的尊重拦止,通常表單提交時(shí)采用POST方法县遣。
  從編程的角度來講糜颠,如果用戶通過GET方法提交數(shù)據(jù),則數(shù)據(jù)存放在QUERY_STRING環(huán)境變量中萧求,而POST方法提交的數(shù)據(jù)則可以從標(biāo)準(zhǔn)輸入流中獲取其兴。

請(qǐng)求方式簡(jiǎn)介

GET通過請(qǐng)求URI得到資源
POST,用于添加新的內(nèi)容
PUT用于修改某個(gè)內(nèi)容
DELETE,刪除某個(gè)內(nèi)容
CONNECT,用于代理進(jìn)行傳輸,如使用SSL
OPTIONS詢問可以執(zhí)行哪些方法
PATCH,部分文檔更改
PROPFIND, (wedav)查看屬性
PROPPATCH, (wedav)設(shè)置屬性
MKCOL, (wedav)創(chuàng)建集合(文件夾)
COPY, (wedav)拷貝
MOVE, (wedav)移動(dòng)
LOCK, (wedav)加鎖
UNLOCK (wedav)解鎖
TRACE用于遠(yuǎn)程診斷服務(wù)器
HEAD類似于GET, 但是不返回body信息夸政,用于檢查對(duì)象是否存在元旬,以及得到對(duì)象的元數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市守问,隨后出現(xiàn)的幾起案子匀归,更是在濱河造成了極大的恐慌,老刑警劉巖耗帕,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穆端,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡仿便,警方通過查閱死者的電腦和手機(jī)体啰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來探越,“玉大人狡赐,你說我怎么就攤上這事∏蔗#” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵常柄,是天一觀的道長(zhǎng)鲤氢。 經(jīng)常有香客問我,道長(zhǎng)西潘,這世上最難降的妖魔是什么卷玉? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮喷市,結(jié)果婚禮上相种,老公的妹妹穿的比我還像新娘。我一直安慰自己品姓,他們只是感情好寝并,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腹备,像睡著了一般衬潦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上植酥,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天镀岛,我揣著相機(jī)與錄音弦牡,去河邊找鬼。 笑死漂羊,一個(gè)胖子當(dāng)著我的面吹牛驾锰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播走越,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼椭豫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了买喧?” 一聲冷哼從身側(cè)響起捻悯,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淤毛,沒想到半個(gè)月后今缚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡低淡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年姓言,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔗蹋。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡何荚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猪杭,到底是詐尸還是另有隱情餐塘,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布皂吮,位于F島的核電站戒傻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜂筹。R本人自食惡果不足惜需纳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艺挪。 院中可真熱鬧不翩,春花似錦、人聲如沸麻裳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掂器。三九已至亚皂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間国瓮,已是汗流浹背灭必。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工狞谱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人禁漓。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓跟衅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親播歼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伶跷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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

  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,356評(píng)論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)秘狞,內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,223評(píng)論 3 82
  • HTTP概述 超文本傳輸協(xié)議(HTTP叭莫,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最...
    曹淵說創(chuàng)業(yè)閱讀 3,853評(píng)論 2 61
  • 前言:最近發(fā)現(xiàn)自己在網(wǎng)絡(luò)相關(guān)這一塊基礎(chǔ)很是欠缺,所以準(zhǔn)備花時(shí)間了解一下烁试,本文主要是講http協(xié)議的一些基礎(chǔ)雇初,和一些...
    justCode_閱讀 2,094評(píng)論 0 23
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,674評(píng)論 2 20