HTTP協(xié)議學(xué)習(xí)總結(jié)

HTTP協(xié)議學(xué)習(xí)總結(jié)

友情提示,本文檔的圖床使用極簡(jiǎn)圖床進(jìn)行圖片存儲(chǔ),默認(rèn)存儲(chǔ)到七牛云空間


本文是對(duì)HTTP協(xié)議詳解的學(xué)習(xí)記錄貼,非原創(chuàng),向原作者致敬!!

正文

  • HTTP是超文本傳輸協(xié)議,并非某種技術(shù)

  • HTTP的網(wǎng)絡(luò)傳輸實(shí)現(xiàn)依靠的是TCP協(xié)議

  • MIME類型有上千種,是一種文本標(biāo)記,用對(duì)象類型/子類型表示:xml文檔 .xml text/xml

  • URL是全球唯一定位符,有兩種方式

    • URL

    組成方式:協(xié)議://ip地址:端口號(hào)(可省略)/資源標(biāo)識(shí)符?參數(shù)
    舉個(gè)栗子:https://portal.qiniu.com/bucket/weihao/index

    • URN

    常用來做下拉菜單,不常用


  • HTTP的請(qǐng)求方法 不光有 get和post兩種,具體分為以下:

    • HEAD 獲得服務(wù)器頭部 不含主體
    • GET 從服務(wù)器獲得文檔 不含主體
    • POST 向服務(wù)器提交數(shù)據(jù) 包含主體
    • PUT 請(qǐng)求存儲(chǔ)在服務(wù)器 包含主體
    • DELETE 從服務(wù)器刪除文檔 不包含主體
    • TRACE 從服務(wù)器獲得報(bào)文跟蹤 不包含主體
    • OPTIONS 決定服務(wù)器操作類型 不包含主體
  • HTTP的工作方式
    客戶端發(fā)送<font color='red' >request</font>請(qǐng)求到<font color='red' face='宋體'>服務(wù)端</font>,通報(bào)報(bào)文方式,服務(wù)器端返回結(jié)果(json格式或者h(yuǎn)tml標(biāo)簽)給客戶端瀏覽器,瀏覽器進(jìn)行解析后展示數(shù)據(jù)或者<font color='red'>頁面元素</font>

  • HTTP狀態(tài)碼 代表了服務(wù)器的返回結(jié)果的標(biāo)識(shí),常用的有以下幾個(gè):

    • 200 請(qǐng)求成功并返回
    • 302 請(qǐng)求被重定向 返回頭有l(wèi)ocation確定重定向地址
    • 304 上次請(qǐng)求被緩存,這次直接在緩存中獲取 很多<font color ='red'>靜態(tài)文件</font>會(huì)被緩存

    如果你不想使用緩存數(shù)據(jù),比如很多js或者css被修改了可以使用ctrl+F5進(jìn)行強(qiáng)制刷新瀏覽器

    • 400 提交的參數(shù)和服務(wù)器映射方法接受的參數(shù)不一致 (4開頭為客戶端錯(cuò)誤)
    • 403 服務(wù)器接收到了請(qǐng)求,但是拒絕提供服務(wù)
    • 404 頁面不存在
    • 500 服務(wù)器處理請(qǐng)求時(shí)內(nèi)部發(fā)生了錯(cuò)誤
    • 503 服務(wù)端暫時(shí) 不能正確處理,稍后可能會(huì)恢復(fù)(比如部署IIS,webconfig有問題的時(shí)候會(huì)報(bào))
  • HTTP報(bào)文(F12后的請(qǐng)求詳情頁)

    按照接收方和發(fā)送方可以分為:

    • 請(qǐng)求報(bào)文
    • 相應(yīng)報(bào)文
  • HTTP的報(bào)文組成

    • 請(qǐng)求行
    • 請(qǐng)求頭
    • 報(bào)文體


    其中1,2,3組成了請(qǐng)求行,既請(qǐng)求地址,請(qǐng)求方法,和網(wǎng)絡(luò)協(xié)議
    4是具體的請(qǐng)求頭,里面的內(nèi)容采用鍵值對(duì)的方式進(jìn)行表示


參數(shù)是報(bào)文體,用來攜帶請(qǐng)求參數(shù),也可以通過get方式的?后攜帶

  • 對(duì)于HTTP的get請(qǐng)求有個(gè)顯著的特點(diǎn)就是 body是空的

  • TCP/IP是HTTP的傳輸依賴.HTTP處于TCP/IP的應(yīng)用層范圍
    TCP/IP的層分類

    • 網(wǎng)絡(luò)接口層
    • 網(wǎng)絡(luò)層
    • 傳輸層
    • 應(yīng)用層

TCP的補(bǔ)充說明:HTTP位于TCP的上層,TCP其實(shí)也位于IP的上層.

  • HTTP協(xié)議發(fā)送報(bào)文前需要 建立TCP/IP連接,其中IP地址類似于小區(qū)地址,而端口號(hào)相當(dāng)于門牌號(hào),兩者確定唯一的網(wǎng)絡(luò)地址

  • HTTP代理是位于服務(wù)器和客戶端中間實(shí)體,作為中間人角色轉(zhuǎn)發(fā)HTTP請(qǐng)求

