http協(xié)議簡(jiǎn)介

簡(jiǎn)介

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫膳算。它是一個(gè)應(yīng)用層且無(wú)狀態(tài)的協(xié)議,由請(qǐng)求和響應(yīng)構(gòu)成皮胡,是標(biāo)準(zhǔn)的客戶端服務(wù)器(C/S)模型童太。

http位置圖

http協(xié)議基于tcp協(xié)議之上亩冬,有時(shí)也在tls或ssl協(xié)議層之上,變成https:

默認(rèn)端口:
http -> 80
https -> 443

https的實(shí)現(xiàn)原理

有兩種基本的加解密算法類型:

  1. 對(duì)稱加密:密鑰只有一個(gè)公条,加密解密為同一個(gè)密碼拇囊,且加解密速度快,典型的對(duì)稱加密算法有DES靶橱、AES等寥袭;
  2. 非對(duì)稱加密:密鑰成對(duì)出現(xiàn)(且根據(jù)公鑰無(wú)法推知私鑰,根據(jù)私鑰也無(wú)法推知公鑰)关霸,加密解密使用不同密鑰(公鑰加密需要私鑰解密传黄,私鑰加密需要公鑰解密),相對(duì)對(duì)稱加密速度較慢队寇,典型的非對(duì)稱加密算法有RSA膘掰、DSA等。
    下面看一下https的通信過(guò)程:

https通信的優(yōu)點(diǎn):

  1. 客戶端產(chǎn)生的密鑰只有客戶端和服務(wù)器端能得到佳遣;
  2. 加密的數(shù)據(jù)只有客戶端和服務(wù)器端才能得到明文识埋;
  3. 客戶端到服務(wù)端的通信是安全的凡伊。

請(qǐng)求-響應(yīng)模型

http協(xié)議永遠(yuǎn)都是客戶端發(fā)起請(qǐng)求,服務(wù)端回送響應(yīng):

工作流程

一次http操作窒舟,其工作原理可分為四步:

  1. 客戶端與服務(wù)端建立tcp連接系忙,這個(gè)過(guò)程會(huì)經(jīng)歷tcp的三次握手,簡(jiǎn)單敘述就是:
    一:SYN<seq(x=0)>惠豺,
    二:SYN<seq(y=0)>笨觅,ACK<x+1>,
    三:SYN<seq(x+1)>耕腾,ACK<y+1>见剩。
  2. 客戶端發(fā)送一個(gè)標(biāo)準(zhǔn)格式的http請(qǐng)求。
  3. 服務(wù)端給予相應(yīng)的http響應(yīng)信息扫俺。
  4. 斷開(kāi)連接苍苞。

請(qǐng)求/響應(yīng)頭域

頭域 = 域名 + 冒號(hào) + 域值 (三部分組成),其中狼纬,域名無(wú)大小寫之分羹呵,頭域可以有多個(gè)。除了常用標(biāo)準(zhǔn)的頭域疗琉,也可以自定義自己的頭域冈欢。

比如,請(qǐng)求頭格式:

Host: www.baidu.com\r\n
Cookie: k=v\r\n

響應(yīng)頭格式也一樣:

Content-Type: image/gif\r\n
Set-Cookie: k=v\r\n

http請(qǐng)求格式

http方法 [空格] 請(qǐng)求url [空格] http版本號(hào) [回車換行]
頭域
[回車換行]
實(shí)體內(nèi)容

舉例:

GET /hello.htm HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

hello world

http響應(yīng)格式

http版本號(hào) [空格] 狀態(tài)碼 [空格] 原因 [回車換行]
頭域
[回車換行]
實(shí)體內(nèi)容

舉例:

HTTP/1.1 400 bad request
Server: Apache-Coyote/1.1

hello world

http狀態(tài)碼

