一、常見的HTTP方法有哪些?css
- GET: 用於請求訪問已經被URI(統一資源標識符)識別的資源,能夠經過URL傳參給服務器
- POST:用於傳輸信息給服務器,主要功能與GET方法相似,但通常推薦使用POST方式。
- PUT: 傳輸文件,報文主體中包含文件內容,保存到對應URI位置。
- HEAD: 得到報文首部,與GET方法相似,只是不返回報文主體,通常用於驗證URI是否有效。
- DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
- OPTIONS:查詢相應URI支持的HTTP方法
二、HTTP與HTTPS的區別:html
- HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭
- HTTP 是不安全的,而 HTTPS 是安全的
- HTTP 標準端口是80 ,而 HTTPS 的標準端口是443
- 在OSI 網絡模型中,HTTP工做於應用層,而HTTPS 的安全傳輸機制工做在傳輸層
- HTTP 沒法加密,而HTTPS 對傳輸的數據進行加密
- HTTP無需證書,而HTTPS 須要CA機構wosign的頒發的SSL證書
三、常見的HTTP狀態碼:算法
- 200:請求被正常處理
- 204:請求被受理但沒有資源能夠返回
- 206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中經過Content-Range指定範圍的資源。
- 301:永久性重定向
- 302:臨時重定向
- 303:與302狀態碼有類似功能,只是它但願客戶端在請求一個URI的時候,能經過GET方法重定向到另外一個URI上
- 304:發送附帶條件的請求時,條件不知足時返回,與重定向無關
- 307:臨時重定向,與302相似,只是強制要求使用POST方法
- 400:請求報文語法有誤,服務器沒法識別
- 401:請求須要認證
- 403:請求的對應資源禁止被訪問
- 404:服務器沒法找到對應資源
- 500:服務器內部錯誤
- 503:服務器超過最大負荷
四、一次完整的HTTP事務是怎樣一個過程?瀏覽器
1)域名解析緩存
2) 發起TCP的3次握手安全
3) 創建TCP鏈接後發起http請求服務器
4) 服務器響應http請求,瀏覽器獲得html代碼網絡
5) 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等)負載均衡
6) 瀏覽器對頁面進行渲染呈現給用戶異步
五、HTTPS工做原理
- 1、首先HTTP請求服務端生成證書,客戶端對證書的有效期、合法性、域名是否與請求的域名一致、證書的公鑰(RSA加密)等進行校驗;
- 2、客戶端若是校驗經過後,就根據證書的公鑰的有效, 生成隨機數,隨機數使用公鑰進行加密(RSA加密);
- 3、消息體產生的後,對它的摘要進行MD5(或者SHA1)算法加密,此時就獲得了RSA簽名;
- 4、發送給服務端,此時只有服務端(RSA私鑰)能解密。
- 5、解密獲得的隨機數,再用AES加密,做爲密鑰(此時的密鑰只有客戶端和服務端知道)
六、HTTP優化方案
- TCP複用:TCP鏈接複用是將多個客戶端的HTTP請求複用到一個服務器端TCP鏈接上,而HTTP複用則是一個客戶端的多個HTTP請求經過一個TCP鏈接進行處理。前者是負載均衡設備的獨特功能;然後者是HTTP 1.1協議所支持的新功能,目前被大多數瀏覽器所支持。
- 內容緩存:將常常用到的內容進行緩存起來,那麼客戶端就能夠直接在內存中獲取相應的數據了。
- 壓縮:將文本數據進行壓縮,減小帶寬
- SSL加速(SSL Acceleration):使用SSL協議對HTTP協議進行加密,在通道內加密並加速
- TCP緩衝:經過採用TCP緩衝技術,能夠提升服務器端響應時間和處理效率,減小因爲通訊鏈路問題給服務器形成的鏈接負擔。
七、說說304緩存的原理
- 服務器首先產生ETag,服務器可在稍後使用它來判斷頁面是否已經被修改。本質上,客戶端經過將該記號傳回服務器要求服務器驗證其(客戶端)緩存
- 304是HTTP狀態碼,服務器用來標識這個文件沒修改,不返回內容,瀏覽器在接收到個狀態碼後,會使用瀏覽器已緩存的文件
- 客戶端請求一個頁面(A)。 服務器返回頁面A,並在給A加上一個ETag。 客戶端展示該頁面,並將頁面連同ETag一塊兒緩存。 客戶再次請求頁面A,並將上次請求時服務器返回的ETag一塊兒傳遞給服務器。 服務器檢查該ETag,並判斷出該頁面自上次客戶端請求以後還未被修改,直接返回響應304(未修改——Not Modified)和一個空的響應體
八、爲何HTTPS安全
- 由於網絡請求須要中間有不少的服務器路由器的轉發。中間的節點均可能篡改信息,而若是使用HTTPS,密鑰在你和終點站纔有。https之因此比http安全,是由於他利用ssl/tls協議傳輸。它包含證書,卸載,流量轉發,負載均衡,頁面適配,瀏覽器適配,refer傳遞等。保障了傳輸過程的安全性
九、關於Http 2.0 你知道多少
-
HTTP/2引入了「服務端推(server push)」的概念,它容許服務端在客戶端須要數據以前就主動地將數據發送到客戶端緩存中,從而提升性能。
-
HTTP/2提供更多的加密支持
-
HTTP/2使用多路技術,容許多個消息在一個鏈接上同時交差。
-
它增長了頭壓縮(header compression),所以即便很是小的請求,其請求和響應的header都只會佔用很小比例的帶寬
十、一個頁面從輸入 URL 到頁面加載顯示完成,這個過程當中都發生了什麼
- 01.瀏覽器查找域名對應的IP地址(DNS 查詢:瀏覽器緩存->系統緩存->路由器緩存->ISP DNS 緩存->根域名服務器)
- 02.瀏覽器向 Web 服務器發送一個 HTTP 請求(TCP三次握手)
- 03.服務器 301 重定向(從 http://example.com 重定向到 http://www.example.com)
- 04.瀏覽器跟蹤重定向地址,請求另外一個帶 www 的網址
- 05.服務器處理請求(經過路由讀取資源)
- 06.服務器返回一個 HTTP 響應(報頭中把 Content-type 設置爲 'text/html')
- 07.瀏覽器進 DOM 樹構建
- 08.瀏覽器發送請求獲取嵌在 HTML 中的資源(如圖片、音頻、視頻、CSS、JS等)
- 09.瀏覽器顯示完成頁面
- 10.瀏覽器發送異步請求
十一、TCP和UDP的區別
-
TCP(Transmission Control Protocol,傳輸控制協議)是基於鏈接的協議,也就是說,在正式收發數據前,必須和對方創建可靠的鏈接。一個TCP鏈接必需要通過三次「對話」才能創建起來
-
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非鏈接的協議,它不與對方創建鏈接,而是直接就把數據包發送過去! UDP適用於一次只傳送少許數據、對可靠性要求不高的應用環境
十二、說說網絡分層裏七層模型是哪七層
應用層:容許訪問OSI環境的手段
表示層:對數據進行翻譯、加密和壓縮
會話層:創建、管理和終止會話
傳輸層:提供端到端的可靠報文傳遞和錯誤恢復
網絡層:負責數據包從源到宿的傳遞和網際互連
物理層:經過媒介傳輸比特,肯定機械及電氣規範