從頭開始理解http吧

前言

最近在學習http內容,看了本《圖解http》深有感觸,因此選擇記錄一下學習的內容,也方便一樣想學習的人,可以看到個人內容,對你有所啓發前端

開始

說到http,對咱們前端而言,想到最多的確定就是日常的各類網絡請求,可是你真的知道http具體是什麼,是怎麼產生的嗎?web

web及網絡基礎

http其實是用於從客戶端到服務端等的一系列運做流程的協議,也稱(超文本傳輸協議)。固然,在瞭解http以前,咱們能夠先理解下tcp/ip協議,由於http實際上這是tcp/ip的一個子集。後端

tcp/ip

tcp/ip協議按照層次分別分爲了:緩存

  1. 應用層:決定了向用戶提供應用服務時通訊的活動,http、ftp等都屬於應用層
  2. 傳輸層:提供處於網絡鏈接中的兩臺計算機之間的數據傳輸
  3. 網絡層:用於處理網絡上流動的數據包
  4. 數據鏈路層:用於處理鏈接網絡的硬件部分

tcp/ip 通訊傳輸流

在數據傳輸過程當中,層與層之間會添加當前層所屬的首部信息,而後接收端會層層解析下去,最後拿到的就是咱們傳輸的數據 服務器

那麼問題來了,發送端與接收端是若是1對1確認的呢?

經過IP傳輸協議,找到對應的IP地址,而後解析IP地址獲取到的MAC地址,MAC地址是你當前網卡所屬的固定地址,因此只要能找到MAC地址,那麼就能惟一確認這就是咱們要找的接收方,固然,並非一次性就能直接找到對應的地址,有多是經過各類中轉而後從MAC地址一直找下去,直到找到所須要的位置。網絡

哈哈哈哈哈,這樣就能從發送端把數據發送到接收端了,可是總會有個新的問題,如何才能確認這個數據的可靠性?tcp

這就涉及到了咱們耳熟能詳的三次握手:post

SYN和ACk是TCP標誌 學習

好了,至此咱們已經基本瞭解tcp/ip協議的簡單內容,那麼如今來了解下http協議具體作了什麼事情吧。編碼

http 協議

  1. http協議實際上就是處理客戶端與服務端通訊的內容,經過特定的傳輸內容,讓客戶端與服務端可以理解傳輸的意思,這個特定傳輸內容咱們稱之爲報文,報文內容極多,後續會慢慢梳理。
  2. http協議是不保存狀態的,即每次都會去請求,而不會讓http進行判斷是否剛剛請求過了。
  3. 頁面初始化請求的時候,tcp會創建一個長鏈接,而不是每次http請求結束tcp就會斷開
  4. 因爲http是不保存狀態的,因此只能經過設置Cookie讓服務端去保存狀態,確認這我的的信息內容

http 報文

報文分爲請求報文與響應報文,即客戶端發送給服務端的時候發送的請求報文,以及服務端響應客戶端請求時返回去的響應報文。

報文分爲報文首部和報文主體,這裏我只講解咱們前端須要去處理的一部份內容,以及須要瞭解的報文信息。

報文主體

這是咱們請求或相應的主要內容,即前端請求發送的參數,後端返回的數據

報文首部

報文首部的內容就比較多了,爲了區分報文的具體類型,因此首部內容及其豐富

  1. 請求首部
    • method: 咱們請求是經過什麼樣的方式請求
      • get:獲取數據
      • post:上傳數據
      • put:更新數據
      • delete:刪除數據
      • options:查詢針對請求URI指定資源的支持
      • trace:追蹤路徑
      • connect:要求用隧道協議創建鏈接代理
  2. 響應首部
    • 狀態碼(經常使用狀態碼)
      • 1XX:接受的信息正在請求
      • 2XX:請求正常
        • 200 ok: 請求成功
        • 204 no content:請求已處理,可是沒有任何內容返回
        • 206 Partial Content:客戶端進行範圍請求,服務器響應成功
      • 3XX:重定向
        • 301 Moved Permanently:永久重定向
        • 302 Found:臨時重定向
        • 303 See Other:臨時重定向,標誌爲用get請求
        • 304 Not Modified:資源爲改變直接使用客戶端未過時的緩存
        • 307 Temporary Redirect:臨時重定向,強制使用get請求
      • 4XX:客戶端錯誤
        • 400 Bad Request:請求報文中存在語法錯誤
        • 401 Unauthorized:請求須要經過http驗證
        • 403 Forbidden:無權限訪問
        • 404 Not Found:找不到文件
      • 5XX:服務端錯誤
        • 500 Internal Server Error:服務端報錯
        • 503 Service Unavailable:服務器處於宕機或者超負荷狀態

報文首部字段

上面描述了報文首部咱們須要關注的一些內容,接下來咱們瞭解一下,報文首部的一些配置

  1. 通用首部字段
    首部字段名 說明
    Cache-Control 控制緩存行爲
    Connection 逐跳首部、鏈接的管理
    Date 建立報文的時間
    Pragma 報文指令
    Trailer 報文末端的首部一覽
    Transfer-Encoding 指定報文主體的傳輸編碼方式
    Upgrade 升級爲其餘協議
    Via 代理服務器的相關信息
    Warning 錯誤通知
  2. 請求首部字段
    首部字段名 說明
    Accept 用戶代理可處理的媒體類型
    Accept-Charset 優先的字符集
    Accept-Encoding 優先的內容編碼
    Accept-Language 優先的語言
    Expect 期待服務器的特定行爲
    Authorization Web認證信息
    From 用戶的電子郵箱地址
    Host 請求資源所在的服務器
    If-Match 比較實體標記(ETag)
    If-modified-Since 比較資源的更新時間
    If-None-Match 比較實體標記
    If-Range 資源未更新時發送的Byte的範圍請求
    If-Unmodified-Since 比較資源的更新時間(與上一個相反)
    Max-Forwards 最大傳輸逐跳數
    Proxy-Authorization 代理服務器要求客戶端的認證信息
    Range 實體的字節範圍請求
    Refer 對請求中URI的原始獲取方
    TE 傳輸編碼的優先級
    User-Agent http客戶端程序的信息
  3. 響應首部字段
    首部字段名 說明
    Accept-Ranges 是否接受字節範圍請求
    Age 推算資源建立通過時間
    ETag 資源的匹配信息
    Location 令客戶端重定向至指定URI
    Proxy-Authenticate 代理服務器對客戶端的認證信息
    Retry-After 對再次發起請求的時機要求
    Server HTTP服務器的安裝信息
    Vary 代理服務器緩存的管理信息
    WWW-Authenticate 服務器對客戶端的認證信息

以上就是我整理出來的,咱們日常須要用到的關於http的知識,具體的首部字段內容能夠具體去查看下,內容太多,就不一一闡述了

但願對看到的你有幫助

相關文章
相關標籤/搜索