建站學(xué)院轉(zhuǎn)載 寫完了這次的網(wǎng)絡(luò)作業(yè)(基于C/S模式的網(wǎng)絡(luò)套接字編程),先總結(jié)一下
一、基礎(chǔ)知識(shí)
1.C/S模式
C/S (Client/Server,客戶機(jī)/服務(wù)器)模式又稱C/S結(jié)構(gòu),是軟件系統(tǒng)體系結(jié)構(gòu)的一種。C/S模式簡單地講就是基于企業(yè)內(nèi)部網(wǎng)絡(luò)的應(yīng)用系統(tǒng)。與 B/S(Browser/Server,瀏覽器/服務(wù)器)模式相比,C/S模式的應(yīng)用系統(tǒng)最大的好處是不依賴企業(yè)外網(wǎng)環(huán)境,即無論企業(yè)是否能夠上網(wǎng),都不影響應(yīng)用。服務(wù)器通常采用高性能的PC、工作站或小型機(jī),并采用大型數(shù)據(jù)庫系統(tǒng),如ORACLE、SYBASE、InfORMix或 SQL Server。客戶端需要安裝專用的客戶端軟件。傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級(jí)的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺(tái)電腦以上局域網(wǎng)用戶同時(shí)使用。而且代價(jià)高,效率低。
2.C/S模式的優(yōu)缺點(diǎn)
C/S結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。缺點(diǎn)主要有以下幾個(gè):
只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來越普及,這需要我們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程訪問需要專門的技術(shù),同時(shí)要對系統(tǒng)進(jìn)行專門的設(shè)計(jì)來處理分布式的數(shù)據(jù)。
客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺(tái)電腦出問題,如病毒、硬件損壞,都需要進(jìn)行安裝或維護(hù)。特別是有很多分部或?qū)Yu店的情況,不是工作量的問題,而是路程的問題。還有,系統(tǒng)軟件升級(jí)時(shí),每一臺(tái)客戶機(jī)需要重新安裝,其維護(hù)和升級(jí)成本非常高。
對客戶端的操作系統(tǒng)一般也會(huì)有限制。可能適應(yīng)于Win98, 但不能用于win2000或Windows XP。或者不適用于微軟新的操作系統(tǒng)等等,更不用說Linux、Unix等。
3.C/S模式與B/S模式比較分析
C/S模式主要由客戶應(yīng)用程序(Client)、服務(wù)器管理程序(Server)和中間件(middleware)三個(gè)部件組成。客戶應(yīng)用程序是系統(tǒng)中用戶與數(shù)據(jù)進(jìn)行交互的部件。服務(wù)器程序負(fù)責(zé)有效地管理系統(tǒng)資源,如管理一個(gè)信息數(shù)據(jù)庫,其主要工作是當(dāng)多個(gè)客戶并發(fā)地請求服務(wù)器上的相同資源時(shí),對這些資源進(jìn)行最優(yōu)化管理。中間件負(fù)責(zé)聯(lián)結(jié)客戶應(yīng)用程序與服務(wù)器管理程序,協(xié)同完成一個(gè)作業(yè),以滿足用戶查詢管理數(shù)據(jù)的要求。
B/S模式是一種以Web技術(shù)為基礎(chǔ)的新型的MIS系統(tǒng)平臺(tái)模式。把傳統(tǒng)C/S模式中的服務(wù)器部分分解為一個(gè)數(shù)據(jù)服務(wù)器與一個(gè)或多個(gè)應(yīng)用服務(wù)器(Web服務(wù)器),從而構(gòu)成一個(gè)三層結(jié)構(gòu)的客戶服務(wù)器體系。
第一層客戶機(jī)是用戶與整個(gè)系統(tǒng)的接口。客戶的應(yīng)用程序精簡到一個(gè)通用的瀏覽器軟件,如Netscape
第二層Web服務(wù)器將啟動(dòng)相應(yīng)的進(jìn)程來響應(yīng)這一請求,并動(dòng)態(tài)生成一串HTML代碼,其中嵌入處理的結(jié)果,返回給客戶機(jī)的瀏覽器。如果客戶機(jī)提交的請求包括數(shù)據(jù)的存取,Web服務(wù)器還需與數(shù)據(jù)庫服務(wù)器協(xié)同完成這一處理工作。
第三層數(shù)據(jù)庫服務(wù)器的任務(wù)類似于C/S模式,負(fù)責(zé)協(xié)調(diào)不同的Web服務(wù)器發(fā)出的SQ請求,管理數(shù)據(jù)庫。
4.套接字
應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過同一個(gè) TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字(Socket)的接口。
區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,主要有3個(gè)參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號(hào)。Socket原意是 “插座”。通過將這3個(gè)參數(shù)結(jié)合起來,與一個(gè)“插座”Socket綁定,應(yīng)用層就可以和傳輸層通過套接字接口,區(qū)分來自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。
5.套接字連接的三種方式
如何使用套接字進(jìn)行通信呢?服務(wù)器程序會(huì)首先啟動(dòng),然后它就只是等待來自客戶的請求.通常,由客戶程序發(fā)起一個(gè)連接,指向它希望連接的服務(wù)器.當(dāng)客戶發(fā)出請求時(shí),服務(wù)器可以接受這個(gè)連接,變即啟動(dòng)一個(gè)特定的服務(wù)器端套接字,通過它與客戶端套接字相連.為了支持這種操作模式. 可以使用三種不同的套接字連接:
1 : 客戶連接(Client connections)由客戶啟動(dòng),并將本地客戶套接字與遠(yuǎn)程服務(wù)器套接字相連.客戶套接字必須說明它們想連接的服務(wù)器.需要提供服務(wù)器的主機(jī)名或IP地址及其端口號(hào).
2 : 監(jiān)聽連接(Listening Connections) 是等待客戶的被動(dòng)服務(wù)器套接字連接.一旦客戶發(fā)出了新的請求,服務(wù)器就會(huì)為該特殊連接生成新的套接字,然后返回監(jiān)聽狀態(tài).監(jiān)聽服務(wù)器套接字必須說明代表其提供服務(wù)的端口嗎(事實(shí)上,客戶正是通過該端口進(jìn)行連接的).
3 : 服務(wù)器連接是由服務(wù)器激活的連接,負(fù)責(zé)接受來自客戶的請求.
6.
流式套接字(SOCK_STREAM)
提供了一個(gè)面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無差錯(cuò)、無重復(fù)地發(fā)送,且按發(fā)送順序接收。內(nèi)設(shè)流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看作是字節(jié)流,無長度限制。文件傳送協(xié)議(FTP)即使用流式套接字。
數(shù)據(jù)報(bào)式套接字(SOCK_DGRAM)
提供了一個(gè)無連接服務(wù)。數(shù)據(jù)包以獨(dú)立包形式被發(fā)送,不提供無錯(cuò)保證,
數(shù)據(jù)可能丟失或重復(fù),并且接收順序混亂。網(wǎng)絡(luò)文件系統(tǒng)(NFS)使用數(shù)據(jù)報(bào)式套接字。
原始式套接字(SOCK_RAW)