1、什麼是Http協議無狀態協議?怎麼解決Http協議無狀態協議?
- 無狀態協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息
- 無狀態協議解決辦法: 通過1、Cookie ; 2、通過Session會話保存。
2、cookies機制和session機制的區別
- cookies數據保存在客戶端,session數據保存在服務器端;
- cookies可以減輕服務器壓力,但是不安全,容易進行cookies欺騙;
- session較安全,但佔用服務器資源
3、Http協議由什麼組成?
請求報文包括三部分:
- 請求行:包含請求方法,URI,HTTP版本協議
- 請求首部字段
- 請求內容實體
響應報文包含三部分:
- 狀態行:包含HTTP版本,狀態碼,狀態碼原因短語
- 響應首部字段
- 響應內容實體
4、Http協議中有哪些請求方式?
- GET:用於請求訪問已經被URI(統一資源標識符)識別的資源,可以通過URL傳參給服務器
- POST:用於傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式
- PUT:傳輸文件,報文主體中包含文件內容,保存到對應URI位置
- HEAD:獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效
- DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件
5、get和post的區別?
- GET請求在URL中傳送的參數是有長度限制的,而POST沒有。
- 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
- GET比POST更不安全,因爲參數直接暴露在URL上,所以不能用來傳遞敏感信息。
- GET產生一個TCP數據包;POST產生兩個TCP數據包。
長的說:
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);
對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
6、響應狀態碼
狀態碼分類:
- 1XX- 信息型,服務器收到請求,需要請求者繼續操作。
- 2XX- 成功型,請求成功收到,理解並處理。
- 3XX - 重定向,需要進一步的操作以完成請求。
- 4XX - 客戶端錯誤,請求包含語法錯誤或無法完成請求。
- 5XX - 服務器錯誤,服務器在處理請求的過程中發生了錯誤。
常見狀態碼:
- 200 OK - 客戶端請求成功
- 301 - 資源(網頁等)被永久轉移到其它URL
- 302 - 臨時跳轉
- 400 Bad Request - 客戶端請求有語法錯誤,不能被服務器所理解
- 401 Unauthorized - 請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
- 404 - 請求資源不存在,可能是輸入了錯誤的URL
- 500 - 服務器內部發生了不可預期的錯誤
- 503 Server Unavailable - 服務器當前不能處理客戶端的請求,一段時間後可能恢復正常。
7、http與https的區別?
總的來說: HTTPS=SSL+HTTP
- https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
- http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
- http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。(這個只是默認端口不一樣,實際上端口是可以改的)
- http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
8、Http與Https優缺點?
- 通信使用明文不加密,內容可能被竊聽,也就是被抓包分析
- 不驗證通信方身份,可能遭到僞裝
- 無法驗證報文完整性,可能被篡改
- Https就是Http加上加密處理(一般是SSL安全通信線路)+認證+完整性保護
9、HTTP優化方案
- TCP複用:TCP連接複用是將多個客戶端的HTTP請求複用到一個服務器端TCP連接上,而HTTP複用則是一個客戶端的多個HTTP請求通過一個TCP連接進行處理。前者是負載均衡設備的獨特功能;而後者是HTTP 1.1協議所支持的新功能,目前被大多數瀏覽器所支持。
- 內容緩存:將經常用到的內容進行緩存起來,那麼客戶端就可以直接在內存中獲取相應的數據了。
- 壓縮:將文本數據進行壓縮,減少帶寬
- SSL加速(SSL Acceleration):使用SSL協議對HTTP協議進行加密,在通道內加密並加速
- TCP緩衝:通過採用TCP緩衝技術,可以提高服務器端響應時間和處理效率,減少由於通信鏈路問題給服務器造成的連接負擔。
10,SSL原理
HTTPS 通過安全協議如SSL/TLS 來保證數據傳輸, SSL和TLS都是基於非對稱加密算法,而RSA算法是非對稱加密算法中的佼佼者。
RSA的公鑰和私鑰是互相對應的。RSA會生成兩個密鑰,持有者可以把任何一個用於公鑰,另一個就是私鑰。顧名思義,私鑰會被嚴密保管,除了擁有者以外禁止其他角色接觸,如在一個網站/遠程服務商內,私鑰妥善存儲在服務器端。任何被公鑰加密的東西只能被私鑰解密,反過來任何被私鑰加密的東西也只能被公鑰解密。
私鑰和密鑰疊加使用,從而達到雙方之間祕密通信,最終實現身份驗證和祕密通信。
- 私鑰加密公鑰解密,能證明“私鑰擁有者” 的唯一身份,這就是簽名。
- 公鑰加密私鑰解密,確保發送的信息,只能被“私鑰擁有者” 接收,從而實現安全傳輸