首先,了解一下協議,
協議是指計算機通信網路中兩臺計算機之間進行通信所必須共同遵守的規定或規則,超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)檔案從web服務器傳送到客戶端的瀏覽器,
HTTP協議,即超文本傳輸協議(Hypertext transfer protocol),是一種詳細規定了瀏覽器和萬維網(WWW=world wide web)服務器之間互相通信的規則,通過因特網傳送萬維網檔案的資料傳送協議,
HTTP原理:HTTP是一個無狀態的協議,無狀態是指客戶機(web瀏覽器)和服務器之間不需要建立持久連接,這意味著當一個客戶端向服務器發出請求,然后服務器回傳回應(response),連接就被關閉了,HTTP遵循請求(request)/應答(response)模型,客戶機(瀏覽器)向服務器發送請求,服務器處理請求并回傳適當的應答,
傳輸流程:
地址決議:如果客戶端瀏覽器請求這個頁面:http://loaclhost:8080/index.html 從中分解出協議名、主機名、埠、物件路徑等部分,對于我們的這個地址,決議得到的結果如下:協議名:http 主機名: localhost.com 埠:8080 物件路徑:/index.html 在這一步,需要域名系統DNS決議域名localhost.com,得到主機的IP地址,
封裝HTTP請求資料包:把以上部分結合主機資訊,封裝成一個HTTP請求資料包,
封裝成TCP包并建立連接:封裝成TCP包,建立TCP連接(TCP的三次握手)
客戶機發送請求命令:請求格式:統一資源識別符號(URL),協議版本號,后邊是MIME資訊包括請求修飾符、客戶機資訊和可能的內容,
服務器回應:服務器接收到請求后,給予相應的回應資訊,其格式為一個狀態行,包括資訊的協議版本號、一個成功或錯誤的代碼,后邊是MIME資訊包括服務器資訊、物體資訊和可能的內容,
服務器關閉TCP連接:一般情況下,一旦web服務器向瀏覽器發送了請求資料,她就要關閉TCP連接,然后如果瀏覽器或服務器在其頭資訊加入了Connection:keep-alive這行代碼,TCP連接在發送后將仍然保持打開狀態,瀏覽器可以繼續通過相同的連接發送請求,保持連接節省了為每個請求建立連接所需的時間,還節約了網路帶寬,
接下來看一下HTTP的各種狀態:


HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP,簡單說就是HTTP的安全版,
因為HTTP協議的資料都是明文進行傳輸的,所以對于一些敏感資訊的傳輸就很不安全,為了安全傳輸敏感資料,即HTTP下加入了SSL層(網路安全層),對所有資料都加密后再進行傳輸,客戶端和服務器端收到加密資料后按照之前約定好的密鑰解密,其所用的埠號為443,因此加密的詳細內容請看SSL,
SSL(Secure Socket Layer)安全套接層,及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通信提供安全及資料完整性的一種安全協議,TLS和SSL在傳輸層對網路連接進行加密,
在Internet中所有的傳輸都是通過TCP/IP進行的,HTTP協議作為TCP/IP模型中應用層的協議也不例外,HTTP協議通常承載于TCP協議之上,有時也承載于TLS或SSL協議層之上,這時就成了我們常說的HTTPS,

OSI參考模型與TCP/IP的對應關系

HTTP默認的埠號為80,HTTPS的埠號為443,
瀏覽網頁是HTTP的主要應用,但是這并不代表HTTP就只能應用于網頁的瀏覽,HTTP是一種協議,只要通信的雙方都遵守這個協議,HTTP就能用,比如我們常用的QQ,迅雷這些軟體,都會使用HTTP協議(還包括其他協議),
HTTPS通信流程:
建立連接獲取證書:SSL客戶端通過TCP和服務去建立連接之后(443埠),并且在一般的TCP連接協商(握手)程序中請求證書,即客戶端發出一個訊息給服務器,這個訊息里面包含了自己可實作的演算法串列和其它一些需要的訊息,SSL的服務器端會回應一個資料包,這里面確定了這次通信所需要的演算法,然后服務器向客戶端回傳證書,(證書里面包含了服務器資訊:域名、申請證書的公司、公共密鑰),
證書驗證:客戶端在收到服務器回傳的證書后,判斷簽發這個證書的公共簽發機構,并使用這個機構的公共密鑰確認簽名是否有效,客戶端還會確保證書中列出的域名就是它正在連接的域名,
資料加密和傳輸:如果確認證書有效,那么生成對稱密鑰并使用服務器的公共密鑰進行加密,然后發送給服務器,服務器使用它的私鑰對它進行解密,這樣兩臺計算機可以開始進行對稱加密進行通信,
HTTPS通信的優點:
客戶端產生的密鑰只有客戶端和服務端能得到;加密的資料只有客戶端和服務端才能得到明文;客戶端到服務端的通信是安全的,


接下類說一下加密和解密
加密方式分為對稱加密和非對成加密
對稱加密,就是加密和解密都使用同一個密鑰,這種方式優點就是速度快,缺點就是在管理和分配密鑰時不安全,典型的對稱加密演算法有DES、AES等,

非對稱加密:非對成加密有一個密鑰對,叫做公鑰和私鑰,私鑰自己持有,公鑰可以公開的發送給使用人,使用公鑰進行加密的資訊,只有和其配對的私鑰可以解開,目前常見的非對成加密演算法是RSA,非對成加密的優點是安全,因為它不需要把私鑰暴露出去,

那在真正使用的時候,要怎樣進行資料的傳輸?
在正式的使用場景中一般都是對稱加密和非對成加密結合使用,使用非對成加密完成密鑰的傳遞,然后使用對稱加密進行資料加密和解密,HTTP傳輸在建立連接時使用的是非對成加密,一旦連接建立完成,有后續的通訊則使用了對稱加密,這樣做的好處是有利于資料傳輸效率,
HTTP與HTTPS的區別:
1)HTTP連接簡單無狀態;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證、報文的完整性的網路協議,比HTTP協議安全,采用混合加密的演算法,
2)HTTPS協議需要申請證書,一般免費證書較少,需要一定費用,
3)HTTP超文本傳輸是明文傳輸,HTTPS是具有SSL加密傳輸協議的,
4)HTTP使用80埠,HTTPS使用443埠,
5)HTTP是客戶端瀏覽器或其他程式與web服務器之間的應用層通信協議,在Internet上的web服務器上存放的都是超文本資訊,客戶機需要通過HTTP協議傳輸所要訪問的超文本資訊,
HTTPS,是以安全為目標的HTTP通信,簡單說就是HTTP的安全版,HTTPS=HTTP+SSL
HTTP的缺點:
通信內容為明文,即未加密,內容可能會被竊聽,
通信雙方的身份沒有進行驗證,可能出現偽裝身份的情況,
接受的報文完整性無法確定,可能中途被改動,
HTTPS在HTTP的基礎上增加了:通信加密、證書認證、完整性保護,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/59934.html
標籤:其他
