圖解HTTP

作者:【日】上野 宣
譯者:于均良
閱讀時(shí)間:2016-01-07~2016-01-17

1、了解Web及網(wǎng)絡(luò)基礎(chǔ)

  • HTTP通常被譯成超文本傳輸協(xié)議浆洗,但它實(shí)際上是應(yīng)用層的協(xié)議而不是傳輸層的協(xié)議
    參考:OSI七層與TCP/IP五層網(wǎng)絡(luò)架構(gòu)詳解
  • 使用ARP協(xié)議憑借MAC地址進(jìn)行通信。
    ARP協(xié)議(Address Resolution Protocol)洛口,地址解析協(xié)議买优,可以根據(jù)IP地址反查出對應(yīng)的MAC地址杀赢。

2脂崔、簡單的HTTP協(xié)議

  • HTTP是無狀態(tài)協(xié)議砌左,即協(xié)議對于發(fā)送過的請求或響應(yīng)都不做持久化處理汇歹。但為了實(shí)現(xiàn)期望的保持狀態(tài)功能产弹,于是引入了Cookie技術(shù)。
  • HTTP中可使用的方法:
    (1)GET:獲取資源
    (2)POST:傳輸實(shí)體
    (3)PUT:傳輸文件。PUT方法自身不帶驗(yàn)證機(jī)制霎烙,任何人都可以上傳文件吼过,存在安全性問題盗忱,因此一般的Web網(wǎng)站不使用該方法趟佃。若配合Web應(yīng)用程序的驗(yàn)證機(jī)制或架構(gòu)設(shè)計(jì)采用REST(表征狀態(tài)轉(zhuǎn)移)標(biāo)準(zhǔn)的同類Web網(wǎng)站,就可能會(huì)開放使用PUT方法序矩。
    (4)HEAD:獲得報(bào)文首部
    (5)DELETE:刪除文件。特點(diǎn)同PUT方法租幕。
    (6)OPTIONS:詢問支持的方法劲绪。服務(wù)器不一定支持所有HTTP協(xié)議的方法,所以可以通過OPTIONS請求查看服務(wù)器支持的HTTP方法有哪些祷安。
    (7)TRACE:追蹤路徑凉唐。用來確認(rèn)連接過程中發(fā)生的一系列操作台囱,但該方法易引起XST(跨站追蹤)攻擊,通常是不會(huì)用到的强品。
    (8)CONNECT:要求用隧道協(xié)議連接代理。
    最常用的就是GET和POST啦,其實(shí)就連GET都很少用的晓淀。
    參考:
    淺談HTTP中Get與Post的區(qū)別
    不再以訛傳訛,GET和POST的真正區(qū)別
  • 持久連接
    持久連接旨在建立1次TCP連接后進(jìn)行多次請求和響應(yīng)的交互,減少了TCP連接的重復(fù)建立和斷開所造成的額外開銷,減輕了服務(wù)器端的負(fù)載。
  • 管線化
    持久化連接使得多數(shù)請求以管線化方式發(fā)送成為可能。這樣就能夠做到同時(shí)并行發(fā)送多個(gè)請求宦言,而不需要一個(gè)接一個(gè)地等待響應(yīng)了蜘澜。
  • 使用Cookie的狀態(tài)管理
    Cookie技術(shù)通過在請求和響應(yīng)報(bào)文中寫入Cookie信息來控制客戶端的狀態(tài)忿晕。Cookie會(huì)根據(jù)從服務(wù)器端發(fā)送的響應(yīng)報(bào)文內(nèi)的一個(gè)叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie谅河。當(dāng)下次客戶端再往該服務(wù)器發(fā)送請求時(shí)吐限,客戶端會(huì)自動(dòng)在請求報(bào)文中加入Cookie值后發(fā)送出去褂始。服務(wù)器端發(fā)現(xiàn)客戶端發(fā)送過來的Cookie后诸典,會(huì)去檢查究竟是從哪一個(gè)客戶端發(fā)來的連接請求,然后對比服務(wù)器上的記錄崎苗,最后得到之前的狀態(tài)信息狐粱。

