TCP通信服務(wù)器設(shè)計_第1頁
TCP通信服務(wù)器設(shè)計_第2頁
TCP通信服務(wù)器設(shè)計_第3頁
TCP通信服務(wù)器設(shè)計_第4頁
TCP通信服務(wù)器設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、2基于Linux的TCP通信服務(wù)器端的實現(xiàn)2.1設(shè)計要求大家好,今天,與教研室老師商量了一下題目,覺得你們組的這個題目有點難度,而且時間比較短,用LINUX可能會比麻煩,一是它使用的vi命令比較復(fù)雜,另外編譯環(huán)境的安裝也比較麻煩費時,而我們每個老師要帶4個組沒有太多時間,這周我們又要內(nèi)審檢查考試卷子,所以現(xiàn)在更改一下設(shè)計內(nèi)容,不要求在Linux下做了,可以在windows環(huán)境下來做,多線程服務(wù)器端,用C+語言或JAVA語言。這樣都做好了,如果有時間再熟悉一下Linux環(huán)境,等以后畢業(yè)設(shè)計的時候再實現(xiàn)Linux下的服務(wù)器。不知道你們的想法如何?也不知道你們以前是否有熟悉Linux的?如有什么問題

2、請隨時跟我聯(lián)系。2.1.1設(shè)計目的在linux環(huán)境下,掌握TCP通信的服務(wù)器端實現(xiàn)方式。2.1.2基本功能要求和設(shè)計目標(biāo)(1)能夠偵聽客戶端的連接請求;(2)建立獨立的數(shù)據(jù)通信鏈路;(3)在通信兩端建立對等的通信協(xié)議;(4)完成數(shù)據(jù)包的收發(fā)與存儲;2.1.3擴展功能實現(xiàn)視頻監(jiān)控數(shù)據(jù)的采集以及控制命令的收發(fā)。2.2參考示例2.2.1案例說明(1)TCP三次握手機制為實現(xiàn)服務(wù)器端的TCP通信功能,服務(wù)器端需要能夠接受多個客戶端的通信請求,并建立多條TCP通信鏈路。TCP的連接建立叫做三次握手??蛻舳税l(fā)送一個帶SYN標(biāo)志的TCP報文到服務(wù)器。這是三次握手過程中的報文1。服務(wù)器端回應(yīng)客戶端的,這是三次

3、握手中的第2個報文,這個報文同時帶ACK標(biāo)志和SYN標(biāo)志。因此它表示對剛才客戶端SYN報文的回應(yīng);同時又標(biāo)志SYN給客戶端,詢問客戶端是否準(zhǔn)備好進行數(shù)據(jù)通訊??蛻舯仨氃俅位貞?yīng)服務(wù)段一個ACK報文,這是報文段3,如圖1。數(shù)據(jù)傳輸是在連接建立后,雙向的數(shù)據(jù)傳送就可以開始??蛻艉头?wù)器都可以在兩個方向傳送數(shù)據(jù)和確認(rèn)。圖1 TCP協(xié)議建立連接三次握手過程(2)套接字(Sockets)的概念Windows下網(wǎng)絡(luò)編程的規(guī)范Windows Sockets是Windows下得到廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。Socket又稱套接字,是進程之間通信的抽象連接點??梢酝ㄟ^一個形象的例子來理解這個概

4、念,現(xiàn)實生活中的電話是人們聯(lián)系的常用工具,雙方只要使用兩部電話機就可以交談。在計算機世界中,兩個程序就是使用Socket 進行通信的,一個Socket就好比一部電話機,兩個程序在網(wǎng)絡(luò)上通過一個雙向鏈路進行通信,這個雙向鏈路的每一端就成為一個Socket。進程之間要通信,首先要建立各自的Socket,就像要打電話一定要先有電話機一樣,打電話時每部電話機都可以說和聽。與此類似,每個Socket 也都可以進行讀寫操作,讀寫操作時分別要用到Socket中的輸入流和輸出流。建立連接后,客戶程序可以向Socket里寫入請求,然后服務(wù)器會處理這個請求,并把處理結(jié)果通過Socket送回。服務(wù)器應(yīng)用程序一般監(jiān)聽

