http協(xié)議

一、Http協(xié)議

  1. 網(wǎng)絡(luò)協(xié)議:客戶端與服務(wù)端之間的協(xié)議

  2. 主流協(xié)議:http弦聂、socket、ftp茅糜、pop3

  3. http協(xié)議

    1)多用與b/s架構(gòu)

    2)問題

     短連接:每次客戶端與服務(wù)端交互時,先建立連接素挽,交互完畢后蔑赘,關(guān)閉連接
    
     無狀態(tài):服務(wù)端只能記得住當(dāng)次請求狀態(tài)
    

    3)http:1.0 - 目前主流版本
    http:1.1 - 較新版本(向下兼容)
    http:2.0 - 最新版本

二、http請求協(xié)議

  1. 客戶端發(fā)送一個請求,應(yīng)該有如下三個部分:

    請求行: 請求方法米死、請求url 狀態(tài)碼锌历、(http協(xié)議版本)

    請求頭部: 說明服務(wù)器要使用的附加信息

    請求主體: 提交給服務(wù)器的請求數(shù)據(jù)

  2. HTTP客戶端請求內(nèi)容詳解

    1)請求行 - 請求的信息

     請求類型 - get、post峦筒、put等
    
     請求地址 
    
        如果是get請求究西,參數(shù)應(yīng)該拼到url的后面url?key=value,但請求體為空
    
        如果是post請求物喷,url后面不拼參數(shù)卤材,參數(shù)放在請求體中
        
    
     狀態(tài)碼 - 服務(wù)器端的狀態(tài)
    

    2)請求頭 - 反映給服務(wù)端的信息

     格式為 key:value,key:value,...
          
     accept - 表示瀏覽器可接受的MIME類型
     accept-Encoding - 瀏覽器能夠進(jìn)行解碼的數(shù)據(jù)編碼方式
    
     accept-language - 表示服務(wù)端接受的語言
    
       zh-cn:簡體中文
       zh-tw:繁體中文
       zh - 中文
       us -英文
    
     connection - 表示當(dāng)前鏈接狀態(tài)
    
       keep-alive - 保持連接
    
     host - 請求的服務(wù)器網(wǎng)址峦失;
    
     referer - 表示當(dāng)前的請求來源
    
       實(shí)現(xiàn)防盜鏈接
    
     user-agent 獲取到用戶瀏覽器信息
    
     cache-control -緩存控制
         
       max-age 設(shè)置最大活動周期,設(shè)置緩存保存的最大時間的單位為秒扇丛,為0代表不緩存
    
     cookie - 將cookie自動攜帶到請求頭
    
     content-type:互聯(lián)網(wǎng)媒體類型;使用post請求必須設(shè)置這個屬性
    
         也叫做MIME類型尉辑,在Http協(xié)議消息頭中帆精,使用Content-Type來表示具體請求中的媒體類型信息。
    
         <form>元素提交時默認(rèn)的類型
        一般文件上傳時默認(rèn)為application/x-www.form-urlencoded
    
     Content-Length:請求內(nèi)容的長度
    
        對于POST請求來說Content-Length必須出現(xiàn)
    

    3)請求體 - 存放請求參數(shù)

    如果為post請求隧魄,有值卓练,如果為get請求為空

三、http響應(yīng)協(xié)議

  1. 服務(wù)端給客戶端響應(yīng)信息购啄,應(yīng)該有如下三部分

    響應(yīng)行:協(xié)議版本 狀態(tài)碼 原因短語

    響應(yīng)頭部:

    響應(yīng)主題: 返回給客戶端的響應(yīng)數(shù)據(jù)襟企,可能是字符數(shù)據(jù),也可能是字節(jié)數(shù)據(jù)

  2. HTTP服務(wù)端響應(yīng)內(nèi)容詳解

    1)響應(yīng)行

      狀態(tài)碼
      協(xié)議版本
    

    2)響應(yīng)頭

      Allow:服務(wù)器支持哪些請求方法
    
         GET狮含、POST
    
      Content-Encoding 文檔的編碼(Encode)
    
      Cache-Control: 告訴客戶端顽悼,服務(wù)端的緩存配置
    
      Connection - 表示當(dāng)前的連接狀態(tài)
    
        keep-alive 表示保持連接
    
      content-length 響應(yīng)數(shù)據(jù)的長度(大小)
    
      content-type - 響應(yīng)數(shù)據(jù)的mime類型
    
         一般情況下:text/html
         
      Date - 當(dāng)前響應(yīng)的日期時間
    
      keep-alive 設(shè)置保持連接的超時和最大存活時間
         timeout=5 max=99
    
      server - 服務(wù)器端的信息
    

    3)響應(yīng)體

      服務(wù)器返回給客戶端的數(shù)據(jù)主體
    

四几迄、擴(kuò)展內(nèi)容

1. 請求類型

     get/post/head/put/delete/options/trace

2. 標(biāo)準(zhǔn)API - 標(biāo)準(zhǔn)的請求方式

      get - 獲取數(shù)據(jù)
      post - 修改數(shù)據(jù)
      put - 新增數(shù)據(jù)
      delete - 刪除數(shù)據(jù)

3. 狀態(tài)碼

      1XX - 服務(wù)器的信息
      2XX - 表示請求成功
        200:請求成功
        201:成功創(chuàng)建連接
        202:接受請求            
      3XX - 表示重定向
        302:表示重定向
        304:表示服務(wù)端資源沒有變化蔚龙,訪問緩存
          問題 - 這次請求沒有真正低訪問服務(wù)器端
        305:使用代理
      4XX - 客戶端錯誤
        400:錯誤的請求
        404:網(wǎng)頁找不到
        403:拒絕訪問
        405:請求類型不允許
      5XX - 服務(wù)端錯誤
        500:服務(wù)端錯誤
        502:路徑錯誤
        504:請求超時
        505:http版本不支持

