1. 程式人生 > >HTTP協議與SSL協議基礎理論分析

HTTP協議與SSL協議基礎理論分析

一、HTTP協議基礎理論分析
1.HT (Hyper Text超文字):包含有超連結(Link)和各種多媒體元素標記(Markup)的文字。這些超文字檔案彼此連結,形成網狀(Web),因此又被稱為網頁(Web Page)。這些連結使用URL表示。最常見的超文字格式是超文字標記語言HTML。
2.URL(Uniform Resource Locator統一資源定位符):唯一地標識全球資訊網中的某一個文件。URL由協議、主機和埠(預設為80)以及檔名三部分構成。例如:
Http://www.baidu.com:80/news/zhang.html
協議:// 主機:埠號(80) / 檔名及其路徑
3. HTTP(Hyper Text Transfer Protocol超文字傳輸協議)

: 是一種按照URL指示,將超文字文件從一臺主機(Web伺服器)傳輸到另一臺主機(瀏覽器)的應用層協議,以實現超連結的功能,即就是一個文本里包含了跳轉到其他文字的超連結。
4.HTTP的工作原理:
在這裡插入圖片描述
如圖所示,當用戶點選URL為http://www.baidu.com/zhang.html的超連結時,客戶機瀏覽器與Web伺服器間將會執行下列步驟:
1) 客戶機瀏覽器首先檢視自己瀏覽器的快取,瀏覽器看自己對這個連結是否有記錄;
2) 在瀏覽器無快取的情況下,客戶機會在自己作業系統的Host檔案中檢視是否有快取;
3) 當本地無快取的情況下瀏覽器分析超連結中的URL;
4) 瀏覽器向DNS伺服器發出請求,查詢www.baidu.com這個域名對應的IP地址;
5) DNS伺服器將解析出來的www.baidu.com對應的IP地址66.66.66.66傳送給瀏覽器;
6) 瀏覽器拿解析出來的IP地址與伺服器建立TCP的連線(埠號為80);
7) 首先瀏覽器向Web伺服器發出Http請求報文同時發出請求文件(GET/zhang.html);
8) Web伺服器向瀏覽器發出Http響應報文同時發出響應文件給瀏覽器(zhang.html);
9) 釋放TCP的連線;(因為HTTP是無狀態的協議,一個是無狀態(請求完以後就釋放掉了) 一個是無連結(每次請求跟上一次沒關係,伺服器對一個主機的上一次請求是無記憶的) 做成無狀態、無連結主要是為了伺服器方便,減輕伺服器的負荷);
10)客戶機瀏覽器上顯示zhang.html的頁面內容。
5.HTTP訪問網站簡要描述:

1)在無任何快取的情況下,先通過DNS伺服器來解析域名對應的IP地址;
2)PC的瀏覽器通過解析出來的伺服器地址與伺服器發起TCP三次握手建立TCP會話;
3)PC瀏覽器向伺服器發起頁面的請求包(瀏覽器請求包括:請求頭、請求體;GET發起請求(一般常用) / POST以表單的形式發起請求);
4)伺服器通過響應報文將PC瀏覽器請求的頁面返回給PC;
5)完成資料的互動,斷開TCP會話(TCP四次揮手斷開會話連線),同時PC瀏覽器可以瀏覽到請求的頁面。
6.談到了Http協議我們就將Session和Cookie拿出來談一談:
Session是可以儲存針對於某一個使用者的瀏覽器以及通過其當前視窗開啟的任何視窗具有針對性的使用者資訊
儲存機制。 (比如你開啟一個查詢系統 ,輸入你的使用者名稱及密碼,當你瀏覽完自己的需要的資訊後關閉瀏覽器,在一定時間內你再次的訪問查詢系統是不需要你再次輸入使用者名稱和密碼的)
具體步驟如下:
(1) 當客戶端PC的瀏覽器第一次訪問某個web站點資源時,客戶端提交沒有帶SessionID的請求(請求報文頭沒有Cookie頭域資訊)。而web伺服器會檢查是否有SessionID過來,沒有則建立SessionID,並根據web程式自身定義在請求哪個資源時新增屬於當前會話的資訊(也可為空),這個資訊列表以SessionID作為標識。然後將SessionID返回給客戶端(通過響應報文頭的Set-Cookie頭域)。
(2) 客戶端再次訪問同個web站點時,提交帶有SessionID的請求(通過Cookie頭域儲存SessionID)。由服務端判斷session是否失效,如果未失效,可查詢屬於當前會話的資訊列表。如果失效,則建立新的session(產生新的SessionID),而原先的session(包含session帶的資訊列表)則丟失,無法訪問。
為什麼Session是在一定時間是有效的?
通常大家認為,只要關閉瀏覽器,session就消失,其實這是錯誤的理解。對session來說也是一樣的,除非程式通知伺服器刪除一個session,否則伺服器會一直保留。由於關閉瀏覽器不會導致session被刪除,迫使伺服器為seesion設定了一個失效時間,當距離客戶端上一次使用session的時間超過這個失效時間時,伺服器就可以認為客戶端已經停止了活動,才會把session刪除以節省儲存空間。