狀態(tài)代碼有三位數(shù)字組成盈简,第一個(gè)數(shù)字定義了響應(yīng)的類別凑耻,且有五種可能取值:

  1. 1xx:指示信息--表示請(qǐng)求已接收,繼續(xù)處理
    100——客戶必須繼續(xù)發(fā)出請(qǐng)求
    101——客戶要求服務(wù)器根據(jù)請(qǐng)求轉(zhuǎn)換HTTP協(xié)議版本

  2. 2xx:成功--表示請(qǐng)求已被成功接收柠贤、理解香浩、接受
    200——交易成功
    201——提示知道新文件的URL
    202——接受和處理、但處理未完成
    203——返回信息不確定或不完整
    204——請(qǐng)求收到臼勉,但返回信息為空
    205——服務(wù)器完成了請(qǐng)求邻吭,用戶代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過(guò)的文件
    206——服務(wù)器已經(jīng)完成了部分用戶的GET請(qǐng)求

  3. 3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
    300——請(qǐng)求的資源可在多處得到
    301——?jiǎng)h除請(qǐng)求數(shù)據(jù)
    302——在其他地址發(fā)現(xiàn)了請(qǐng)求數(shù)據(jù)
    303——建議客戶訪問(wèn)其他URL或訪問(wèn)方式
    304——客戶端已經(jīng)執(zhí)行了GET,但文件未變化
    305——請(qǐng)求的資源必須從服務(wù)器指定的地址得到
    306——前一版本HTTP中使用的代碼宴霸,現(xiàn)行版本中不再使用
    307——申明請(qǐng)求的資源臨時(shí)性刪除

  4. 4xx:客戶端錯(cuò)誤--請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)
    400——錯(cuò)誤請(qǐng)求囱晴,如語(yǔ)法錯(cuò)誤
    401——未授權(quán)
    HTTP 401.1 - 未授權(quán):登錄失敗
      HTTP 401.2 - 未授權(quán):服務(wù)器配置問(wèn)題導(dǎo)致登錄失敗
      HTTP 401.3 - ACL 禁止訪問(wèn)資源
      HTTP 401.4 - 未授權(quán):授權(quán)被篩選器拒絕
    HTTP 401.5 - 未授權(quán):ISAPI 或 CGI 授權(quán)失敗
    402——保留有效ChargeTo頭響應(yīng)
    403——禁止訪問(wèn)
    HTTP 403.1 禁止訪問(wèn):禁止可執(zhí)行訪問(wèn)
      HTTP 403.2 - 禁止訪問(wèn):禁止讀訪問(wèn)
      HTTP 403.3 - 禁止訪問(wèn):禁止寫訪問(wèn)
      HTTP 403.4 - 禁止訪問(wèn):要求 SSL
      HTTP 403.5 - 禁止訪問(wèn):要求 SSL 128
      HTTP 403.6 - 禁止訪問(wèn):IP 地址被拒絕
      HTTP 403.7 - 禁止訪問(wèn):要求客戶證書
      HTTP 403.8 - 禁止訪問(wèn):禁止站點(diǎn)訪問(wèn)
      HTTP 403.9 - 禁止訪問(wèn):連接的用戶過(guò)多
      HTTP 403.10 - 禁止訪問(wèn):配置無(wú)效
      HTTP 403.11 - 禁止訪問(wèn):密碼更改
      HTTP 403.12 - 禁止訪問(wèn):映射器拒絕訪問(wèn)
      HTTP 403.13 - 禁止訪問(wèn):客戶證書已被吊銷
      HTTP 403.15 - 禁止訪問(wèn):客戶訪問(wèn)許可過(guò)多
      HTTP 403.16 - 禁止訪問(wèn):客戶證書不可信或者無(wú)效
    HTTP 403.17 - 禁止訪問(wèn):客戶證書已經(jīng)到期或者尚未生效
    404——沒(méi)有發(fā)現(xiàn)文件、查詢或URl
    405——用戶在Request-Line字段定義的方法不允許
    406——根據(jù)用戶發(fā)送的Accept拖瓢谢,請(qǐng)求資源不可訪問(wèn)
    407——類似401畸写,用戶必須首先在代理服務(wù)器上得到授權(quán)
    408——客戶端沒(méi)有在用戶指定的時(shí)間內(nèi)完成請(qǐng)求
    409——對(duì)當(dāng)前資源狀態(tài),請(qǐng)求不能完成
    410——服務(wù)器上不再有此資源且無(wú)進(jìn)一步的參考地址
    411——服務(wù)器拒絕用戶定義的Content-Length屬性請(qǐng)求
    412——一個(gè)或多個(gè)請(qǐng)求頭字段在當(dāng)前請(qǐng)求中錯(cuò)誤
    413——請(qǐng)求的資源大于服務(wù)器允許的大小
    414——請(qǐng)求的資源URL長(zhǎng)于服務(wù)器允許的長(zhǎng)度
    415——請(qǐng)求資源不支持請(qǐng)求項(xiàng)目格式
    416——請(qǐng)求中包含Range請(qǐng)求頭字段恩闻,在當(dāng)前請(qǐng)求資源范圍內(nèi)沒(méi)有range指示值艺糜,請(qǐng)求也不包含If-Range請(qǐng)求頭字段
    417——服務(wù)器不滿足請(qǐng)求Expect頭字段指定的期望值,如果是代理服務(wù)器,可能是下一級(jí)服務(wù)器不能滿足請(qǐng)求長(zhǎng)破停。

  5. 5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
    HTTP 500 - 內(nèi)部服務(wù)器錯(cuò)誤
      HTTP 500.100 - 內(nèi)部服務(wù)器錯(cuò)誤 - ASP 錯(cuò)誤
      HTTP 500-11 服務(wù)器關(guān)閉
      HTTP 500-12 應(yīng)用程序重新啟動(dòng)
      HTTP 500-13 - 服務(wù)器太忙
      HTTP 500-14 - 應(yīng)用程序無(wú)效
      HTTP 500-15 - 不允許請(qǐng)求 global.asa
      Error 501 - 未實(shí)現(xiàn)
    HTTP 502 - 網(wǎng)關(guān)錯(cuò)誤

