圖解http學習筆記

HTTP/HTTPS協議

URL/URI

URI 用字符串標識某一互聯網資源,而 URL 表示資源的地點(互聯 網上所處的位置)。可見 URL 是 URI 的子集。html

//URI絕對格式
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
<-!  方案名://登陸信息@服務器地址:端口號/文件路徑?查詢字符#片斷標識符 >

https://blog.csdn.net/weixin_39780047/article/details/88850857
<協議>://<host>:<port>/<路徑>
  • http默認端口是80,可省略
  • 省略路徑時,默認指向主頁web

    操做過程

  1. 瀏覽器從 URL 中解析出服務器的主機名;
  2. 瀏覽器將服務器的主機名轉換成服務器的 IP 地址;
  3. 瀏覽器將端口號(若是有的話)從 URL 中解析出來;
  4. 瀏覽器創建一條與 Web 服務器的 TCP 鏈接;
  5. 瀏覽器向服務器發送一條 HTTP 請求報文;
  6. 服務器向瀏覽器回送一條 HTTP 響應報文;
  7. 關閉鏈接,瀏覽器顯示文檔
  • http1.0是無狀態的,每次訪問數據時都要進行tcp的鏈接和釋放。http1.1以後採用持續鏈接方式,tcp鏈接在完成請求後依然保留一段時間,可重複使用瀏覽器

    代理服務器

    代理服務器將最近的一些請求和響應暫存在本地中。當新請求到到達時,若代理服務器中包含相同資源,則返回暫存的請求響應。不然經過因特網獲取請求響應並複製一份在本地(緩存服務器)緩存

使用代理服務器的理由安全

利用緩存技術(稍後講解)減小網絡帶寬 的流量,組織內部針對特定網站的訪問控制,以獲取訪問日誌爲主要 目的,等等。服務器

報文結構

http分爲請求報文和響應報文
請求報文cookie

響應報文

狀態碼

1** 通知信息
2** 表示成功
3** 重定向,還須要採起進一步行動
4** 客戶端錯誤,語法錯誤活沒法完成請求
5** 服務器錯誤,服務器在處理過程當中發送生錯誤

常見狀態:網絡

  • 202 Accepted 接受
  • 400 Bad Request 錯誤請求
  • 404 Not Found 找不到

方法

方法

首部字段名

  1. 通用首部字段
首部字段名 說明
Cache-Control 控制緩存的行爲
Connection 逐跳首部、鏈接的管理
Date 建立報文的日期時間
Pragma 報文指令
Trailer 報文末端的首部一覽
Transfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級爲其餘協議
Via 代理服務器的相關信息
Warning 錯誤通知
  1. 請求首部字段tcp

    首部字段名 說明
    Accept 用戶代理可處理的媒體類型
    Accept-Charset 優先的字符集
    Accept-Encoding 優先的內容編碼
    Accept-Language 優先的語言(天然語言)
    Authorization Web認證信息
    Expect 期待服務器的特定行爲
    From 用戶的電子郵箱地址
    Host 請求資源所在服務器
    If-Match 比較實體標記(ETag)
    If-Modified-Since 比較資源的更新時間
    If-None-Match 比較實體標記(與 If-Match 相反)
    If-Range 資源未更新時發送實體 Byte 的範圍請求
    If-Unmodified-Since 比較資源的更新時間(與If-Modified-Since相反)
    Max-Forwards 最大傳輸逐跳數
    Proxy-Authorization 代理服務器要求客戶端的認證信息
    Range 實體的字節範圍請求
    Referer 對請求中 URI 的原始獲取方
    TE 傳輸編碼的優先級
    User-Agent HTTP 客戶端程序的信息
  2. 響應首部字段性能

    首部字段名 說明
    Accept-Ranges 是否接受字節範圍請求
    Age 推算資源建立通過時間
    ETag 資源的匹配信息
    Location 令客戶端重定向至指定URI
    Proxy-Authenticate 代理服務器對客戶端的認證信息
    Retry-After 對再次發起請求的時機要求
    Server HTTP服務器的安裝信息
    Vary 代理服務器緩存的管理信息
    WWW-Authenticate 服務器對客戶端的認證信息
    1. 實體首部字段

      實體首部字段

    2. cookie