5、一個特定端口以等待一個客戶的連接請求,當(dāng)一個連接請求到達時,客戶和服務(wù)器建立一個通信連接。在連接過程中,客戶被分配一個本地端口號并且與一個Socket連接,客戶通過寫Socket來通知服務(wù)器,通過讀Socket來獲取信息。類似地,服務(wù)器也獲取一個本地端口號,它需要一個新的端口號來監(jiān)聽原始端口上的其它連接請求。服務(wù)器也給它的本地端口連接一個Socket,讀寫來自客戶的請求。根據(jù)網(wǎng)絡(luò)通信的特征,套接字可分為兩類:流套接字和數(shù)據(jù)報套接字。流套接字流套接字提供雙向的、有序的、無重復(fù)并且無記錄邊界的數(shù)據(jù)流服務(wù),它適用于處理大量數(shù)據(jù)。網(wǎng)絡(luò)傳輸層可以將數(shù)據(jù)分散和集中到合適尺寸的數(shù)據(jù)包中。流套接字是面向連接的

6、,通信雙方進行數(shù)據(jù)交換之前,必須建立一條路徑,這樣既確定了它們之間存在的路由,又保證了雙方都是活動的、可彼此響應(yīng)的,但通信雙方之間建立一個通信信道需要很多開支。除此以外,大部分面向連接的協(xié)議為保證發(fā)送無誤,可能會需要執(zhí)行額外的計算機來驗證正確性,因此會進一步增加開支。數(shù)據(jù)報套接字?jǐn)?shù)據(jù)報套接字支持雙向的數(shù)據(jù)流,但并不保證數(shù)據(jù)傳輸?shù)目煽啃?、有序性的和無重復(fù)性。也就是說,一個從數(shù)據(jù)報套接字接收信息的進程有可能發(fā)現(xiàn)信息重復(fù),或者和發(fā)出時的順序不同的情況。此外,數(shù)據(jù)報套接字的一個重要特點是它保留了記錄邊界。對于這一特點,數(shù)據(jù)報套接口采用了與現(xiàn)在許多包交換網(wǎng)絡(luò)(例如以太網(wǎng))非常類似的模型。數(shù)據(jù)報套接字是無

7、連接的,它不保證接收端是否正在偵聽,類似于郵政服務(wù):發(fā)信人把信裝入郵箱即可,至于收件人是否能收到這封信或郵局是否能按時將信件投遞到收件人處等,發(fā)件人都不得而知。因此,數(shù)據(jù)報并不可靠,需有程序員負(fù)責(zé)管理數(shù)據(jù)報的排序和可靠性。應(yīng)用程序一般僅在同一類的套接口間通信。不過只要底層的通信協(xié)議允許,不同類型的套接口也照樣可以通信。本設(shè)計采用面向連接的TCP協(xié)議,所以使用流套接字。(3)客戶機/服務(wù)器模型TCP/IP協(xié)議應(yīng)用的主要工作模式是客戶機/服務(wù)器模式(Client/Server,簡稱C/S模式)。在兩個不同進程的通信過程中,一方發(fā)出服務(wù)請求,一方提供服務(wù),通常稱它們?yōu)椤翱蛻暨M程”和“服務(wù)進程”。顯然

8、,兩個進程之間的通信實際上是基于通信協(xié)議的進程的同步過程,服務(wù)進程作為自愿的提供者,為眾多主機上的客戶進程提供服務(wù)。服務(wù)進程要先于客戶進程開啟,在某一確定的網(wǎng)絡(luò)地址(IP地址+端口號)等待客戶進程的請求,如有請求到達,服務(wù)進程采取某種方式(并發(fā)服務(wù)或者重復(fù)服務(wù)),直到客戶進程關(guān)閉,然后服務(wù)進程繼續(xù)等待下一個請求服務(wù)的進程。服務(wù)器通常采用并發(fā)服務(wù)的方式。所謂并發(fā)服務(wù),就是服務(wù)進程在有客戶請求到來時,激活新的進程來專門為此客戶請求提供服務(wù),并在客戶終止請求后殺死該進程,與此同時,原先的進程可以繼續(xù)在原來的端口等待下一個客戶的連接。Socket編程接口為新的請求創(chuàng)建一個專門的“數(shù)據(jù)套接字”,并發(fā)服務(wù)