斷點(diǎn)續(xù)傳和多線程下載的實(shí)現(xiàn)原理

HTTP協(xié)議的GET方法翅楼,支持只請(qǐng)求某個(gè)資源的某一部分;
206 Partial Content 部分內(nèi)容響應(yīng)真慢;
Range 請(qǐng)求的資源范圍毅臊;
Content-Range 響應(yīng)的資源范圍;
在連接斷開(kāi)重連時(shí)黑界,客戶端只請(qǐng)求該資源未下載的部分管嬉,而不是重新請(qǐng)求整個(gè)資源,來(lái)實(shí)現(xiàn)斷點(diǎn)續(xù)傳朗鸠。
分塊請(qǐng)求資源實(shí)例:
eg1:Range: bytes=306302- :請(qǐng)求這個(gè)資源從306302個(gè)字節(jié)到末尾的部分蚯撩;
eg2:
Content-Range: bytes 306302-604047/604048
:響應(yīng)中指示攜帶的是該資源的第306302-604047的字節(jié),該資源共604048個(gè)字節(jié)烛占;
客戶端通過(guò)并發(fā)的請(qǐng)求相同資源的不同片段胎挎,來(lái)實(shí)現(xiàn)對(duì)某個(gè)資源的并發(fā)分塊下載。從而達(dá)到快速下載的目的忆家。目前流行的FlashGet和迅雷基本都是這個(gè)原理犹菇。

多線程下載的原理:

  1. 下載工具開(kāi)啟多個(gè)發(fā)出HTTP請(qǐng)求的線程;
  2. 每個(gè)http請(qǐng)求只請(qǐng)求資源文件的一部分:Content-Range: bytes 20000-40000/47000芽卿;
  3. 合并每個(gè)線程下載的文件揭芍。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卸例,隨后出現(xiàn)的幾起案子称杨,更是在濱河造成了極大的恐慌,老刑警劉巖币厕,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件列另,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旦装,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門摊滔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阴绢,“玉大人,你說(shuō)我怎么就攤上這事艰躺∩胂” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵腺兴,是天一觀的道長(zhǎng)左电。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么篓足? 我笑而不...
    開(kāi)封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任段誊,我火速辦了婚禮,結(jié)果婚禮上栈拖,老公的妹妹穿的比我還像新娘连舍。我一直安慰自己,他們只是感情好涩哟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布索赏。 她就那樣靜靜地躺著,像睡著了一般贴彼。 火紅的嫁衣襯著肌膚如雪潜腻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天器仗,我揣著相機(jī)與錄音砾赔,去河邊找鬼。 笑死青灼,一個(gè)胖子當(dāng)著我的面吹牛暴心,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杂拨,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼专普,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弹沽?” 一聲冷哼從身側(cè)響起檀夹,我...
    開(kāi)封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎策橘,沒(méi)想到半個(gè)月后炸渡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丽已,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年蚌堵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沛婴。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吼畏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘁灯,到底是詐尸還是另有隱情泻蚊,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布丑婿,位于F島的核電站性雄,受9級(jí)特大地震影響没卸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秒旋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一约计、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滩褥,春花似錦病蛉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至酒甸,卻和暖如春魄健,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背插勤。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工沽瘦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人农尖。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓析恋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盛卡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子助隧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • 2系列200 OK請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回滑沧。201 Created請(qǐng)求已經(jīng)被實(shí)現(xiàn)并村,而且...
    Y像夢(mèng)一樣自由閱讀 3,580評(píng)論 1 5
  • 簡(jiǎn)介 超文本傳輸協(xié)議,屬于應(yīng)用層滓技,由請(qǐng)求和響應(yīng)構(gòu)成哩牍,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型。HTTP通常承載與TCP協(xié)議之上...
    明明就_c565閱讀 318評(píng)論 0 1
  • 深入淺出HTTP協(xié)議(WEB開(kāi)發(fā)和面試必備) 1.基礎(chǔ)概念篇 a.簡(jiǎn)介 HTTP是Hyper Text Trans...
    半世韶華憶闌珊閱讀 1,222評(píng)論 0 7
  • 摘要 本文轉(zhuǎn)自《go web編程》一書,覺(jué)得說(shuō)的比較好洗显,特轉(zhuǎn)過(guò)來(lái)收藏外潜。 原文地址:web的工作方式,http協(xié)議簡(jiǎn)...
    yorickshan閱讀 544評(píng)論 0 0
  • 從第一季追到第二季挠唆,每每聽(tīng)到熟悉的片段和驚喜的配音時(shí),都會(huì)很雀躍嘱吗,而在這個(gè)節(jié)目里玄组,我似乎也收獲了解了不少經(jīng)典劇目滔驾,...
    小兜小兜兒cinema閱讀 253評(píng)論 0 1