1. 程式人生 > >淺析C/S、B/S與P2P架構

淺析C/S、B/S與P2P架構

       一、C/S架構

       C/S 架構是一種典型的兩層架構,全稱是Client/Server,即客戶端/伺服器端架構,其客戶端包含一個或多個在使用者的電腦上執行的程式,而伺服器端有兩種,一種是資料庫伺服器端,客戶端通過資料庫連線訪問伺服器端的資料;另一種是Socket伺服器端,伺服器端的程式通過Socket與客戶端的程式通訊。

       比如:微信/客戶端QQ等是基於C/S架構。

       二、B/S架構

       B/S架構的全稱為Browser/Server,即瀏覽器/伺服器架構。Browser指的是Web瀏覽器,極少數事務邏輯在前端實現,但主要事務邏輯在伺服器端實現,Browser客戶端,WebApp伺服器端和DB端構成所謂的三層架構。B/S架構的系統無須特別安裝,只要有Web瀏覽器即可。

       比如:IE瀏覽器/WEB端QQ等是基於B/S架構的。

       注:客戶端QQ是基於C/S架構的,C-客戶端:即下載好的QQ客戶端,可以在本地處理一些自主問題而無需經過伺服器的處理,S-伺服器端:即你與其他人聊天時,你的聊天記錄經過伺服器的指定傳送給對方,然後才能開始愉快的聊天。C/S需要用指定的工具(比如客戶端),而B/S用瀏覽器進行網頁操作就可以了,不需要下載指定登陸工具。

       三、P2P架構

       P2P是英文Peer-to-Peer(對等)的簡稱,又被稱為“點對點“。“對等”技術,是一種網路新技術,依賴網路中參與者的計算能力和頻寬,而不是把依賴都聚集在較少的幾臺伺服器上。

       P2P還是英文Point to Point (點對點)的簡稱。它是下載術語,意思是在你自己下載的同時,自己的電腦還要繼續做主機上傳,這種下載方式,人越多速度越快但缺點是對硬碟損傷比較大(在寫的同時還要讀),還有對記憶體佔用較多,影響整機速度。

       P2P架構的核心思想是每個節點既可以充當客戶端(Client),又可以充當伺服器端(Server)。

       比如:BT/電驢下載,非法傳播視訊的網站等,因為每個結點既是客戶端可以進行下載,又是伺服器端可以繼續上傳資源以提供下載服務給其他人,所以找不到真正的Server,打擊非法網站也就難上加難了,所以P2P架構就是一種”我為人人,人人為我“的資源共享思想。如果是C/S架構,比如HTTP協議,只需單點攻擊Server,整個C/S架構就失去了最核心的伺服器端部分,基於C/S架構的通訊也就被攻破了。

       四、雜談:通過Socket通訊看TCP與UDP的面向連線/面向非連線

       Socket通訊採用了TCP/IP協議,在TCP/IP網路應用中,通訊的兩個程序間相互作用的主要模式是客戶端/伺服器端模式,即客戶端向伺服器端發出服務請求,伺服器端接收到請求後,提供相應服務。客戶端/伺服器端模式的建立基於以下兩點:首先,建立網路的起因是網路中軟硬體資源、運算能力和資訊不均等,需要共享,從而造就擁有眾多資源的主機提供服務,資源較少的客戶端請求服務這一非對等作用。其次,網間程序通訊完全是非同步的,相互通訊的程序間既不存在父子關係,又不共享記憶體緩衝區,因此需要一種機制為希望通訊的程序間建立關係,為二者的資料交換提供同步,這就是基於客戶端/伺服器端模式的TCP/IP。

       Socket的通訊過程如下圖所示:

       image

       Socket通訊是基於TCP/IP通訊協議進行通訊的,TCP是面向連線的,所謂的面向連線是指在正式通訊之前必須要與對方建立起連線。比如你給別人打電話,必須等線路接通了,對方拿起話筒才能相互通話。

       所以基於TCP/IP協議的Socket通訊在上圖中客戶端有connect()請求連線,伺服器端有listen()監聽埠和accept()接受連線。如果是UDP協議,那麼就不會有connet(),listen(),accept()這三個步驟了,因為UDP協議是面向非連線的,面向非連線是指在正式通訊前不必與對方先建立連線,不管對方狀態就直接傳送。這與手機簡訊非常相似,在發簡訊的時候,只需要輸入對方手機號就可以了,其他就不用去管了。