http和https分別是什麼?
http
中文名:超文本傳輸協議
英文名:Hyper Text Transfer Protocol
解釋:是一個簡單的請求-響應協議,它通常運行在TCP之上。它指定了客戶端可能發送給服務器什麼樣的消息以及得到什麼樣的響應。
請求和響應消息的頭以ASCII形式給出;而消息內容則具有一個類似MIME的格式。這個簡單模型是早期Web成功的有功之臣,因為它使開發和部署非常地直截了當。
http在哪一層?
HTTP是應用層協議,同其他應用層協議一樣,是為了實現某一類具體應用的協議,並由某一運行在用戶空間的應用程序來實現其功能。HTTP是一種協議規範,
這種規範記錄在文檔上,為真正通過HTTP進行通信的HTTP的實現程序。
http具體實現有哪些?
HTTP是基於B/S架構進行通信的,而HTTP的服務器端實現程序有httpd、nginx等,其客戶端的實現程序主要是Web瀏覽器,
例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客戶端的命令行工具還有elink、curl等。
Web服務是基於TCP的,因此為了能夠隨時響應客戶端的請求,Web服務器需要監聽在80/TCP端口。這樣客戶端瀏覽器和Web服務器之間就可以通過HTTP進行通信了。
http有哪些版本及特點?
http1.0(最常用),http1.1(支持長連接),http2.0(傳輸性能高)
http工作原理?
HTTP是基於客戶/服務器模式,且面向連接的。典型的HTTP事務處理有如下的過程:
1.客戶與服務器建立連接;
2.客戶向服務器提出請求;
3.服務器接受請求,並根據請求返回相應的文件作為應答;
4.客戶與服務器關閉連接。
客戶與服務器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個請求,當服務器返回本次請求的應答後便立即關閉連接,下次請求再重新建立連接。
這種一次性連接主要考慮到WWW服務器面向的是Internet中成千上萬個用戶,且只能提供有限個連接,故服務器不會讓一個連接處於等待狀態,
及時地釋放連接可以大大提高服務器的執行效率。
HTTP是一種無狀態協議,即服務器不保留與客戶交易時的任何狀態。這就大大減輕了服務器存儲負擔,從而保持較快的響應速度。HTTP是一種面向對象的協議。
允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,並允許對數據進行壓縮傳送。當用戶在一個HTML文檔中定義了一個超文本鏈後,
瀏覽器將通過TCP/IP協議與指定的服務器建立連接
http的報文格式?
HTTP報文由從客戶機到服務器的請求和從服務器到客戶機的響應構成。請求報文格式如下:
請求行 - 通用信息頭 - 請求頭 - 實體頭 - 報文主體
請求行以方法字段開始,後面分別是URL字段和HTTP協議版本字段,並以CRLF結尾。SP是分隔符。
除了在最後的CRLF序列中CF和LF是必需的之外,其他都可以不要。
請求報文示例
GET HTTP/1.1
Accept: text/plain, */*; q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie:
Host: www.baidu.com
Referer: //www.baidu.com/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
sec-ch-ua: “Google Chrome”;v=”105″, “Not)A;Brand”;v=”8″, “Chromium”;v=”105″
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: “Windows”
應答報文格式如下:
狀態行 - 通用信息頭 - 響應頭 - 實體頭 - 報文主體
狀態碼元由3位數字組成,表示請求是否被理解或被滿足。原因分析是對原文的狀態碼作簡短的描述,狀態碼用來支持自動操作,
而原因分析用來供用戶使用。客戶機無需用來檢查或顯示語法。
響應報文示例
HTTP/1.1 200 OK
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Thu, 29 Sep 2022 12:31:53 GMT
Expires: Thu, 29 Sep 2022 12:31:53 GMT
Server: BWS/1.0
Vary: Accept-Encoding
Content-Length: 78
http的狀態消息?
1** 服務已收到請求,需要請求者繼續執行操作
2** 成功
3** 重定向
4** 客戶端錯誤
400 客戶端請求語法錯誤,不能被服務端理解
403 forbidden,服務器收到請求,但是拒絕提供服務
404 not found
5** 服務端錯誤
500 服務器發生不可預期錯誤
503 服務器當前不能處理客戶端請求,一段時間後可能恢復
https
中文名:超文本傳輸安全協議
英文名:Hyper Text Transfer Protocol Secure
解釋:HTTPS 經由 HTTP 進行通信,但利用 SSL/TLS 來加密數據包。HTTPS 開發的主要目的,是提供對網站服務器的身份認證,保護交換數據的隱私與完整性
https工作流程?
1、TCP 三次同步握手
2、客戶端驗證服務器數字證書
3、DH 算法協商對稱加密算法的密鑰、hash 算法的密鑰
4、SSL 安全加密隧道協商完成
5、網頁以加密的方式傳輸,用協商的對稱加密算法和密鑰加密,保證數據機密性;用協商的hash算法進行數據完整性保護,保證數據不被篡改。
http與https的區別?
http 明文傳輸,數據都是未加密的,安全性較差,https(ssl+http) 數據傳輸過程是加密的,安全性較好。
使用 https 協議需要到 ca(certificate authority,數字證書認證機構) 申請證書,一般免費證書較少,
因而需要一定費用。證書頒發機構如:symantec、comodo、godaddy 和 globalsign 等。
http 頁面響應速度比 https快,主要是因為 http 使用 tcp 三次握手建立連接,客戶端和服務器需要交換 3 個包,而 https除了 tcp 的三個包,
還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。
http 和 https 使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,後者是 443。
https 其實就是建構在 ssl/tls 之上的 http 協議,所以, https 比 http 要更耗費服務器資源