网络编程知识预备(4) ——了解应用层的HTTP协议与HTTPS协议
參考:簡單了解HTTP協議與HTTPS協議
作者:丶PURSUING
發布時間: 2021-03-15 10:55:13
網址:https://blog.csdn.net/weixin_44742824/article/details/114807328?spm=1001.2014.3001.5502
編程實現人臉識別需要基于人工智能平臺,基于HTTP協議通訊,B/S模式,順便簡單了解HTTP協議相關的周邊,也是在為面試做準備。
本文為學習筆記,根據需要摘抄自下篇文章:
參考:原文地址
作者:冬冬他哥哥
目錄
- HTTP協議
- 一、http協議的特性
- 二、http協議的請求
- 請求行
- GET請求
- POST 請求(人臉識別方案)
- 兩個請求的區別
- 請求頭
- 請求主體
- 三、http協議的響應
- 響應行
- 響應頭
- 響應主體
- HTTPS協議
- 一、簡介與原理
- 二、密碼學基礎
- 明文與密文
- 密鑰
- 對稱加密(私鑰+私鑰)
- 非對稱加密(公鑰+私鑰)
- 三、HTTPS相對于HTTP優缺點
- 優點:正確率更高,安全性更強
- 缺點:效率低,成本高
- 往期文章
HTTP協議
重點了解GET請求和POST請求,以及他們的區別。
一、http協議的特性
http協議是建立在TCP/IP協議之上應用層協議,默認端口為80或者8080
http協議的的特點是無狀態,短連接
(短連接指的是不像socket服務器一樣,客戶端與服務器一直保持連接(心跳包方式實現),而是例如你在百度進行搜索,網頁數據過來后連接就斷開,直到你下次繼續搜索)
二、http協議的請求
利用抓包工具httpwatch可以獲取報文,多見于前端,后端用于分析數據傳輸過程中產生的問題。
http協議的報文傳輸的是ASCII碼,在TCP/IP協議之上,主要主要分為三部分:
請求行
瀏覽器向服務器發送的,在第一行,包含:
- 請求方式(GET請求、POST請求)
- url(網址)
- http協議版本
GET請求
例如:
請求方式是GET請求,url攜帶的參數可見,http協議版本是1.1
POST 請求(人臉識別方案)
例如:
請求方式為POST請求,url攜帶的參數不可見,協議版本是1.1
兩個請求的區別
本質區別:
GET產生一個TCP數據包;POST產生兩個TCP數據包。
-
對于GET方式的請求,瀏覽器會把http header和data一并發送出去,服務器響應200(返回數據);
-
對于POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
200是什么意思,總結起來一句話,以2開頭的為成功,以4開頭的多為失敗,如常見的404.
詳情跳轉:http協議中各個響應狀態200_301_404_500等返回值含義快速一覽
還有:
(1)url攜帶的參數是否可見:
get,url攜帶的參數可見
例如:
var url = 'http://192.168.1.40:8080/v1/sea?page=1&per_page=10' + 'search=' + escape(str)- 1
參數用&符號進行連接,被當做參數的分隔符來進行處理。上面就兩個參數。page=1,per_page=10
post,url攜帶的參數不可見
有參數,但被隱藏起來了,可以通過抓包查看這個參數。
(2)參數傳遞方式
get,通過請求行拼接url進行傳遞參數
post,通過請求主體傳輸參數
(3)緩存性
get請求是可以緩存的
post請求不可以緩存
(4)頁面后退的反應
get請求頁面后退時,不產生影響(因為有緩存)
post請求頁面后退時,會重新提交請求(沒有緩存)
(5)傳輸數據的大小
get一般傳輸數據大小不超過2k-4k(根據瀏覽器不同,限制不一樣,但相差不大)
post請求傳輸數據的大小根據php.ini 配置文件設定,也可以無限大。
(6)安全性
這個也是最不好分析的,原則上post肯定要比get安全,畢竟傳輸參數時url不可見,但也擋不住部分人閑的沒事在那抓包玩。安全性個人覺得是沒多大區別的,對傳遞的參數進行加密,其實都一樣。
請求頭
瀏覽器向服務器發送一些狀態數據,標識數據等等
一個信息一行,包括信息名:信息值,按行分隔。
例如:
User-Agent: firefox//表示發送請求的瀏覽器(請求代理端)是firefox Host: shop.100.com//表示請求的主機域名(基于域名的虛擬主機就是靠這個頭判斷的) Cookie:name=itcast//瀏覽器攜帶的cookie數據。 Content-Type: application/x-www-form-urlencoded Content-Length: 40 Connection: Keep-Alive注意,請求頭信息,需要使用一個空行結束!(目前沒搞懂)
請求主體
請求代理端向服務器端,發送的請求數據!
典型的就是POST形式發送的表單數據!
get請求,沒有請求主體部分!get數據是在請求行中的url上進行傳遞的!
三、http協議的響應
HTTP/1.1 200 ok Date: Tue,19 Nov 2013 03:08:55 GMT Server: Apache/2. 2.22 (Win32) PHP/5.3. 13 X- -Powered -By: PHP/5. 3.13 Content-Length: 16 Content- Type: text/html響應行
響應行包括:協議版本、狀態碼、狀態消息。典型的:
1xx:消息
2xx:成功
3xx:請求被重定向
4xx:瀏覽器端錯誤
5xx:服務器端錯誤
響應頭
Date:響應的時間。GMT時間!
Content-Length: 響應主體數據的長度!
Content-Type: text/html :內容類型:告知瀏覽器接下來發送的響應主體數據是什么格式!
響應主體
主要的響應數據,在瀏覽器的主體區域顯示的數據都是相應主體!(前端人員通過html和css技術實現的排版,對于C語言來說拿到的就是一段ASCII碼、一段字符串)
注意,每行,包括相應行和響應頭,都需要一個 \r\n結尾
HTTPS協議
一、簡介與原理
http協議是明文傳輸的,因此很容易被截取和解析,泄漏個人數據。https協議是在http和tcp之間多添加了一層加密SSL,進行身份驗證和數據加密。
二、密碼學基礎
明文與密文
明文: 明文指的是未被加密過的原始數據。
密文: 明文被某種加密算法加密之后,會變成密文,從而確保原始數據的安全。密文也可以被解密,得到原始的明文。
密鑰
密鑰:密鑰是一種參數,它是在明文轉換為密文或將密文轉換為明文的算法中輸入的參數。
密鑰分為對稱密鑰與非對稱密鑰,分別應用在對稱加密和非對稱加密上。
對稱加密(私鑰+私鑰)
對稱加密:對稱加密又叫做私鑰加密,即信息的發送方和接收方使用同一個密鑰去加密和解密數據。
對稱加密的特點是算法公開、加密和解密速度快,適合于對大數據量進行加密,常見的對稱加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
其加密過程如下:明文 + 加密算法 + 私鑰 => 密文
解密過程如下: 密文 + 解密算法 + 私鑰 => 明文
對稱加密中用到的密鑰叫做私鑰,私鑰表示個人私有的密鑰,即該密鑰不能被泄露。
其加密過程中的私鑰與解密過程中用到的私鑰是同一個密鑰,這也是稱加密之所以稱之為“對稱”的原因。
由于對稱加密的算法是公開的,所以一旦私鑰被泄露,那么密文就很容易被破解,所以對稱加密的缺點是密鑰安全管理困難。
非對稱加密(公鑰+私鑰)
非對稱加密:非對稱加密也叫做公鑰加密。
非對稱加密使用一對密鑰,即公鑰和私鑰,且二者成對出現。私鑰被自己保存,不能對外泄露。公鑰指的是公共的密鑰,任何人都可以獲得該密鑰。用公鑰或私鑰中的任何一個進行加密,用另一個進行解密。
(1)被公鑰加密過的密文只能被私鑰解密,過程如下:
明文 + 加密算法 + 公鑰 => 密文, 密文 + 解密算法 + 私鑰 => 明文
(2)被私鑰加密過的密文只能被公鑰解密,過程如下:
明文 + 加密算法 + 私鑰 => 密文, 密文 + 解密算法 + 公鑰 => 明文
由于加密和解密使用了兩個不同的密鑰,這就是非對稱加密“非對稱”的原因。
非對稱加密的缺點是加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
在非對稱加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(橢圓曲線加密算法)等。
這些算法不用親自去寫,已經成為一種標準,有現成的庫去調用實現即可。
三、HTTPS相對于HTTP優缺點
優點:正確率更高,安全性更強
使用 HTTPS 協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器 ;
HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網絡協議,要比 HTTP 協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性 。
HTTPS 是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本 。
缺點:效率低,成本高
相同網絡環境下,HTTPS 協議會使頁面的加載時間延長近 50%,增加 10%到 20%的耗電。
HTTPS 協議還會影響緩存,增加數據開銷和功耗 。
HTTPS 協議的安全是有范圍 中間人攻擊 偽造證書
往期文章
網絡編程知識預備(1) ——了解OSI網絡模型
網絡編程知識預備(2) ——淺顯易懂的三次握手與四次揮手
網絡編程知識預備(3) ——SOCKET、TCP、HTTP之間的區別與聯系
網絡編程知識預備(4) ——了解HTTP協議與HTTPS協議
網絡編程知識預備(5) ——libcurl庫簡介及其編程訪問百度首頁
總結
以上是生活随笔為你收集整理的网络编程知识预备(4) ——了解应用层的HTTP协议与HTTPS协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中配置数据源的4种形式 --
- 下一篇: Qt开源炫酷界面QCoolPage