4. MIME類型 - 文件類型

     MIME類型是如何定義的

        //定義MIME類型
        <mime-mapping>
            //文件的擴(kuò)展名
            <extension>jpg</extension>
            //對應(yīng)的MIME類型
            <mime-type>image/jpeg</mime-type>
         </mime-mapping>

       常見的MIME類型

        html - text/html
        htm  - text/html
        css  - text/css
        js   - text/javascript
        json - application/json
        jpg  - image/jpeg
        text - text/plain

5. 請求參數(shù)

     1)get請求類型

         將請求數(shù)據(jù) - url?key=value(瀏覽器地址)

         安全性低

         請求地址的長度是有限制的

         請求數(shù)據(jù)中包含中文的話,需要轉(zhuǎn)碼

     2)post請求類型

         瀏覽器地址欄url映胁,不包含請求類型

         安全性相對比較高

         對請求數(shù)據(jù)的長度沒有要求

         請求數(shù)據(jù)中包含中文的話木羹,可以不轉(zhuǎn)碼,對中文的處理相對比較好

6. 控制HTTP頭部方法

    可以配置每個HTML文件的HTTP-EQUIV標(biāo)簽控制緩存

      <meta http-equiv="Cache-Control" content="no-cache">


    在PHP頁面中控制響應(yīng)頭

       header("Content-Type: image/jpeg");

五屿愚、緩存工作原理

  1. 客戶端可以自動保存已經(jīng)訪問過的文檔的副本,這些副本就成為“文檔緩存”

  2. 當(dāng)客戶端再次發(fā)送針對同一個URL的請求時务荆,如果本地有“已緩存的副本”妆距,就可以直接從本地存儲設(shè)備而不是遠(yuǎn)程服務(wù)器提取該文檔了。

  3. 數(shù)據(jù)緩存有下列優(yōu)點(diǎn)

    減少了冗余的數(shù)據(jù)傳輸函匕,節(jié)省客戶端流量費(fèi)用
    緩解服務(wù)器帶寬瓶頸的問題娱据,服務(wù)器可以節(jié)省出更多的帶寬
    降低了對服務(wù)器的資源消耗和運(yùn)行要求
    降低了由于遠(yuǎn)距離而造成的加載延時

  緩存原理:發(fā)送請求->是否有緩存->
  有緩存,判斷是否過期,如果過期不用中剩,如果不過期跟服務(wù)器進(jìn)行驗(yàn)證忌穿,判斷是否是最新的數(shù)據(jù);如果不是结啼,需要更新緩存掠剑,更新緩存后,從緩存中獲取郊愧。
  
  沒有緩存朴译,從服務(wù)器中獲取

六、http基本優(yōu)化

網(wǎng)站性能優(yōu)化最主要的就是要減少HTTP請求及每次響應(yīng)中內(nèi)容的長度属铁∶呤伲可以從連接過程中的下列方面加以考慮:

1、域名解析

盡可能減少域名解析次數(shù)——減少跨站外部資源的引用

2焦蘑、創(chuàng)建連接

努力減少連接創(chuàng)建次數(shù)——使用Keep-Alive避免重復(fù)連接

3盯拱、發(fā)送請求
盡力減少請求次數(shù)——合理設(shè)置Expires時間、資源合并

4例嘱、等待響應(yīng)
提高服務(wù)器端運(yùn)行速度——提高數(shù)據(jù)運(yùn)算及查詢速度

5狡逢、接收響應(yīng)
盡可能減小響應(yīng)數(shù)據(jù)長度——啟用壓縮

七、安全的HTTP協(xié)議

  1. HTTP協(xié)議本質(zhì)上屬于“明文傳輸”蝶防,可能被竊聽和篡改甚侣,政府、銀行等機(jī)密應(yīng)用需要需要“安全版本的HTTP”:http協(xié)議默認(rèn)端口80

  2. HTTPS協(xié)議將消息發(fā)送給TCP層之前间学,先交給了一個安全層(由SSL或TLS協(xié)議實(shí)現(xiàn))殷费,安全層負(fù)責(zé)對消息進(jìn)行加密和解密操作。https協(xié)議默認(rèn)端口443

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末低葫,一起剝皮案震驚了整個濱河市详羡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘿悬,老刑警劉巖实柠,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異善涨,居然都是意外死亡窒盐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門钢拧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟹漓,“玉大人,你說我怎么就攤上這事源内∑狭#” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗽交。 經(jīng)常有香客問我卿嘲,道長,這世上最難降的妖魔是什么夫壁? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任拾枣,我火速辦了婚禮,結(jié)果婚禮上掌唾,老公的妹妹穿的比我還像新娘放前。我一直安慰自己,他們只是感情好糯彬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布凭语。 她就那樣靜靜地躺著,像睡著了一般撩扒。 火紅的嫁衣襯著肌膚如雪似扔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天搓谆,我揣著相機(jī)與錄音炒辉,去河邊找鬼。 笑死泉手,一個胖子當(dāng)著我的面吹牛黔寇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斩萌,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼缝裤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颊郎?” 一聲冷哼從身側(cè)響起憋飞,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姆吭,沒想到半個月后榛做,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡内狸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年检眯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆淡。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡锰瘸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瘪撇,到底是詐尸還是另有隱情获茬,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布倔既,位于F島的核電站恕曲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏渤涌。R本人自食惡果不足惜佩谣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望实蓬。 院中可真熱鬧茸俭,春花似錦、人聲如沸安皱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酌伊。三九已至腾窝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間居砖,已是汗流浹背虹脯。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奏候,地道東北人循集。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像蔗草,于是被迫代替她去往敵國和親咒彤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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