9、器根據(jù)該套接字創(chuàng)建專門的服務(wù)進程。并發(fā)服務(wù)的最大優(yōu)點是能及時相應(yīng)請求,雖然創(chuàng)建新進程會增加系統(tǒng)開銷。與此相對應(yīng)的是重復(fù)服務(wù),它利用“數(shù)據(jù)套接字”,在監(jiān)聽的進程上直接進行服務(wù)。需要說明的是,兩種類型的Socket(SOCK_STREAM和SOCK_DGRAM)的工作流程是不同的,分別如圖2和圖3所示。創(chuàng)建流失套接字S創(chuàng)建流失套接字S關(guān)閉套接字S,停止服務(wù)接受客戶連接,創(chuàng)建數(shù)據(jù)套接字ns利用ns和客戶進程通信,提供服務(wù)(是否激活新進程依靠服務(wù)器類型而定)關(guān)閉ns,若是并打服務(wù),還需要退出該進程將S和本地地址和端口綁定創(chuàng)建流套接字cs監(jiān)聽,等待連接請求利用cs和遠程服務(wù)器建立連接利用cs和服務(wù)器進程

10、通信,完成數(shù)據(jù)傳輸關(guān)閉套接字cs,結(jié)束TCP會話客戶機建立連接請求/應(yīng)答服務(wù)器圖2流套接字服務(wù)的工作流程示意圖創(chuàng)建數(shù)據(jù)報套接字S創(chuàng)建數(shù)據(jù)報套接字S將S和本地地址和端口綁定相應(yīng)客戶請求,完成數(shù)據(jù)傳輸關(guān)閉套接字S,停止服務(wù)創(chuàng)建流套接字cs利用cs和遠程服務(wù)器建立連接利用cs和服務(wù)器進程通信,完成數(shù)據(jù)傳輸關(guān)閉套接字cs,結(jié)束UDP會話客戶機服務(wù)器圖3數(shù)據(jù)報套接字服務(wù)的工作流程示意圖2.2.2網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(1)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用星型連接。(2)使用10/100Mbps的網(wǎng)卡。(3)軟件實現(xiàn)編程語言采用C語言,利用socket進行通信。(4)開發(fā)平臺linux。由于linux能夠提供強大的網(wǎng)絡(luò)支持,以及安

11、全特性,當(dāng)前主流服務(wù)器端都采用linux平臺構(gòu)筑。2.2.3軟件設(shè)計設(shè)計流程圖:圖4 軟件流程圖(1)建立一個用于偵聽的socket,始終在端口2000進行偵聽。(2)當(dāng)有客戶端發(fā)出鏈路請求,偵聽鏈路接受,并且建立數(shù)據(jù)鏈路,在獨立的線程進行數(shù)據(jù)通信。(3)拆分通信數(shù)據(jù)包,數(shù)據(jù)包最大長度為1KB,在每個數(shù)據(jù)包包頭的1個字節(jié),用于描述數(shù)據(jù)包的序號,循環(huán)計數(shù)。也就是說,包頭的第一個數(shù)據(jù)依次為0,1,2.255,超過255后,從0開始重新計數(shù)。(4)接收的的數(shù)據(jù),寫入文件,每個文件最大長度上限為1MB。2.2.5參考程序清單2.2.6測試方法1.使用客戶端與服務(wù)器端進行聯(lián)機,確認(rèn)收發(fā)數(shù)據(jù)正確;2.在服務(wù)器端,使用TCPDUMP截獲數(shù)據(jù)進行分析,確保數(shù)據(jù)正確。2.2.7思考與提高TCP通信是提供多

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論