做爲一名前端er,http是咱們必需要掌握的,那麼咱們到底須要掌握哪些東西呢前端
這裏咱們介紹與http相關的TCP、IP、DNS、url、uriweb
IP地址是咱們很熟悉的東西,最多見的的就是127.0.0.1。咱們都知道鏈接網絡後,每一個人都會有不一樣的IP地址,而每臺計算機也有本身的mac地址(這個地址是硬件寫死的),那麼咱們傳輸信息的時候只要知道對方的IP地址,而後再和mac地址配對就基本能夠肯定接受信息方;而傳輸過程當中咱們確定是但願信息高效傳遞過去,那麼傳輸方式以及傳輸路徑就要找到最好的方式。IP協議就是作這些事情的,IP是指IP協議而不是咱們經常說的IP地址,它位於網絡層,所要作的事情主要是如下三點:
1)尋址和路由;
2)傳遞服務;
3)數據包的分片和重組;後端
首先按照分層,TCP位於傳輸層,提供字節流服務。那麼什麼是字節流呢?網絡傳輸數據就像汽車運輸貨物同樣,好比咱們運輸的是信號塔,這麼大不可能一會兒運到目的地,這時候就須要一部分一部分運過去,再組裝起來。而TCP確保數據能到達目的地。運輸貨物咱們打個就能夠通知是否送到了,TCP要用什麼方式呢?看圖說話
瀏覽器
咱們要訪問一臺服務器的東西,須要知道它的地址,IP地址能夠做爲一個標識,可是四個數字是很很差記的,所以誕生了域名這個東西,好比www.qq.com,咱們能夠訪問到騰訊主頁,但這個是怎麼找到對應到騰訊的服務器呢?DNS服務就是幹這個的,它處於應用層,固然它也能夠經過IP來查找對應的域名。緩存
URL: 統一資源定位符
URI: 統計資源標識符
URI用來標識某個互聯網資源,而URL是資源的位置,因此URL是URI的子集。這裏知道簡單區別便可。安全
http報文分爲請求報文和響應報文,HTTP請求報文:一個HTTP請求報文由請求行、請求頭部、空行和請求數據4部分組成。HTTP響應報文:由三部分組成:狀態行、消息報頭、響應正文。綜合兩種報文,咱們把報文分爲一下結構
性能優化
主要呈現請求的基本信息,包括請求的目標,協議版本,以及請求方法。目標就是一個url,好比咱們要請求的網址或者跟後端協定好的接口地址。協議版本指http1.0、http1.1等。請求方法最多見的GET、POST,在http1.1總共有八種,這裏再也不一一闡述,最多見的GET、POST區別能夠參考這篇文章服務器
狀態行就主要表示請求結果了,這裏主要涉及狀態碼後面第三部分會說到websocket
這裏首部字段就有通用首部字段、請求首部字段以及響應首部字段三種。
經常使用的首部字段好比Date(日期),Pragma、cache-control(緩存相關),Upgrade(協議升級,好比使用websocket)等。
請求首部字段好比Accept-*系列(表示優先級的,Charset字符集,Encoding編碼,Language語言等),緩存類的(Etag和modified相關),referer(請求方)等。
相應首部字段好比緩存相關(Etag和modified相關),服務器信息(Server),重定向(Location)等。cookie
http中未定義的一些字段,好比cookie
請求報文主要是請求信息,query、body參數等。響應報文主要是服務器返回的信息。
##### 1xx:
信息類型,表示在處理了。
成功類型。好比常見的200,服務器處理成功可是不返回實體信息的204等。
須要附加操做的,好比重定向(301永久重定向,302臨時重定向)和使用緩存(304,這裏結合幾個首部字段使用,具體能夠參考http緩存)
客戶端錯誤,好比參數錯誤(400),認證失敗(401),沒有訪問權限(403),資源不存在(404)等
服務器錯誤,好比服務端執行錯誤或者故障(500),服務器暫時沒法處理(503),超時(504),協議有問題(505)等
身份認證主要有如下五種方式
1.承載用戶身份信息的HTTP首部(好比referer)
2.客戶端IP地址跟蹤,經過用戶的IP地址對其進行識別
3.用戶登陸,用認證方式來識別用戶(這裏須要瞭解token機制)
4.胖URL,一種在URL中嵌入識別信息的技術
5.cookie,一種功能強大且高效的持久身份識別技術
CSP策略
能夠採用請求頭設置方式
Content-Security-Policy: policy
Content-Security-Policy: default-src 'self'(自定義)
固然也能夠在meta標籤中設置,好比
(來自mdn)。
X-Frame-Options
防止點擊劫持
X-XSS-Protection
控制瀏覽器XSS防止的開關
好比cookie加密,設置HttpOnly和secure
https:四次握手,ssl/tls協議,加密等。
http2:優點,多路複用、頭部壓縮、流的優先級等。
這裏只針對http咱們須要掌握的基本信息作一個大概的總結,具體的某方面知識建議查看數據去了解,雖然咱們在編寫代碼(寫bug中)過程當中幾乎不會用到http,可是咱們的項目運行倒是離不開它,所以掌握基本的http對性能優化,安全等都是頗有幫助的。有書寫錯誤或者解釋錯誤的歡迎指出!