【10】winter重學前端 - 瀏覽器:一個瀏覽器是如何工做的?(階段一)HTTP

瀏覽器 - HTTP

  • 簡介:HTTP 在 TCP 的基礎上,規定了 Request-Response 的模式, 純粹的文本協議,定了使用 TCP 協議來傳輸文本格式的一個應用層協議。
  • 協議格式

clipboard.png

HTTP Method(方法)

GET POST HEAD PUT DELETE CONNECT OPTIONS TRACEsegmentfault

    • 經過地址欄訪問頁面都是 GET 方法。表單提交產生 POST
    • HEAD 則是跟 GET 相似,只返回請求頭,多數由 JavaScript 發起
    • PUT 和 DELETE 分別表示添加資源和刪除資源,語義資源並不是強約束
    • CONNECT 如今多用於 HTTPS 和 WebSocket
    • OPTIONS 和 TRACE 通常用於調試,多數線上服務都不支持
    • HTTP Status code(狀態碼)和 Status text

    clipboard.png

    • 304: 客戶端本地已經有緩存的版本,而且在 Request 中告訴了服務端,當服務端經過時間或者 tag,發現沒有更新的時候,就返回一個不含 body 的 304 狀態。
    • 實際上 301 更接近於一種報錯,提示客戶端下次別來了
    • 1xx 的狀態被瀏覽器 http 庫直接處理掉了,不會讓上層應用知曉

    HTTP Head (HTTP 頭)

    • 請求頭

    clipboard.png

    -響應頭瀏覽器

    clipboard.png

    HTTP Request Body

    常見body格式緩存

    clipboard.png

    form標籤:默認會產生 application/x-www-form-urlencoded,當有文件上傳時,則會使用 multipart/form-data安全

    HTTPS 

    • 做用:一是肯定請求的目標服務端身份,二是保證傳輸的數據不會被網絡中間節點竊聽或者篡改。
    • 區別:使用加密通道來傳輸 HTTP 的內容,TLS 構建於 TCP 協議之上,它其實是對傳輸的內容作一次加密,因此從傳輸內容上看,HTTPS 跟 HTTP 沒有區別

    HTTP 2.0

    • 改進:一是支持服務端推送,二是支持 TCP 鏈接複用
      提早把一部份內容推送給客戶端,放入緩存當中,這能夠避免客戶端請求順序帶來的並行度不高,從而致使的性能問題。
      同一個 TCP 鏈接來傳輸多個 HTTP 請求,避免了 TCP 鏈接創建時的三次握手開銷,和初建 TCP 鏈接時傳輸窗口小的問題。

    補充知識

    • DNS查詢獲得IP
    • tcp/ip的併發限制
    • get和post的區別
      個人總結: https://segmentfault.com/a/11...
    • 五層因特網協議棧
    • 長鏈接與短鏈接服務器

      • TCP就是數據傳輸的通道(先創建通道再傳輸數據,可以保證安全)
      • TCP保活功能:爲服務器應用提供,服務器應用但願知道客戶主機是否崩潰
    • http2.0與http1.1的顯著不一樣點:
    • 強緩存與協商緩存
    相關文章
    相關標籤/搜索