HTTPS

經常使用端口:443

  • HTTP+ 加密 + 認證 + 完整性保護 =HTTPS

    1553885477520

  • https採用共享密鑰和公鑰加密(處理慢,安全性高)二者並用的混合加密機制
    1. 使用公鑰加密交換共享密鑰
    2. 使用共享密鑰進行通訊

HTTP追加協議

解決HTTP性能瓶頸

  • Ajax——局部更新
  • Comet——保留響應

    • SPYD

      SPDY 沒有徹底改寫 HTTP 協議,而是在 TCP/IP 的應用層與運輸層之 間經過新加會話層的形式運做。同時,考慮到安全性問題,SPDY 規 定通訊中使用 SSL。

      1553889339542

    • WebSocket

      一旦 Web 服務器與客戶端之間創建起 WebSocket 協議的通訊鏈接, 以後全部的通訊都依靠這個專用協議進行。通訊過程當中可互相發送 JSON、XML、HTML 或圖片等任意格式的數據。 因爲是創建在 HTTP 基礎上的協議,所以鏈接的發起方還是客戶端, 而一旦確立 WebSocket 通訊鏈接,不論服務器仍是客戶端,任意一方 均可直接向對方發送報文

      爲了實現 WebSocket 通訊,須要用到 HTTP 的 Upgrade 首部字 段,告知服務器通訊協議發生改變,以達到握手的目的

      特色

      1. 推送功能 ……服務器->客戶端
      2. 減小通訊量 ……保持鏈接狀態,首部信息較少

Web攻擊

  • Web 應用端(服務器端)的驗證

  • 跨站腳本攻擊
  • 對用戶 Cookie 的竊取攻擊
  • SQL 注入攻擊
  • OS 命令注入攻擊
  • 目錄遍歷攻擊
  • 遠程文件包含漏洞

總結

思惟導圖

1553905547631

  • 用單臺虛擬主機實現多個域名

    提 供 Web 託管服務(Web Hosting Service)的供應商,能夠用一臺服務 器爲多位客戶服務,也能夠以每位客戶持有的域名運行各自不一樣的網 站。這是由於利用了虛擬主機(Virtual Host,又稱虛擬服務器)的功 能。

    位於同一臺服務器上的web服務器通過域名轉換後,IP地址相同。所以在發送HTTP請求的時候,必須在host首部內完整指出主機名或域名的URI。

  • [x] 客戶端如何知道web服務經過虛擬主機?
    • 在host首部字段說明完整的域名,經過域名來區分同一服務器上的虛擬主機
  • [x] URL和URI的區別

URL:(Uniform/Universal Resource Locator 的縮寫,統一資源定位符)

URI:(Uniform Resource Identifier 的縮寫,統一資源標識符)(表明一種標準)。

URI 屬於 URL 更高層次的抽象,一種字符串文本標準。

URL是一種具體的URI,它是URI的一個子集,它不只惟一標識資源,並且還提供了定位該資源的信息。URI 是一種語義上的抽象概念,能夠是絕對的,也能夠是相對的,而URL則必須提供足夠的信息來定位,是絕對的。

  • [x] GET和POST的區別
GET POST
回退時 無害 再次請求
cache 須要手動設置
編碼 URL 多種編碼
瀏覽器歷史記錄 保留 不保留
長度限制 受瀏覽器限制
參數數據類型 ASCII 任意
傳遞方式 URL request body
傳輸數據包 1個 2個
  • 二者本質上都是採用TCP協議進行傳輸,所以在傳輸過程當中沒有差別

  • [x] 冪等請求

HTTP冪等方法,是指不管調用這個url多少次,都不會有不一樣的結果的HTTP方法。

HTTP GET方法用於獲取資源,不該有反作用,因此是冪等的。 GET請求可能會每次獲得不一樣的結果,但它自己並沒有產生任何反作用,於是是知足冪等性的。

調用屢次的結果和調用一次的結果一致,如DELETE調用一次刪除指定資源,再次調用不管該資源是否存在,依然刪除該資源。所以其是冪等

相關文章
相關標籤/搜索