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 要更耗費伺服器資源