3、HTTP報(bào)文的HTTP信息

  • 發(fā)送多種數(shù)據(jù)的多部分對象集合
    HTTP協(xié)議中發(fā)送的一份報(bào)文主體內(nèi)可含有多類型實(shí)體胆数。通常是在圖片或文本文件等上傳時(shí)使用肌蜻。
    在HTTP報(bào)文中使用多部分對象集合時(shí),需要在首部字段里加上Content-type必尼。
  • 內(nèi)容協(xié)商
    內(nèi)容協(xié)商以響應(yīng)資源的語言蒋搜、字符集、編碼方式等作為判斷的基準(zhǔn)判莉。
    內(nèi)容協(xié)商技術(shù)有一下三種類型:
    (1)服務(wù)器驅(qū)動(dòng)協(xié)商
    (2)客戶端驅(qū)動(dòng)協(xié)商
    (3)透明協(xié)商

4豆挽、返回結(jié)果的HTTP狀態(tài)碼

200 請求已正常處理
204 請求資源成功,但沒有資源可返回
206 部分資源的請求

301 資源的URI已更新券盅,你也更新下你的書簽引用吧
302 資源的URI已臨時(shí)定位到其他位置了帮哈,姑且算你已經(jīng)知道這個(gè)情況了
303 資源的URI已更新,你是否能臨時(shí)按新的URI訪問

當(dāng)301锰镀、302娘侍、303響應(yīng)狀態(tài)碼返回時(shí)咖刃,幾乎所有的瀏覽器都會(huì)把POST改成GET,并刪除請求報(bào)文的主體私蕾,之后請求會(huì)自動(dòng)再次發(fā)送僵缺。而301、302標(biāo)準(zhǔn)是禁止將POST方法改變成GET方法的踩叭,可實(shí)際使用時(shí)大家都會(huì)這么做磕潮。

304 資源已找到,但未符合條件請求......304雖然被劃分在3XX類別中容贝,但是和重定向沒有關(guān)系自脯。
307 臨時(shí)重定向,和302有著相同的含義斤富,307會(huì)遵照標(biāo)準(zhǔn)膏潮,不會(huì)從POST變成GET。

400 服務(wù)器無法理解這個(gè)請求
401 需要認(rèn)證的請求满力,且認(rèn)證失敗時(shí)焕参,返回該狀態(tài)碼
403 服務(wù)器拒絕該請求,可能是客戶端未獲得文件系統(tǒng)的訪問授權(quán)油额,也可能是訪問權(quán)限出現(xiàn)了某些問題叠纷。
404 服務(wù)器上沒有訪問的資源

500 服務(wù)器端在執(zhí)行請求時(shí)發(fā)生了錯(cuò)誤。
503 服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維修潦嘶,現(xiàn)在無法處理請求

5涩嚣、與HTTP協(xié)作的Web服務(wù)器

  • 代理
    代理分緩存代理和透明代理。緩存代理會(huì)預(yù)先將資源的副本(緩存)保存在代理服務(wù)器上掂僵,當(dāng)代理再次接收到對相同資源的請求時(shí)航厚,就可以不從源服務(wù)器那里獲取資源,而是將之前緩存的資源作為響應(yīng)返回锰蓬。
  • 網(wǎng)關(guān)
    利用網(wǎng)關(guān)可以由HTTP請求轉(zhuǎn)化為其他協(xié)議通信幔睬。
  • 隧道
    隧道的目的是確保客戶端能與服務(wù)器進(jìn)行安全的通信芹扭。

6麻顶、HTTP首部

  • 通用首部字段Cache-Control的no-cache指令和no-store指令:no-cache表示不要緩存過的資源,要源服務(wù)器的資源冯勉;no-store表示緩存服務(wù)器不能緩存請求或響應(yīng)的任何內(nèi)容澈蚌。
  • 通用首部字段Connection的作用:控制不再轉(zhuǎn)發(fā)給代理的首部字段摹芙;管理持久連接灼狰。HTTP/1.1之前的HTTP版本默認(rèn)都是非持久連接。所以浮禾,如果想在舊版本的HTTP協(xié)議上維持持久連接交胚,需指定Connection的值為keep-alive.

7份汗、確保Web安全的HTTPS