對(duì)代理服務(wù)器的補(bǔ)充: 目前HTTP支持兩種發(fā)送方式

方式一 服務(wù)端和客戶端直連
方式二 服務(wù)端和客戶端無法直接連接,需要通過代理服務(wù)器 連接,以突破網(wǎng)絡(luò)限制

  • 代理服務(wù)器的訪問不僅可以突破IP網(wǎng)絡(luò)限制,而且可以提高網(wǎng)速,原理是,當(dāng)大部分請(qǐng)求url相同時(shí),網(wǎng)絡(luò)代理服務(wù)器一般會(huì)做緩存處理
    下一次其他用戶訪問時(shí),緩存會(huì)大大提高訪問速度

  • 代理服務(wù)器也可以隱藏真實(shí)IP地址

  • HTTP請(qǐng)求時(shí)無狀態(tài)的.對(duì)于來自同一個(gè)客戶端的兩次相同請(qǐng)求,http服務(wù)器分辨不出,所以引入了<font color='red'>Cookie(緩存)</font>的概念

  • 一個(gè)請(qǐng)求無法返回呈現(xiàn)出的頁面,但請(qǐng)求返回的html中有其他引用,比如jpg,css,javascript等靜態(tài)文件時(shí),客戶端會(huì)再次發(fā)送請(qǐng)求


  • Request頭詳細(xì)信息:

    • <font color='red'size='4'>cache頭域</font>
      • If-Modified-Since

        客戶端第一次發(fā)送請(qǐng)求時(shí)會(huì)緩存頁面到本地文件,并記錄文件修改時(shí)間,第二次發(fā)送時(shí)會(huì)將該時(shí)間作為比對(duì)字符串和服務(wù)器返回的Last-Modified(最后修改時(shí)間)做比較
        如果時(shí)間相同,則使用本地緩存,如果時(shí)間不同,則替換本地文件并保存緩存

      • If-None-Match

        該參數(shù)在HTTP1.1協(xié)議上產(chǎn)生,是為了更精準(zhǔn)的細(xì)化確定緩存資源,If-Modified-Since因?yàn)椴捎玫臅r(shí)間戳,所以精度有限,只精確到秒,所以只適用于不經(jīng)常變化的靜態(tài)資源文件.  
        這個(gè)參數(shù)需要和response頭信息中的`Etag`配合驗(yàn)證,在第一次請(qǐng)求時(shí),服務(wù)器會(huì)設(shè)置Etag,之后用于二次請(qǐng)求時(shí)的驗(yàn)證依據(jù)  
        

        關(guān)于該參數(shù)的具體使用,請(qǐng)參考REST筆記(五):你應(yīng)該知道的HTTP頭------ETag

      • cache-control
        該參數(shù)是用來指定response頭的緩存機(jī)制

         ![](http://or316jtnw.bkt.clouddn.com//17-8-22/48059186.jpg)    
         常用的配置是:  
        
      • Cache-Control:Public
        可以被任何緩存所緩存()

      • Cache-Control:Private
        內(nèi)容只緩存到私有緩存中

      • Cache-Control:no-cache
        所有內(nèi)容都不會(huì)被緩存 (對(duì)于每次返回的數(shù)據(jù)不同的請(qǐng)求)

  • <font color='red'size='4'>Clint頭域(瀏覽器聲明部分)</font>

    • Accept
      客戶端發(fā)送請(qǐng)求時(shí),告訴服務(wù)端 接受什么樣的返回?cái)?shù)據(jù),*/*代表接受所有類型參數(shù),如果不做特別處理,一般瀏覽器的Accept接受*/*(比如AJAX特別指定參數(shù)類型)

    • Accept-Language
      瀏覽器聲明的自己可以接受的語言類型

    • Accept-Encoding
      瀏覽器聲明的可以接受的壓縮方式

    • User-Agent
      告訴服務(wù)器當(dāng)前客戶端的操作系統(tǒng)的版本號(hào),位數(shù)及瀏覽器的相關(guān)信息

  • <font color='red'size='4'>Cookie/Login 頭域</font>


    將cookie值發(fā)送給服務(wù)器,在header信息中屬于重要的級(jí)別

  • <font color='red'size='4'>Entity頭域</font>

    • Content-Type
      描述發(fā)送或者接受的實(shí)體類型

    • Content-Length
      描述發(fā)送或者接受的實(shí)體長度

  • <font color='red'size='4'>Miscellaneous 頭域</font>
    提供了上下文服務(wù)器地址,可以通過Referer參數(shù)查詢?cè)撴溄拥漠a(chǎn)生是通過何種路徑引導(dǎo)過來的(上個(gè)訪問的服務(wù)器地址)

  • <font color='red'size='4'>Transport 頭域</font>
    • Host
      發(fā)送請(qǐng)求時(shí)的必備參數(shù)之一, 指定了請(qǐng)求資源的internet地址和端口號(hào)(端口號(hào)可以省略)

    • Connection
      指定了獲取TCP/IP連接后的處理方式 分為以下兩種

    • Connection: keep-alive
      完成請(qǐng)求后,TCP/IP連接保持連接,當(dāng)有新的請(qǐng)求產(chǎn)生時(shí),依然使用該TCP/IP連接

    • Connection: close
      當(dāng)一個(gè)請(qǐng)求完成后,立馬關(guān)掉TCP/IP請(qǐng)求,當(dāng)有新的請(qǐng)求產(chǎn)生時(shí),會(huì)重新進(jìn)行TCP/IP連接


  • Response頭詳細(xì)信息:

    • <font color='red'size='4'>cache頭域</font>

      • Data
        生成消息的具體時(shí)間和日期

      • Expires
        緩存過期時(shí)間設(shè)置(多用于靜態(tài)資源)


    • <font color='red'size='4'>Cookie/Login頭域</font>

      • P3P
        作用: 用于跨域設(shè)置Cookie, 這樣可以解決iframe跨域訪問cookie的問題

        • Set-Cookie
          非常重要的header, 用于把cookie 發(fā)送到客戶端瀏覽器踊淳, 每一個(gè)寫入cookie都會(huì)生成一個(gè)Set-Cookie.
    • <font color='red'size='4'>Entity頭域</font>

      • ETag
        詳情參考 request頭中的If-None-Match
      • Last-Modified
        詳情參考 request頭中的'If-Modified-Since'
      • Content-Type
        描述了 服務(wù)器返回的實(shí)體類型
      • Content-Length
        描述了實(shí)體長度
      • Content-Encoding
        描述了服務(wù)端的壓縮方式
      • Content-Language
        描述了服務(wù)端返回的語言類型
    • <font color='red'size='4'>Miscellaneous 頭域</font>

      • Server:

        作用:指明HTTP服務(wù)器的軟件信息

        例如:Server: Microsoft-IIS/7.5 或者 Apache

      • X-AspNet-Version
        如果.net平臺(tái)開發(fā),會(huì)有這個(gè)選項(xiàng),說明了.net的版本號(hào)

      • X-Powered-By:
        說明了服務(wù)端采用的后臺(tái)編程語言類型 ,下圖中百度采用的是HPHP

  • <font color='red'size='4'>Transport頭域</font>
    本部分和request對(duì)應(yīng)的該部分內(nèi)容相同,請(qǐng)翻閱參考

  • <font color='red'size='4'>Location頭域</font>
    location用來描述304的具體重定向url地址


  • HTTP1.1的默認(rèn) TCP連接方式是保持TCP/IP連接,連接時(shí)間取決于發(fā)布服務(wù)器平臺(tái)(比如APACHE,IIS等的詳細(xì)設(shè)置) Connection:keep-active

