淺析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協議是面向非連接的,面向非連接是指在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。這與手機短信非常相似,在發短信的時候,只需要輸入對方手機號就可以了,其他就不用去管了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章