HTTP的缺點(diǎn):(1)通信使用明文(不加密),內(nèi)容可能會(huì)被竊聽蝴簇;(2)不驗(yàn)證通信方的身份杯活,因此有可能遭遇偽裝;(3)無法證明報(bào)文的完整性熬词,所以有可能已遭篡改

TCP/IP是可能被竊聽的網(wǎng)絡(luò)旁钧,可以通過加密處理來防止被竊聽,加密處理的方式有兩種:一互拾、通信的加密歪今;二、內(nèi)容的加密颜矿。HTTP協(xié)議本身沒有加密機(jī)制寄猩,但是可以通過和SSL(Secure Socket Layer安全套接層)或者TLS(Transport Layer Security 安全層傳輸協(xié)議)的組合使用,對通信進(jìn)行加密骑疆。與SSL組合使用的HTTP被稱為HTTPS或者HTTP over SSL田篇。
SSL是獨(dú)立于HTTP的協(xié)議,所以不光是HTTP箍铭,其他運(yùn)行在應(yīng)用層的SMTP和Telnet等協(xié)議均可配合SSL協(xié)議使用泊柬。可以說SSL是當(dāng)今世界上應(yīng)用最為廣泛的網(wǎng)絡(luò)安全技術(shù)坡疼。
HTTPS采用混合加密機(jī)制:①用公開秘鑰加密方式安全的交換在稍后的共享秘鑰中藥使用的秘鑰彬呻;②確保交換的秘鑰是安全的前提下,使用共享秘鑰加密方式進(jìn)行通信柄瑰。
證書的作用有二:一是用來證明通信一方的服務(wù)器是否規(guī)范闸氮;二是用來確認(rèn)對方服務(wù)器背后的企業(yè)是否真實(shí)存在。EV SSL證書是基于國際標(biāo)準(zhǔn)的認(rèn)證知道方針頒布的證書教沾。持有EV SSL證書的Web網(wǎng)站的瀏覽器地址欄處的背景色是綠色的蒲跨。

8、確認(rèn)訪問用戶身份的認(rèn)證

  • BASIC認(rèn)證
  • DIGEST認(rèn)證
  • SSL客戶端認(rèn)證
  • 基于表單認(rèn)證

9授翻、基于HTTP的功能追加協(xié)議

Ajax的解決方法:Ajax(異步JavaScript與XML)是一種有效利用JavaScript和DOM的操作或悲,以達(dá)到局部Web頁面替換加載的異步通信手段。Ajax的核心技術(shù)是名為XMLHttpRequest的API堪唐。
Comet的解決方法:通常巡语,服務(wù)器端接收到請求,處理完畢后立即返回響應(yīng)淮菠,但為了實(shí)現(xiàn)推送功能男公,Comet會(huì)先將響應(yīng)置于掛起狀態(tài),服務(wù)器端一旦有更新合陵,就立即反饋給客戶端枢赔。
Ajax和Comet等提高易用性的技術(shù)一定程度上使HTTP得到了改善澄阳。但HTTP協(xié)議本身的限制也令人束手無策,為了進(jìn)行根本性的改善踏拜,需要有一些協(xié)議層面上的改動(dòng)碎赢,于是出現(xiàn)了SPDY

  • 消除HTTP瓶頸的SPDY
    SPDY以會(huì)話層的形式加入,介于TCP(SSL)和HTTP之間速梗。使用SPDY之后肮塞,HTTP協(xié)議額外獲得如下功能:
    多路復(fù)用流:單一的TCP連接,可以無限處理多個(gè)HTTP請求姻锁。
    賦予請求優(yōu)先級:這樣主要是為了在發(fā)送多個(gè)請求時(shí)峦嗤,解決因帶寬低而導(dǎo)致響應(yīng)變慢的問題。
    壓縮HTTP首部:這樣一來屋摔,通信時(shí)的流量就變少了烁设。
    推送功能:服務(wù)器可直接發(fā)送請求而不必等待客戶端的請求。
    服務(wù)器提示功能:可以避免發(fā)送不必要的請求钓试。
    SPDY基本上只是將單個(gè)域名的通信多路復(fù)用装黑,所以當(dāng)一個(gè)Web網(wǎng)站上使用了多個(gè)域名下的資源嗦随,改善效果就會(huì)受到限制砂碉。
  • 使用瀏覽器進(jìn)行全雙工通信的WebSocket

