1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        HTTP協(xié)議一知半解?這篇幫你全面了解!

        共 4620字,需瀏覽 10分鐘

         ·

        2022-06-27 22:11

        超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它是基于 TCP 協(xié)議的應(yīng)用層傳輸協(xié)議。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。

        HTTP 是一種無(wú)狀態(tài) (stateless) 協(xié)議, HTTP 協(xié)議本身不會(huì)對(duì)發(fā)送過(guò)的請(qǐng)求和響應(yīng)的通信狀態(tài)進(jìn)行持久化處理。這樣做的目的是為了保持 HTTP 協(xié)議的簡(jiǎn)單性,從而能夠快速處理大量的事務(wù),提高效率。

        HTTP 請(qǐng)求體

        HTTP 請(qǐng)求體是請(qǐng)求數(shù)據(jù)時(shí)發(fā)送給服務(wù)器的數(shù)據(jù),畢竟向服務(wù)器拿數(shù)據(jù),先要表明怎么要,以及要什么!


        HTTP 請(qǐng)求體由:請(qǐng)求行 、請(qǐng)求頭、請(qǐng)求體組成。

        常用的 HTTP Method

        • GET:用于請(qǐng)求訪問(wèn)已經(jīng)被 URI(統(tǒng)一資源標(biāo)識(shí)符)識(shí)別的資源,可以通過(guò) URL 傳參給服務(wù)器。
        • POST:用于傳輸信息給服務(wù)器,主要功能與 GET 方法類似,但一般推薦使用 POST 方式。
        • PUT:傳輸文件,報(bào)文主體中包含文件內(nèi)容,保存到對(duì)應(yīng) URI 位置。
        • HEAD:獲得報(bào)文首部,與 GET 方法類似,只是不返回報(bào)文主體,一般用于驗(yàn)證 URI 是否有效。
        • DELETE:刪除文件,與 PUT 方法相反,刪除對(duì)應(yīng) URI 位置的文件。
        • OPTIONS:查詢相應(yīng) URI 支持的 HTTP 方法。

        Post 請(qǐng)求示例

        # Method URL Version  請(qǐng)求行
        POST /httpLearn/postRequest HTTP/1.1
        # Request Header  請(qǐng)求頭
        Host: 127.0.0.1:8080
        User-Agent: apifox/1.0.0 (https://www.apifox.cn)
        Content-Length: 126
        Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

        # Request Message  請(qǐng)求體
        ----WebKitFormBoundary7MA4YWxkTrZu0gW
        Content-Disposition: form-data; name="param"

        post
        ----WebKitFormBoundary7MA4YWxkTrZu0gW

        Get 請(qǐng)求示例

        Get 請(qǐng)求沒(méi)有請(qǐng)求體

        # Method URL Version  請(qǐng)求行
        GET /httpLearn/getRequest?param=123 HTTP/1.1
        # Request Header  請(qǐng)求頭
        Host: 127.0.0.1:8080
        User-Agent: apifox/1.0.0 (https://www.apifox.cn)

        GET 與 POST 的區(qū)別

        GET 與 POST 是我們常用的兩種 HTTP Method,二者之間的區(qū)別主要包括如下五個(gè)方面:

        • 從功能上講,GET 一般用來(lái)從服務(wù)器上獲取資源,POST 一般用來(lái)更新服務(wù)器上的資源;
        • 從 REST 服務(wù)角度上說(shuō),GET 是冪等的,即讀取同一個(gè)資源,總是得到相同的數(shù)據(jù),而 POST 不是冪等的,因?yàn)槊看握?qǐng)求對(duì)資源的改變并不是相同的;
        • 從請(qǐng)求參數(shù)形式上看,GET 請(qǐng)求的數(shù)據(jù)會(huì)附在 URL 之后,即將請(qǐng)求數(shù)據(jù)放置在 HTTP 報(bào)文的請(qǐng)求頭中,以?分割 URL 和傳輸數(shù)據(jù),參數(shù)之間以 & 相連;而 POST 請(qǐng)求會(huì)把提交的數(shù)據(jù)則放置在是 HTTP 請(qǐng)求報(bào)文的請(qǐng)求體中。
        • 從安全性上看,POST 的安全性要比 GET 的安全性高,因?yàn)?GET 請(qǐng)求提交的數(shù)據(jù)將明文出現(xiàn)在 URL 上,而且 POST 請(qǐng)求參數(shù)則被包裝到請(qǐng)求體中,相對(duì)更安全。
        • 從請(qǐng)求的大小看,GET 請(qǐng)求的長(zhǎng)度受限于瀏覽器或服務(wù)器對(duì) URL 長(zhǎng)度的限制,允許發(fā)送的數(shù)據(jù)量比較小,而 POST 請(qǐng)求則是沒(méi)有大小限制的。

        Http 響應(yīng)報(bào)文

        HTTP 的響應(yīng)報(bào)文是服務(wù)器返回的數(shù)據(jù),必須先有請(qǐng)求體再有響應(yīng)報(bào)文。

        圖片

        HTTP 響應(yīng)報(bào)文由:狀態(tài)行、響應(yīng)頭、響應(yīng)體組成。

        常見 Response Code 分類

        • 1xx(臨時(shí)響應(yīng)):信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作;
        • 2xx(成功):操作被成功接收并處理;
        • 3xx(重定向):需要進(jìn)一步的操作以完成請(qǐng)求;
        • 4xx(客戶端錯(cuò)誤):請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求;
        • 5xx(服務(wù)器錯(cuò)誤):服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤;

        響應(yīng)示例

        # Version  Response Code  狀態(tài)行
        HTTP/1.1 200 OK
        # Response Header  響應(yīng)頭
        Content-Type:text/plain;charset=UTF-8
        Content-Length:31
        Date:Wed, 19 Jan 2022 11:37:00 GMT
        Keep-Alive:timeout=60
        Connection:keep-alive

        # Response Message  響應(yīng)體
        post request is ok,param = post

        一次完整 HTTP 請(qǐng)求所經(jīng)歷的步驟

        當(dāng)我們?cè)?web 瀏覽器的地址欄中輸入:www.baidu.com,然后回車,到底發(fā)生了什么?

        • 由域名→ IP 地址 尋找 IP 地址的過(guò)程依次經(jīng)過(guò)了瀏覽器緩存、系統(tǒng)緩存、hosts 文件、路由器緩存、 遞歸搜索根域名服務(wù)器(DNS解析)。
        • 建立 TCP/IP 連接(三次握手具體過(guò)程)。
        • 由瀏覽器發(fā)送一個(gè) HTTP 請(qǐng)求。
        • 經(jīng)過(guò)路由器的轉(zhuǎn)發(fā),通過(guò)服務(wù)器的防火墻,該 HTTP 請(qǐng)求到達(dá)了服務(wù)器。
        • 服務(wù)器處理該 HTTP 請(qǐng)求,返回一個(gè) HTML 文件。
        • 瀏覽器解析該 HTML 文件,并且顯示在瀏覽器端。
        • 服務(wù)器關(guān)閉 TCP 連接(四次揮手具體過(guò)程)。

        Https

        HTTP 協(xié)議運(yùn)行在 TCP 之上,明文傳輸,客戶端與服務(wù)器端都無(wú)法驗(yàn)證對(duì)方的身份。Https 是通過(guò) SSL(Secure Socket Layer, 安全套接層 )或 TLS(Transport Layer Security, 安全層傳輸協(xié)議)的組合使用,加密 HTTP 的通信內(nèi)容。屬于通信加密,即在整個(gè)通信線路中加密。

        圖片

        HTTPS 采用共享密鑰加密(對(duì)稱)和公開密鑰加密(非對(duì)稱)兩者并用的混合加密機(jī)制。若密鑰能夠?qū)崿F(xiàn)安全交換,那么有可能會(huì)考慮僅使用公開密鑰加密來(lái)通信。但是公開密鑰加密與共享密鑰加密相比,其處理速度要慢。

        HTTP 的不足

        • 竊聽風(fēng)險(xiǎn): 通信使用明文(不加密),內(nèi)容可能會(huì)被竊聽;
        • 冒充風(fēng)險(xiǎn): 不驗(yàn)證通信方的身份,因此有可能遭遇偽裝;
        • 篡改風(fēng)險(xiǎn): 無(wú)法證明報(bào)文的完整性,所以有可能已遭篡改;

        兩者區(qū)別

        • 端口不同: Http 與 Http 使用不同的連接方式,用的端口也不一樣,前者是80,后者是443;
        • 資源消耗: 和 Http 通信相比,Https 通信會(huì)由于加減密處理消耗更多的 CPU 和內(nèi)存資源;
        • 開銷: Https 通信需要證書,而證書一般需要向認(rèn)證機(jī)構(gòu)購(gòu)買;

        HTTPS 工作原理

        圖片
        【1】客戶端發(fā)起 HTTPS 請(qǐng)求

        用戶在瀏覽器里輸入一個(gè) https 網(wǎng)址,然后連接到 server 的 443 端口。

        【2】服務(wù)端的配置

        采用 HTTPS 協(xié)議的服務(wù)器必須要有一套數(shù)字證書,可以自己制作,也可以向組織申請(qǐng),區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過(guò),才可以繼續(xù)訪問(wèn),而使用受信任的公司申請(qǐng)的證書則不會(huì)彈出提示頁(yè)面。

        這套證書其實(shí)就是一對(duì)公鑰和私鑰,可以想象成一把鑰匙和一個(gè)鎖頭,只是全世界只有你一個(gè)人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個(gè)鎖把重要的東西鎖起來(lái),然后發(fā)給你,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來(lái)的東西。

        【3】傳送證書

        這個(gè)證書其實(shí)就是公鑰,只是包含了很多信息,如證書的頒發(fā)機(jī)構(gòu),過(guò)期時(shí)間等等。

        【4】客戶端解析證書

        由客戶端的 TLS 來(lái)完成,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過(guò)期時(shí)間等等。如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書存在問(wèn)題。

        如果證書沒(méi)有問(wèn)題,那么就生成一個(gè)隨機(jī)值,然后用證書對(duì)該隨機(jī)值進(jìn)行加密,就好像上面說(shuō)的,把隨機(jī)值用鎖頭鎖起來(lái),這樣除非有鑰匙,不然看不到被鎖住的內(nèi)容。

        【5】傳送加密信息

        用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶端和服務(wù)端的通信就可以通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密了。

        【6】服務(wù)端解密信息

        服務(wù)端用私鑰解密后,得到了客戶端傳過(guò)來(lái)的隨機(jī)值(私鑰),然后把內(nèi)容通過(guò)該值進(jìn)行對(duì)稱加密,所謂對(duì)稱加密就是,將信息和私鑰通過(guò)某種算法混合在一起,這樣除非知道私鑰,不然無(wú)法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠厲害,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全。

        【7】傳輸加密后的信息

        服務(wù)段用私鑰加密后的信息,可以在客戶端被還原。

        【8】客戶端解密信息

        客戶端用之前生成的私鑰解密服務(wù)段傳過(guò)來(lái)的信息,于是獲取了解密后的內(nèi)容,整個(gè)過(guò)程第三方即使監(jiān)聽到了數(shù)據(jù),也無(wú)法解密信息。

        HTTPS 的缺點(diǎn)

        • HTTPS 協(xié)議多次握手,導(dǎo)致頁(yè)面的加載時(shí)間延長(zhǎng)近 50%;
        • HTTPS 連接緩存不如 HTTP 高效,會(huì)增加數(shù)據(jù)開銷和功耗;
        • SSL 涉及到的安全算法會(huì)消耗 CPU 資源,對(duì)服務(wù)器資源消耗較大;

        來(lái)源:blog.csdn.net/csp732171109/article/details/122608300

        我們創(chuàng)建了一個(gè)高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會(huì)優(yōu)秀起來(lái),趕緊點(diǎn)擊加群,享受一起成長(zhǎng)的快樂(lè)。另外,如果你最近想跳槽的話,年前我花了2周時(shí)間收集了一波大廠面經(jīng),節(jié)后準(zhǔn)備跳槽的可以點(diǎn)擊這里領(lǐng)取!

        推薦閱讀

        ··································

        你好,我是程序猿DD,10年開發(fā)老司機(jī)、阿里云MVP、騰訊云TVP、出過(guò)書創(chuàng)過(guò)業(yè)、國(guó)企4年互聯(lián)網(wǎng)6年。從普通開發(fā)到架構(gòu)師、再到合伙人。一路過(guò)來(lái),給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅(jiān)持下來(lái),多思考、少抱怨、勤動(dòng)手,就很容易實(shí)現(xiàn)彎道超車!所以,不要問(wèn)我現(xiàn)在干什么是否來(lái)得及。如果你看好一個(gè)事情,一定是堅(jiān)持了才能看到希望,而不是看到希望才去堅(jiān)持。相信我,只要堅(jiān)持下來(lái),你一定比現(xiàn)在更好!如果你還沒(méi)什么方向,可以先關(guān)注我,這里會(huì)經(jīng)常分享一些前沿資訊,幫你積累彎道超車的資本。

        點(diǎn)擊領(lǐng)取2022最新10000T學(xué)習(xí)資料
        瀏覽 30
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            一本久久道 | 亚洲精品乱伦视频 | 国内av | 校花张开腿让我爽了 | 啊灬啊灬啊灬快好深午夜小说 | 日本午夜视频在线播放 | 国产熟妇婬乱一区二区在线观看 | 性直播视频在免费线观看 | 抽插小穴视频 | 女人十八片毛片60分钟 |