#### 1. 理解什么是協議,了解TCP/IP網絡協議族的構成,每層協議在應用程序中發揮的作用
#### 2. HTTP
1. HTTP是基于TCP/IP的關于數據如何在網絡中通信的協議
#### 2. GET和POST的區別
1. GET和POST本質上沒有區別,因為都是基于TCP/IP,只是HTTP規定的兩種傳輸方法
2. 從使用上來看,GET請求的傳參是拼接在URL中,參數相對POST更可見,所以POST相對比GET要安全一些,URL瀏覽器對長度也做了限制,一般是2K個字節
3. POST傳輸的數據格式不受限制,GET的傳輸格式有限制( 只接受ASCII字符 )
4. GET請求參數會遺留在瀏覽器瀏覽歷史記錄當中,可以看到,POST不會
5. 最大的區別在于GET請求會將HTTP header和data一次打包發出,POST會先發送header,再發送數據,會產生兩個TCP數據包,但發送兩次數據包在網絡好的情況下差異幾乎可以不計
6. 從語義上來看,獲取數據應該用GET,提交數據應該用POST
#### 2. 三次握手和四次揮手詳細原理,為什么要使用這種機制
#### 3. 有哪些協議是可靠,TCP有哪些手段保證可靠交付
1. TCP通過以下方式來提供可靠性
2. 將數據分割為TCP認為合理的數據塊
3. 對于重復數據,能夠丟棄重復數據
4. TCP發送數據端,超時會重新發送
5. 對于收到的請求,會給出確認響應
#### 4. DNS的作用、DNS解析的詳細過程 ,DNS優化原理
#### 5. CDN的作用和原理
1. CDN作用:加速文件網絡傳輸
2. CDN原理:優化物理鏈路層傳輸過程中的光速有限、丟包等問題來提升網速,其優勢是通過各地的服務器部署, 使用戶在不同的地方訪問可以從就近的CDN服務器上獲取資源,速度比不同的地方都從同一個地方獲取速度會快很多
#### 6. HTTP請求報文和響應報文的具體組成,能理解常見請求頭的含義,有幾種請求方式,區別是什么
#### 7. HTTP所有狀態碼的具體含義,看到異常狀態友能快速定位問題
#### 8. HTTP1.1、HTTP2.0帶來的改變
2. --- HTTP2.0 ---
1. 二進制分幀:在應用層(HTTP)和傳輸層(TCP)之間增加一個二進制分幀層
2. 首部壓縮
3. 流量控制
4. 多路復用
5. 請求優先級
6. 服務器推送
#### 9. HTTPS的加密原理,如何開啟HTTPS,如何劫持HTTPS請求
#### 10. 理解WebSocket協議的底層原理、與HTTP的區別
#### 11. HTTP緩存
1. HTTP緩存分為:強制緩存以及協商緩存,強制緩存優先級高,當未并中強制緩存時,才會進行協商緩存
2. 強制緩存的實現:從expires到現在的cache-control,expires是向下兼容方案,因為客戶端時間可能更改
3. cache-control: maxage=315000 是設定緩存時間,在這個時間段內都有效,s-maxage只在代理服務器中生效
4. public 與 private:這兩個都是針對代理服務器的設置,private使該資源只能被瀏覽器緩存,public使資源在瀏覽器與代理服務器均能進行緩存,private是默認值
5. no-cache與no-store:no-cache請求資源時不會進行瀏覽器緩存查詢,會直接向服務器確認資源是否過期,no-store不使用緩存,每次重新加載請求
6. 協商緩存:HTTP響應為 304 Not Modified,服務器提示資源緩存未改動,資源會被重定向到瀏覽器緩存
7. 服務器響應頭添加:Last-Modified,瀏覽器請求頭添加:If-Modified-Since為響應頭的值,服務器拿到這個時間戳與資源在服務器的改動時間進行比較,這種方式存在兩個弊端:文件編輯但未修改內容,也會重新請求,文件修改時間過短,反而沒有重新進行請求
8. Etag是為資源添加唯一的標識符,優先級大于Last-Modified,但Etag的生成會耗費服務器一定的性能