10、構(gòu)建Web內(nèi)容的技術(shù)

CGI:通用網(wǎng)關(guān)接口漓踢,指Web服務(wù)器在接收到客戶端發(fā)送過來的請求后轉(zhuǎn)發(fā)給程序的一組機(jī)制挽鞠。

11疚颊、Web的攻擊技術(shù)

  • 以服務(wù)器為目標(biāo)的主動(dòng)攻擊
    主動(dòng)攻擊模式里具有代表性的攻擊是SQL注入和OS命令注入
    +以服務(wù)器為目標(biāo)的被動(dòng)攻擊
    被動(dòng)攻擊是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式。被動(dòng)攻擊模式中具有代表性的攻擊是跨站腳本攻擊和跨站點(diǎn)請求偽造信认。
  • HTTP首部注入攻擊
  • HTTP響應(yīng)截?cái)喙?/li>
  • 郵件首部注入攻擊
  • 目錄遍歷攻擊(路徑遍歷攻擊)
  • DoS攻擊:集中利用訪問請求造成資源過載材义,資源用盡時(shí),實(shí)際上服務(wù)也就呈停止?fàn)顟B(tài)嫁赏;通過攻擊安全漏洞使服務(wù)停止
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末其掂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子潦蝇,更是在濱河造成了極大的恐慌款熬,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攘乒,死亡現(xiàn)場離奇詭異贤牛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)则酝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門殉簸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事喂链。” “怎么了妥泉?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵椭微,是天一觀的道長。 經(jīng)常有香客問我盲链,道長蝇率,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任刽沾,我火速辦了婚禮本慕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侧漓。我一直安慰自己锅尘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布布蔗。 她就那樣靜靜地躺著藤违,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纵揍。 梳的紋絲不亂的頭發(fā)上顿乒,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機(jī)與錄音泽谨,去河邊找鬼璧榄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吧雹,可吹牛的內(nèi)容都是我干的骨杂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼雄卷,長吁一口氣:“原來是場噩夢啊……” “哼腊脱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起龙亲,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陕凹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鳄炉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杜耙,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年拂盯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佑女。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖团驱,靈堂內(nèi)的尸體忽然破棺而出摸吠,到底是詐尸還是另有隱情,我是刑警寧澤嚎花,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布寸痢,位于F島的核電站,受9級特大地震影響紊选,放射性物質(zhì)發(fā)生泄漏啼止。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一兵罢、第九天 我趴在偏房一處隱蔽的房頂上張望献烦。 院中可真熱鬧,春花似錦卖词、人聲如沸巩那。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拢操。三九已至,卻和暖如春舶替,著一層夾襖步出監(jiān)牢的瞬間令境,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工顾瞪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舔庶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓陈醒,卻偏偏與公主長得像惕橙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子钉跷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

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

  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族弥鹦,HTTP屬于它內(nèi)部的一個(gè)子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,445評論 0 20
  • 前面兩篇文章中關(guān)于 HTTP 相關(guān)知識基本上介紹的差不多了爷辙,這篇文章是對 HTTP 協(xié)議的補(bǔ)充彬坏,主要介紹以下三點(diǎn)內(nèi)...
    lijiankun24閱讀 1,312評論 2 3
  • 4天讀完 一、了解web及網(wǎng)絡(luò)基礎(chǔ) 1.1 三項(xiàng)www構(gòu)建技術(shù): HTML:超文本標(biāo)記語言 HTTP:文本傳輸協(xié)議...
    15d843cd48a8閱讀 788評論 1 4
  • 本文是《圖解HTTP》讀書筆記的第二篇膝晾,主要包括此書的第六章內(nèi)容栓始,因?yàn)榈诹碌膬?nèi)容較多,而且比較重要血当,所以單獨(dú)寫為...
    lijiankun24閱讀 1,368評論 0 6
  • 網(wǎng)絡(luò)基礎(chǔ)知識 URL和URI URI(Uniform Resource Idenifier)統(tǒng)一資源標(biāo)識符幻赚。即由某...
    d9fc24a0c9a9閱讀 1,130評論 0 6