Cookie(儲存在使用者本地終端上的資料即使用者的上網行為記錄): 儲存SessionID的方式可以採用Cookie(也可以採用其他的技術來儲存Session ID比如URL重寫技術),這樣在互動過程中瀏覽器可以自動的按照規則把這個SessionID發回給伺服器。
二、SSL協議基礎理論分析:

  1. SSL(Secure Sockets Layer安全套接層)為Netscape(美國網景通訊公司)所研發用以保障在Internet上資料傳輸的安全,Netscape倒閉之後將SSL捐獻給了公有組織,公有組織對其進行繼續開發,現在我們一般使用的是其繼任者TSL(Transport Layer Security傳輸層安全),用以保障網路通訊的安全性和完整性。如圖所示,是啟用SSL協議後的資料包結構:
    在這裡插入圖片描述
    2.SSL協議可用於保護正常運行於TCP之上的任何應用協議,如HTTP、FTP、SMTP(郵件協議)或Telnet的通訊,最常見的是用SSL來保護HTTP的通訊(HTTPS,埠號為443)。 SSL協議的
    優點在於它是與應用層協議無關的。高層的應用協議(如HTTP、FTP、Telnet等)能透明地建立於SSL協議之上。**SSL協議在應用層協議之前就已經完成加密演算法、通訊金鑰的協商以及伺服器的認證工作(這裡可以參考IPSEC的IKE第一階段)。在此之後應用層協議所傳送的資料都會被加密,從而保證通訊的安全性。
    3.SSL的三大功能:客戶對伺服器的身份認證(SSL伺服器允許客戶的瀏覽器使用標準的公鑰加密技術和一些可靠的認證中心(CA)的證書,來確認伺服器的合法性。)、伺服器對客戶的身份認證(可通過公鑰技術和證書進行認證,也可通過使用者名稱,password來認證。 )、建立伺服器與客戶之間安全的資料通道(SSL要求客戶與伺服器之間的所有傳送的資料都被髮送端加密、接收端解密,同時還檢查資料的完整性)。
    4.SSL協議的使用:
    一般常用的Windows作業系統之中如圖所示:
    在這裡插入圖片描述
    5.SSL協議的
    工作原理(分層的思想):
    SSL協議是一個分層的協議,共有兩層組成。處於SSL協議的
    底層的是SSL記錄層協議(SSL Record Protocol),它位於可靠的傳輸層協議(如TCP)之上,用於封裝高層協議的資料。其中SSL握手協議(SSL Handshake Protocol)允許服務方和客戶方互相認證,並在應用層協議傳送資料之前協商出一個加密演算法和會話金鑰(類似於IPSEC的第一階段)。**
    在這裡插入圖片描述
    5-1.SSL握手協議的握手過程(參考IPSEC):
    1)無客戶端認證的全握手過程:

    在這裡插入圖片描述
    如圖所示,在伺服器端不需要認證客戶端時,伺服器會主動將自己的證書(CA組織頒發的)傳送給客戶端,讓客戶端進行驗證,其中會攜帶一個隨機數,這個隨機數是用來防重放攻擊的。
    2)有客戶端認證的全握手過程:
    在這裡插入圖片描述
    如圖所示,與無客戶端認證的全握手過程相比較,當客戶端發起請求,伺服器端響應發出自己的證書供客戶端認證的同時伺服器端會向客戶端索要證書,對客戶端進行認證,客戶端在向伺服器遞交自己證書時會將自己與伺服器目前為止之前的所有握手訊息進行數字簽名也傳送給伺服器,用於認證和完整性校驗
    3)會話恢復過程:
    在這裡插入圖片描述
    4)SSL通訊的整體過程:
    在這裡插入圖片描述
    5-2.SSL記錄協議(記錄層的報文如圖所示):
    在這裡插入圖片描述
    功能: 保護傳輸資料的私密性,對資料進行加密和解密、驗證傳輸資料的完整性,計算報文的摘要、提高傳輸資料的效率,對報文進行壓縮、保證資料傳輸的可靠和有序。
    6.SSL存在的問題簡要分析:
    1)SSL預設是不會對客戶端進行認證的,因為雙方都要進行認證的話就會增加網路承載的負荷,從而導致網路效能的下降舉個例子:你用淘寶來買東西,對於你來說必須確保自己的付費操作是與真的淘寶伺服器進行操作的;而對於淘寶這邊,你的身份認證並沒有那麼的重要。
    解決方案:在必要的網路環境下開啟伺服器對於客戶端的認證。
    2)SSL協議需要在握手之前建立TCP連線,因此不能對UDP應用進行保護。如果要兼顧UDP協議層之上的安全保護,可以採用IP層的安全解決方案(例如IPSEC)。
    3)SSL只是對應用層的資料進行了加密,資料包的IP頭與TCP頭仍然是裸漏在公網之上的。
    4)除非SSL的工程實現大部分駐留在硬體中,否則主金鑰將會存留在主機的主儲存器中,這就意味著任何可以讀取SSL程序儲存空間的攻擊者都能讀取主金鑰,因此,不可能面對掌握機器管理特權的攻擊者而保護SSL連線。
    解決方案:依靠使用者管理策略來解決。
    7.SSL協議的實現(主要是通過三個協議來實現的):
    1)SSL握手協議:SSL握手協議被封裝在記錄協議中,該協議允許伺服器與客戶機在應用程式傳輸和接收資料之前互相認證、協商加密演算法和金鑰。在初次建立SSL連線時,伺服器與客戶機交換一系列訊息。
    2)SSL修改密文協議:保障SSL傳輸過程的安全性,客戶端和伺服器雙方應該每隔一段時間改變加密規範。
    3)SSL報警協議:SSL報警協議是用來為對等實體傳遞SSL的相關警告。如果在通訊過程中某一方發現任何異常,就需要給對方傳送一條警示訊息通告。