隨筆

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末局服,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暴氏,更是在濱河造成了極大的恐慌祝蝠,老刑警劉巖音诈,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幻碱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡细溅,警方通過查閱死者的電腦和手機(jī)褥傍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喇聊,“玉大人恍风,你說我怎么就攤上這事∈睦椋” “怎么了朋贬?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窜骄。 經(jīng)常有香客問我锦募,道長,這世上最難降的妖魔是什么邻遏? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任御滩,我火速辦了婚禮,結(jié)果婚禮上党远,老公的妹妹穿的比我還像新娘削解。我一直安慰自己,他們只是感情好沟娱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布氛驮。 她就那樣靜靜地躺著,像睡著了一般济似。 火紅的嫁衣襯著肌膚如雪矫废。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天砰蠢,我揣著相機(jī)與錄音蓖扑,去河邊找鬼。 笑死台舱,一個(gè)胖子當(dāng)著我的面吹牛律杠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竞惋,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼柜去,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拆宛?” 一聲冷哼從身側(cè)響起嗓奢,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浑厚,沒想到半個(gè)月后股耽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體根盒,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年物蝙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了郑象。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茬末,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盖矫,到底是詐尸還是另有隱情丽惭,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布辈双,位于F島的核電站责掏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏湃望。R本人自食惡果不足惜换衬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望证芭。 院中可真熱鬧瞳浦,春花似錦、人聲如沸废士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽官硝。三九已至矗蕊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氢架,已是汗流浹背傻咖。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岖研,地道東北人卿操。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像孙援,于是被迫代替她去往敵國和親硬纤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 一赃磨、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,353評(píng)論 6 152
  • http協(xié)議有http0.9筝家,http1.0,http1.1和http2三個(gè)版本邻辉,但是現(xiàn)在瀏覽器使用的是htt...
    一現(xiàn)_閱讀 1,863評(píng)論 0 3
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)溪王,內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,223評(píng)論 3 82
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理腮鞍,服務(wù)發(fā)現(xiàn),斷路器莹菱,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 深入淺出HTTP協(xié)議(WEB開發(fā)和面試必備) 1.基礎(chǔ)概念篇 a.簡(jiǎn)介 HTTP是Hyper Text Trans...
    半世韶華憶闌珊閱讀 1,221評(píng)論 0 7