不論是在工做仍是面試中,Http這一塊的知識,對於每一個前端開發都是必備的。這篇筆記,是我的在學習 圖解Http 這本書的時候,記錄一些平時工做面試中,用得比較多的知識點,拿出來和你們分享一下。全部圖片取材都源於 圖解 Http,文章僅供我的學習使用。前端
計算機與網絡設備要相互通訊,雙方就必須基於相同的方法。不一樣的硬件、操做系統之間的通訊,全部的這一切都須要一種規則。而咱們就把這種規則稱爲協議(protocol)。 像這樣把與互聯網相關聯的協議集合起來總稱爲TCP/IP。也有說法認爲,TCP/IP是指TCP和IP這兩種協議。還有一種說法認爲,TCP/IP是在IP協議的通訊過程當中,使用到的協議族的統稱。面試
三次握手是由發送端發起的,在發送數據以前,發送端會給接收端發送一個確認消息,當接收端接到發送端的消息而且作出迴應以後,發送端纔會開始數據的傳輸瀏覽器
DNS(Domain Name System) 服務是和 HTTP 協議同樣位於應用層的協議,它提供域名到 IP 之間的解析服務緩存
URI(Uniform Resource Iden-tifier):統一資源定位符,標識某一互聯網上面的資源安全
URL(Uniform Resource Locator): 統一資源地址,標識資源的位置服務器
HTTP協議和 TCP/IP 協議族內的其它衆多協議相同,用於客戶端和服務器之間的通訊cookie
請求訪問的一端稱爲客戶端,提供資源響應的一端稱爲服務端網絡
http 是一種不保存狀態,即無狀態的協議學習
在調用過程當中,對請求和響應都不作持久化處理操作系統
優勢:
- 更快的處理大量事物
- 確保協議的可伸縮性
缺點:
- 某些請求或者登錄狀態須要保持狀態
GET : 主要用來獲取資源,參數包含在URL中可見,因此安全性比較差,瀏覽器對GET方法的參數長度有限制
POST :主要用來獲取和傳輸資源,參數包含在請求體中,且參數長度比GET大的多,對外不可見,相對較爲安全,
PUT :向服務器提交數據,更新服務器資源
DELETE :刪除服務器數據
HEAD :獲取報文首部
問題: 在 Http 最初的版本中,沒進行一次 Http 通訊都會斷開一次鏈接,所以當請求過多的時候,都會形成無謂的通訊開銷
解決: Http/1.1 提出了持久鏈接的概念
持久鏈接: 持久鏈接的特色是,只要任意一方沒有明確提出斷開鏈接,就保持TCP鏈接狀態
優勢: 持久鏈接的好處在於減小了 TCP 鏈接的重複創建和斷開所形成的額外開銷,減輕了服務器端的負載。另外,減小開銷的那部分時間,使HTTP 請求和響應可以更早地結束,這樣 Web 頁面的顯示速度也就相應提升了
前面說過,Http是無狀態的
Http 包含請求報文和響應報文,經過依賴這兩種報文來達到信息的資源的請求和響應
請求報文:
- 請求行:請求方法,協議名,版本號,請求URI
- 請求頭部
- 空行
- 請求體
響應報文
- 狀態行:協議名,版本號,返回的狀態碼
- 響應頭部
- 空行
- 響應體
請求頭參數:
Content-type
Host
Connection
Content-length
cookie
Date
last-modify
cache-control
HTTP 首部是構成HTTP報文的要素之一
在HTTP通訊過程當中,不管是請求仍是響應都會使用首部字段,它能起到傳遞額外信息的做用
狀態碼錶示客戶端請求的返回結果
狀態碼中的第一位指定響應類別,後兩類無分類
緩存是指代理服務器內保存的資源副本,利用緩存能夠減小對服務器的訪問,所以也就節省了通訊流量和通訊時間
緩存是服務器是代理服務器的一種,當代理轉發從服務器返回的資源時,代理服務器會返回一份資源的副本
緩存不只能夠存在於緩存服務器內,還能夠存在客戶端瀏覽器中。把客戶端緩存稱爲臨時網絡文件
另外,和緩存服務器相同的一點是,當斷定緩存過時後,會向源服務器確認資源的有效性。若判斷瀏覽器緩存失效,瀏覽器會再次請求新資源。
- 強緩存:
- Cache-Control
- Expires
- Pragma:在 HTTP 1.1中已經被廢棄
- 協商緩存:
- ETag/If-Not-Match
- Last-Modified/If-Modified-Since
瀏覽器首次發送請求
瀏覽器再次發送請求
參考文章:簡書:一文讀懂http緩存
TCP: 三次握手,穩定性強,數據可靠,速度慢,佔用系統資源高,適合少許的數據傳輸
UDP:
總結:
- TCP面向鏈接,UDP是無鏈接的,即發送數據以前不須要創建鏈接
- TCP提供可靠的服務,即TCP鏈接傳送的數據,無差錯,不丟失。UDP盡最大努力交付,可是不保證數 據的可靠性
- TCP只能是一對一,UDP能夠一對一,一對多,多對一