網絡協議(http/tcp/ip/socket)請求與服務

GET跟POST的區別: get只能傳送128K的數據 get方式應用來查詢信息,根據http協議,get方式查詢時,提交的查詢內容顯示在瀏覽器地址欄中,而且get方式提交的網址不超過256字節數。 而post是無限制的   post提交是不在會瀏覽器上顯示 就算你加密了別人也會解密 通常比較重要的數據經過post 傳,由於get是別人能夠改參數值的 別人亂寫參數,你的異常報個不停 post方式發送命令嚴格,複雜,須要提供提交的數據類型及長度,數據類型有2種:文本數據(ascll碼)和二進制數據。一般用來提交表單數據(提交用戶資料和長傳文件資料)。   網絡七層由下往上分別爲物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。 其中物理層、數據鏈路層和網絡層一般被稱做媒體層,是網絡工程師所研究的對象; 傳輸層、會話層、表示層和應用層則被稱做主機層,是用戶所面向和關心的內容。 http協議   對應於應用層   tcp協議    對應於傳輸層    ip協議     對應於網絡層   三者本質上沒有可比性。  況且HTTP協議是基於TCP鏈接的。   TCP/IP是傳輸層協議,主要解決數據如何在網絡中傳輸;而HTTP是應用層協議,主要解決如何包裝數據。    咱們在傳輸數據時,能夠只使用傳輸層(TCP/IP),可是那樣的話,因爲沒有應用層,便沒法識別數據內容,若是想要使傳輸的數據有意義,則必須使用應用 層協議,應用層協議不少,有HTTP、FTP、TELNET等等,也能夠本身定義應用層協議。WEB使用HTTP做傳輸層協議,以封裝HTTP文本信息, 而後使用TCP/IP作傳輸層協議將它發送到網絡上。  Socket是對TCP/IP協議的封裝,Socket自己並非協議,而是一個調用接口(API),經過Socket,咱們才能使用TCP/IP協議。   Http和Socket鏈接區別   相信很多初學手機聯網開發的朋友都想知道Http與Socket鏈接究竟有什麼區別,但願經過本身的淺顯理解能對初學者有所幫助。 一、TCP鏈接 要想明白Socket鏈接,先要明白TCP鏈接。手機可以使用聯網功能是由於手機底層實現了TCP/IP協議,可使手機終端經過無線網絡創建TCP鏈接。TCP協議能夠對上層網絡提供接口,使上層網絡數據的傳輸創建在「無差異」的網絡之上。 創建起一個TCP鏈接須要通過「三次握手」: 第一次握手:客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認; 第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態; 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。 握 手過程當中傳送的包裏不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP鏈接一旦創建,在通訊雙方中的任何一方主動關閉連 接以前,TCP 鏈接都將被一直保持下去。斷開鏈接時服務器和客戶端都可以主動發起斷開TCP鏈接的請求,斷開過程須要通過「四次握手」(過程就不細寫了,就是服務器和客 戶端交互,最終肯定斷開) 二、HTTP鏈接 HTTP協議即超文本傳送協議(Hypertext Transfer Protocol ),是Web聯網的基礎,也是手機聯網經常使用的協議之一,HTTP協議是創建在TCP協議之上的一種應用。 HTTP鏈接最顯著的特色是客戶端發送的每次請求都須要服務器回送響應,在請求結束後,會主動釋放鏈接。從創建鏈接到關閉鏈接的過程稱爲「一次鏈接」。 1)在HTTP 1.0中,客戶端的每次請求都要求創建一次單獨的鏈接,在處理完本次請求後,就自動釋放鏈接。 2)在HTTP 1.1中則能夠在一次鏈接中處理多個請求,而且多個請求能夠重疊進行,不須要等待一個請求結束後再發送下一個請求。 由 於HTTP在每次請求結束後都會主動釋放鏈接,所以HTTP鏈接是一種「短鏈接」,要保持客戶端程序的在線狀態,須要不斷地向服務器發起鏈接請求。一般的 作法是即時不須要得到任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次「保持鏈接」的請求,服務器在收到該請求後對客戶端進行回覆,代表知道客 戶端「在線」。若服務器長時間沒法收到客戶端的請求,則認爲客戶端「下線」,若客戶端長時間沒法收到服務器的回覆,則認爲網絡已經斷開。 三、SOCKET原理 3.1套接字(socket)概念 套接字(socket)是通訊的基石,是支持TCP/IP協議的網絡通訊的基本操做單元。它是網絡通訊過程當中端點的抽象表示,包含進行網絡通訊必須的五種信息:鏈接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。 應 用層經過傳輸層進行數據通訊時,TCP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP鏈接或多個應用程序進程可能須要經過同一個 TCP協議端口傳輸數據。爲了區別不一樣的應用程序進程和鏈接,許多計算機操做系統爲應用程序與TCP/IP協議交互提供了套接字(Socket)接口。應 用層能夠和傳輸層經過Socket接口,區分來自不一樣應用程序進程或網絡鏈接的通訊,實現數據傳輸的併發服務。 3.2 創建socket鏈接 創建Socket鏈接至少須要一對套接字,其中一個運行於客戶端,稱爲ClientSocket ,另外一個運行於服務器端,稱爲ServerSocket 。 套接字之間的鏈接過程分爲三個步驟:服務器監聽,客戶端請求,鏈接確認。 服務器監聽:服務器端套接字並不定位具體的客戶端套接字,而是處於等待鏈接的狀態,實時監控網絡狀態,等待客戶端的鏈接請求。 客戶端請求:指客戶端的套接字提出鏈接請求,要鏈接的目標是服務器端的套接字。爲此,客戶端的套接字必須首先描述它要鏈接的服務器的套接字,指出服務器端套接字的地址和端口號,而後就向服務器端套接字提出鏈接請求。 連 接確認:當服務器端套接字監聽到或者說接收到客戶端套接字的鏈接請求時,就響應客戶端套接字的請求,創建一個新的線程,把服務器端套接字的描述發給客戶 端,一旦客戶端確認了此描述,雙方就正式創建鏈接。而服務器端套接字繼續處於監聽狀態,繼續接收其餘客戶端套接字的鏈接請求。 四、SOCKET鏈接與TCP鏈接 建立Socket鏈接時,能夠指定使用的傳輸層協議,Socket能夠支持不一樣的傳輸層協議(TCP或UDP),當使用TCP協議進行鏈接時,該Socket鏈接就是一個TCP鏈接。 五、Socket鏈接與HTTP鏈接 由 於一般狀況下Socket鏈接就是TCP鏈接,所以Socket鏈接一旦創建,通訊雙方便可開始相互發送數據內容,直到雙方鏈接斷開。但在實際網絡應用 中,客戶端到服務器之間的通訊每每須要穿越多箇中間節點,例如路由器、網關、防火牆等,大部分防火牆默認會關閉長時間處於非活躍狀態的鏈接而致使 Socket 鏈接斷連,所以須要經過輪詢告訴網絡,該鏈接處於活躍狀態。 而HTTP鏈接使用的是「請求—響應」的方式,不只在請求時須要先創建鏈接,並且須要客戶端向服務器發出請求後,服務器端才能回覆數據。 很 多狀況下,須要服務器端主動向客戶端推送數據,保持客戶端與服務器數據的實時與同步。此時若雙方創建的是Socket鏈接,服務器就能夠直接將數據傳送給 客戶端;若雙方創建的是HTTP鏈接,則服務器須要等到客戶端發送一次請求後才能將數據傳回給客戶端,所以,客戶端定時向服務器端發送鏈接請求,不只能夠 保持在線,同時也是在「詢問」服務器是否有新的數據,若是有就將數據傳給客戶端。   HTTP鏈接   HTTP 是一個屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統。它於1990年提出,通過幾年的使用與發展,獲得不斷地完善和 擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工做正在進行之中,並且HTTP-NG(Next Generation of HTTP)的建議已經提出.(協議,算是全球定位!) WWW的核心——HTTP協議 衆所周 知,Internet的基本協議是TCP/IP協議,目前普遍採用的FTP、Archie Gopher等是創建在TCP/IP協議之上的應用層協議,不一樣的協議對應着不一樣的應用。WWW服務器使用的主要協議是HTTP協議,即超文體傳輸協議。 因爲HTTP協議支持的服務不限於WWW,還能夠是其它服務,於是HTTP協議容許用戶在統一的界面下,採用不一樣的協議訪問不一樣的服務,如FTP、 Archie、SMTP、NNTP等。另外,HTTP協議還可用於名字服務器和分佈式對象管理。 2.1 HTTP協議簡介 HTTP 是一個屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統。它於1990年提出,通過幾年的使用與發展,獲得不斷地完善和 擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工做正在進行之中,並且HTTP-NG(Next Generation of HTTP)的建議已經提出。 HTTP協議的主要特色可歸納以下: 1.支持客戶/服務器模式。 2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD, POST。每種方法規定了客戶與服務器聯繫的類型不一樣。 因爲HTTP協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。 3.靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。 4.無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。 5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。 2.2 HTTP協議的幾個重要概念 1.鏈接(Connection):一個傳輸層的實際環流,它是創建在兩個相互通信的應用程序之間。 2.消息(Message):HTTP通信的基本單位,包括一個結構化的八元組序列並經過鏈接傳輸。 3.請求(Request):一個從客戶端到服務器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號 4.響應(Response):一個從服務器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。 5.資源(Resource):由URI標識的網絡數據對象或服務。 6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的自己內容。 7.客戶機(Client):一個爲發送請求目的而創建鏈接的應用程序。 8.用戶代理(User agent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。 9.服務器(Server):一個接受鏈接並對請求返回信息的應用程序。 10.源服務器(Origin server):是一個給定資源能夠在其上駐留或被建立的服務器。 11.代理(Proxy):一箇中間程序,它能夠充當一個服務器,也能夠充當一個客戶機,爲其它客戶機創建請求。請求是經過可能的翻譯在內部或通過傳遞到其它的服務器中。一個代理在發送請求信息以前,必須解釋而且若是可能重寫它。 代理常常做爲經過防火牆的客戶機端的門戶,代理還能夠做爲一個幫助應用來經過協議處理沒有被用戶代理完成的請求。 12.網關(Gateway):一個做爲其它服務器中間媒介的服務器。與代理不一樣的是,網關接受請求就好象對被請求的資源來講它就是源服務器;發出請求的客戶機並無意識到它在同網關打交道。 網關常常做爲經過防火牆的服務器端的門戶,網關還能夠做爲一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。 13. 通道(Tunnel):是做爲兩個鏈接中繼的中介程序。一旦激活,通道便被認爲不屬於HTTP通信,儘管通道多是被一個HTTP請求初始化的。當被中繼 的鏈接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通信時通道被常用。 14.緩存(Cache):反應信息的局域存儲。 2.3 HTTP協議的運做方式 HTTP 協議是基於請求/響應範式的。一個客戶機與服務器創建鏈接後,發送一個請求給服務器,請求方式的格式爲,統一資源標識符、協議版本號,後邊是MIME信息 包括請求修飾符、客戶機信息和可能的內容。服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊 是MIME信息包括服務器信息、實體信息和可能的內容。 許多HTTP通信是由一個用戶代理初始化的而且包括一個申請在源服務器上資源的請求。最簡單的狀況多是在用戶代理(UA)和源服務器(O)之間經過一個單獨的鏈接來完成(見圖2-1)。 當一個或多箇中介出如今請求/響應鏈中時,狀況就變得複雜一些。中介由三種:代理(Proxy)、網關(Gateway)和通道(Tunnel)。 一個代理根據URI的絕對格式來接受請求,重寫所有或部分消息,經過URI的標識把已格式化過的請求發送到服務器。 網關是一個接收代理,做爲一些其它服務器的上層,而且若是必須的話,能夠把請求翻譯給下層的服務器協議。 一個通道做爲不改變消息的兩個鏈接之間的中繼點。當通信須要經過一箇中介(例如:防火牆等)或者是中介不能識別消息的內容時,通道常常被使用。圖2-2 上 面的圖2-2代表了在用戶代理(UA)和源服務器(O)之間有三個中介(A,B和C)。一個經過整個鏈的請求或響應消息必須通過四個鏈接段。這個區別是重 要的,由於一些HTTP通信選擇可能應用於最近的鏈接、沒有通道的鄰居,應用於鏈的終點或應用於沿鏈的全部鏈接。儘管圖2-2是線性的,每一個參與者均可能 從事多重的、併發的通信。例如,B可能從許多客戶機接收請求而不經過A,而且/或者不經過C把請求送到A,在同時它還可能處理A的請求。 任何針對不做爲通道的匯聚可能爲處理請求啓用一個內部緩存。緩存的效果是請求/響應鏈被縮短,條件是沿鏈的參與者之一具備一個緩存的響應做用於那個請求。下圖說明結果鏈,其條件是針對一個未被UA或A加緩存的請求,B有一個通過C來自O的一個前期響應的緩存拷貝。 圖2-3 在Internet上,HTTP通信一般發生在TCP/IP鏈接之上。缺省端口是TCP 80,但其它的端口也是可用的。但這並不預示着HTTP協議在Internet或其它網絡的其它協議之上才能完成。HTTP只預示着一個可靠的傳輸。 以上簡要介紹了HTTP協議的宏觀運做方式,下面介紹一下HTTP協議的內部操做過程。 首先,簡單介紹基於HTTP協議的客戶/服務器模式的信息交換過程,如圖2-4所示,它分四個過程,創建鏈接、發送請求信息、發送響應信息、關閉鏈接。 圖2-4 在WWW中,「客戶」與「服務器」是一個相對的概念,只存在於一個特定的鏈接期間,即在某個鏈接中的客戶在另外一個鏈接中可能做爲服務器。WWW服務器運行時,一直在TCP80端口(WWW的缺省端口)監聽,等待鏈接的出現。 下面,討論HTTP協議下客戶/服務器模式中信息交換的實現。 1.創建鏈接鏈接的創建是經過申請套接字(Socket)實現的。客戶打開一個套接字並把它約束在一個端口上,若是成功,就至關於創建了一個虛擬文件。之後就能夠在該虛擬文件上寫數據並經過網絡向外傳送。 2.發送請求 打開一個鏈接後,客戶機把請求消息送到服務器的停留端口上,完成提出請求動做。 HTTP/1.0 請求消息的格式爲: 請求消息=請求行(通用信息|請求頭|實體頭) CRLF[實體內容] 請求 行=方法 請求URL HTTP版本號 CRLF 方 法=GET|HEAD|POST|擴展方法 U R L=協議名稱+宿主名+目錄與文件名 請求行中的方法描述指定資源中應該執行的動做,經常使用的方法有GET、HEAD和POST。 不一樣的請求對象對應GET的結果是不一樣的,對應關係以下: 對象 GET的結果 文件 文件的內容 程序 該程序的執行結果 數據庫查詢 查詢結果 HEAD——要求服務器查找某對象的元信息,而不是對象自己。 POST——從客戶機向服務器傳送數據,在要求服務器和CGI作進一步處理時會用到POST方法。POST主要用於發送HTML文本中FORM的內容,讓CGI程序處理。 一個請求的例子爲: GET http://networking.zju.edu.cn/zju/index.htm HTTP/1.0 頭信息又稱爲元信息,即信息的信息,利用元信息能夠實現有條件的請求或應答 。 請求頭——告訴服務器怎樣解釋本次請求,主要包括用戶能夠接受的數據類型、壓縮方法和語言等。 實體頭——實體信息類型、長度、壓縮方法、最後一次修改時間、數據有效期等。 實體——請求或應答對象自己。 3.發送響應 服務器在處理完客戶的請求以後,要向客戶機發送響應消息。 HTTP/1.0的響應消息格式以下: 響應消息=狀態行(通用信息頭|響應頭|實體頭) CRLF 〔實體內容〕 狀 態 行=HTTP版本號 狀態碼 緣由敘述 狀態碼錶示響應類型 1×× 保留 2×× 表示請求成功地接收 3×× 爲完成請求客戶需進一步細化請求 4×× 客戶錯誤 5×× 服務器錯誤 響應頭的信息包括:服務程序名,通知客戶請求的URL須要認證,請求的資源什麼時候能使用。 4.關閉鏈接 客戶和服務器雙方均可以經過關閉套接字來結束TCP/IP對話     https:   HTTPS(全 稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容 就須要SSL。它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL代表它使用了HTTP,但HTTPS存在不一樣 於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通信方法,如今它被廣 泛用於萬維網上安全敏感的通信,例如交易支付方面。   它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓 縮和解壓操做,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全套接字層(SSL)做爲HTTP應用層的子層。(HTTPS使用 端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通訊。)SSL使用40 位關鍵字做爲RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,若是須要的話用戶能夠確認發送者是誰。   也就是說它的主要做用能夠分爲兩種:一種是創建一個信息安全通道,來保證數據傳輸的安全;另外一種就是確認網站的真實性。 編輯本段HTTPS和HTTP的區別   1、https協議須要到ca申請證書,通常免費證書不多,須要交費。   2、http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議。   3、http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。   4、http的鏈接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。 編輯本段HTTPS解決的問題 1、信任主機的問題.  採用https的服務器必須從CA (Certificate Authority)申請一個用於證實服務器用途類型的證書。該證書只有用於對應的服務器的時候,客戶端纔信任此主機。因此目前全部的銀行系統網站,關鍵 部分應用都是https 的。客戶經過信任該證書,從而信任了該主機。其實這樣作效率很低,可是銀行更側重安全。這一點對咱們沒有任何意義,咱們的服務器,採用的證書無論是本身發 布的仍是從公衆的地方發佈的,其客戶端都是本身人,因此咱們也就確定信任該服務器。 2、通信過程當中的數據的泄密和被篡改   1. 通常意義上的https,就是服務器有一個證書。   a) 主要目的是保證服務器就是他聲稱的服務器,這個跟第一點同樣。   b) 服務端和客戶端之間的全部通信,都是加密的。   i. 具體講,是客戶端產生一個對稱的密鑰,經過服務器的證書來交換密鑰,即通常意義上的握手過程。   ii. 接下來全部的信息往來就都是加密的。第三方即便截獲,也沒有任何意義,由於他沒有密鑰,固然篡改也就沒有什麼意義了。   2. 少量對客戶端有要求的狀況下,會要求客戶端也必須有一個證書。   a) 這裏客戶端證書,其實就相似表示我的信息的時候,除了用戶名/密碼,還有一個CA 認證過的身份。由於我的證書通常來講是別人沒法模擬的,全部這樣可以更深的確認本身的身份。   b) 目前少數我的銀行的專業版是這種作法,具體證書多是拿U盤(即U盾)做爲一個備份的載體。 [1] 編輯本段限制 概述   它的安全保護依賴瀏覽器的正確實現以及服務器軟件、實際加密算法的支持.  一種常見的誤解是「銀行用戶在線使用https:就能充分完全保障他們的銀行卡號不被偷竊。」實際上,與服務器的加密鏈接中能保護銀行卡號的部分,只有 用戶到服務器之間的鏈接及服務器自身。並不能絕對確保服務器本身是安全的,這點甚至已被攻擊者利用,常見例子是模仿銀行域名的釣魚攻擊。少數罕見攻擊在網 站傳輸客戶數據時發生,攻擊者會嘗試竊聽傳輸中的數據。   商業網站被人們指望迅速儘早引入新的特殊處理程序到金融網關,僅保留傳輸碼(transaction number)。不過他們經常存儲銀行卡號在同一個數據庫裏。那些數據庫和服務器少數狀況有可能被未受權用戶攻擊和損害。 TLS 1.1以前   這段僅針對TLS 1.1以前的情況。由於SSL位於http的下一層,並不能理解更高層協議,一般SSL服務器僅能頒證給特定的IP/端口組合。這是指它常常不能在虛擬主機(基於域名)上與HTTP正常組合成HTTPS。   這一點已被即未來臨的TLS 1.1更新爲—種徹底支持基於域名的虛擬主機。 編輯本段SSL介紹   SSL (Secure Socket Layer)  爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程當中 不會被截取及竊聽。目前通常通用之規格爲40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。只要3.0版本以上之I.E.或Netscape瀏覽器便可支持SSL。   當前版本爲3.0。它已被普遍地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。  SSL協議位於TCP/IP協議與各類應用層協議之間,爲數據通信提供安全支持。SSL協議可分爲兩層:SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。 SSL協議提供的服務主要有哪些?   1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器   2)加密數據以防止數據中途被竊取   3)維護數據的完整性,確保數據在傳輸過程當中不被改變。 SSL協議的工做流程  服務器認證階段:1)客戶端向服務器發送一個開始信息「Hello」以便開始一個新的會話鏈接;2)服務器根據客戶的信息肯定是否須要生成新的主密鑰, 如須要則服務器在響應客戶的「Hello」信息時將包含生成主密鑰所需的信息;3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰 加密後傳給服務器;4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。 用戶認證階段   在此以前,服務器已經經過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。  從SSL 協議所提供的服務及其工做流程能夠看出,SSL協議運行的基礎是商家對消費者信息保密的承諾,這就有利於商家而不利於消費者。在電子商務初級階段,因爲運 做電子商務的企業大可能是信譽較高的大公司,所以這問題尚未充分暴露出來。但隨着電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程當中的單一認 證問題就愈來愈突出。雖然在SSL3.0中經過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證,可是SSL協議仍存在一些問題,好比,只能 提供交易中客戶與服務器間的雙方認證,在涉及多方的電子交易中,SSL協議並不能協調各方間的安全傳輸和信任關係。在這種狀況下,Visa和 MasterCard兩大信用卡公組織制定了SET協議,爲網上信用卡支付提供了全球性的標準。 編輯本段SSL協議的握手過程  爲了便於更好的認識和理解SSL 協議,這裏着重介紹SSL 協議的握手協議。SSL 協議既用到了公鑰加密技術又用到了對稱加密技術,對稱加密技術雖然比公鑰加密技術的速度快,但是公鑰加密技術提供了更好的身份認證技術。SSL 的握手協議很是有效的讓客戶和服務器之間完成相互之間的身份認證,其主要過程以下:   ①客戶端的瀏覽器向服務器傳送客戶端SSL 協議的版本號,加密算法的種類,產生的隨機數,以及其餘服務器和客戶端之間通信所須要的各類信息。   ②服務器向客戶端傳送SSL 協議的版本號,加密算法的種類,隨機數以及其餘相關信息,同時服務器還將向客戶端傳送本身的證書。  ③客戶利用服務器傳過來的信息驗證服務器的合法性,服務器的合法性包括:證書是否過時,發行服務器證書的CA 是否可靠,發行者證書的公鑰可否正確解開服務器證書的「發行者的數字簽名」,服務器證書上的域名是否和服務器的實際域名相匹配。若是合法性驗證沒有經過, 通信將斷開;若是合法性驗證經過,將繼續進行第四步。   ④用戶端隨機產生一個用於後面通信的「對稱密碼」,而後用服務器的公鑰(服務器的公鑰從步驟②中的服務器的證書中得到)對其加密,而後將加密後的「預主密碼」傳給服務器。   ⑤若是服務器要求客戶的身份認證(在握手過程當中爲可選),用戶能夠創建一個隨機數而後對其進行數據簽名,將這個含有簽名的隨機數和客戶本身的證書以及加密過的「預主密碼」一塊兒傳給服務器。  ⑥若是服務器要求客戶的身份認證,服務器必須檢驗客戶證書和簽名隨機數的合法性,具體的合法性驗證過程包括:客戶的證書使用日期是否有效,爲客戶提供證 書的CA 是否可靠,發行CA 的公鑰可否正確解開客戶證書的發行CA 的數字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗若是沒有經過,通信馬上中斷;若是驗證經過,服務器將用本身的私鑰解開加密的「預主密 碼」,而後執行一系列步驟來產生主通信密碼(客戶端也將經過一樣的方法產生相同的主通信密碼)。   ⑦服務器和客戶端用相同的主密碼即「通話密碼」,一個對稱密鑰用於SSL 協議的安全數據通信的加解密通信。同時在SSL 通信過程當中還要完成數據通信的完整性,防止數據通信中的任何變化。   ⑧客戶端向服務器端發出信息,指明後面的數據通信將使用的步驟⑦中的主密碼爲對稱密鑰,同時通知服務器客戶端的握手過程結束。   ⑨服務器向客戶端發出信息,指明後面的數據通信將使用的步驟⑦中的主密碼爲對稱密鑰,同時通知客戶端服務器端的握手過程結束。   ⑩SSL 的握手部分結束,SSL 安全通道的數據通信開始,客戶和服務器開始使用相同的對稱密鑰進行數據通信,同時進行通信完整性的檢驗。
相關文章
相關標籤/搜索