劉曉天
(鹽城工業(yè)職業(yè)技術(shù)學(xué)院 江蘇 鹽城 224005)
基于TCP協(xié)議的網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)與開發(fā)
劉曉天
(鹽城工業(yè)職業(yè)技術(shù)學(xué)院 江蘇 鹽城 224005)
進(jìn)入互聯(lián)網(wǎng)信息時(shí)代以后,基于TCP/IP協(xié)議的網(wǎng)絡(luò)應(yīng)用不斷增加,且在各個(gè)領(lǐng)域都得到了廣泛普及及高速發(fā)展。本文希望利用基于TCP/IP協(xié)議所提供的Socket套接字編程接口來構(gòu)建一套遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng),主要分析它的控制端與被控制端設(shè)計(jì)開發(fā)流程。
TCP協(xié)議;網(wǎng)絡(luò)應(yīng)用;遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng);Socket編程;控制端;設(shè)計(jì)
目前的遠(yuǎn)程控制系統(tǒng)一般都基于TCP/IP協(xié)議,面向?qū)ο蠹夹g(shù)實(shí)施編程,而在網(wǎng)絡(luò)通信部分則多采用面向連接的傳輸協(xié)議,通過控制端與被控制端來實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)連接的主動(dòng)請(qǐng)求。在這里,控制端與被控制端是基于自定義協(xié)議命令來完成通信過程的。它不但能實(shí)現(xiàn)控制端與被控制端之間的協(xié)議命令有效轉(zhuǎn)化和發(fā)送,也能讓被控制端則通過解析協(xié)議命令來執(zhí)行相關(guān)操作,實(shí)現(xiàn)遠(yuǎn)程控制目的。
遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)是目前比較先進(jìn)的網(wǎng)絡(luò)應(yīng)用技術(shù)體系,它涉及諸多技術(shù)領(lǐng)域環(huán)節(jié),例如TCP/IP網(wǎng)絡(luò)協(xié)議、遠(yuǎn)程控制網(wǎng)絡(luò)B/S、C/S體系結(jié)構(gòu)以及Socket基本套接字函數(shù)調(diào)用技術(shù)等等。下文將對(duì)這些技術(shù)理論作出簡(jiǎn)單解析。
TCP/IP協(xié)議(Transmission Control Protocol/Internet Protocol)即傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議。它們也是目前網(wǎng)絡(luò)協(xié)議中的基礎(chǔ),其中TCP負(fù)責(zé)傳輸層協(xié)議,IP負(fù)責(zé)網(wǎng)絡(luò)層協(xié)議,它們也是架構(gòu)遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)的關(guān)鍵。TCP/IP協(xié)議主要包含了網(wǎng)絡(luò)層、傳輸層、鏈路層以及應(yīng)用層。以TCP協(xié)議為例,它能為遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)提供可靠且面向多元化連接的傳輸控制協(xié)議,為數(shù)據(jù)傳輸建立先期邏輯聯(lián)系,再展開數(shù)據(jù)傳輸工作,最后釋放連接。換言之,TCP所提供的是面向連接的高安全屬性的全雙工通信字節(jié)流服務(wù)。
遠(yuǎn)程控制網(wǎng)絡(luò)體系與Internet互聯(lián)網(wǎng)實(shí)現(xiàn)對(duì)控制端、被控制端雙方的同步監(jiān)控。它主要基于互聯(lián)網(wǎng)通信能力來將服務(wù)器端的數(shù)據(jù)傳輸?shù)奖豢刂贫耍蛻舳艘材軓耐ㄐ啪W(wǎng)絡(luò)上獲取來自于被控制端的數(shù)據(jù)信息反饋,這就構(gòu)成了遠(yuǎn)程控制的互動(dòng)循環(huán)結(jié)構(gòu)。
在這套互動(dòng)循環(huán)結(jié)構(gòu)中,存在C/S服務(wù)器模式與B/S瀏覽器模式,它們都以Web技術(shù)作為基礎(chǔ),可以實(shí)現(xiàn)對(duì)遠(yuǎn)程控制網(wǎng)絡(luò)功能的有效改善。例如C/S(Client/Server)模式就基于服務(wù)端及客戶端結(jié)構(gòu)展開,它能夠?qū)⑷蝿?wù)合理分配到客戶端及服務(wù)端,降低系統(tǒng)通訊支出成本。而B/S體系結(jié)構(gòu)則分為功能層、數(shù)據(jù)層和表現(xiàn)層3層,它們都要通過Web瀏覽器來實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)交互及瀏覽請(qǐng)求,同時(shí)也能夠?qū)?shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢與修改。
Socket編程套接字在網(wǎng)絡(luò)中主要運(yùn)用API接口構(gòu)成流式套接字、數(shù)據(jù)報(bào)套接字以及原始套接字3種模式,它們都能實(shí)現(xiàn)無連接通信方式、雙線數(shù)據(jù)傳輸以及網(wǎng)絡(luò)監(jiān)聽。在Socket編程的基本套接字技術(shù)中,還存在對(duì)套接字函數(shù)的調(diào)用。它所遵循的是固定的通信過程,主要基于數(shù)據(jù)報(bào)套接字來展開規(guī)范有序通信流程,它先為客戶端及服務(wù)端分別構(gòu)建一套套接字,然后創(chuàng)建商議端口,利用bind()函數(shù)實(shí)施綁定,再調(diào)用accpet()函數(shù)來進(jìn)入監(jiān)聽狀態(tài),而客戶端方面則主要通過connect ()函數(shù)來實(shí)現(xiàn)對(duì)服務(wù)端的連接請(qǐng)求。如此一來,客戶端與服務(wù)端兩方面就能夠運(yùn)用recv()函數(shù)與send()函數(shù)來實(shí)現(xiàn)數(shù)據(jù)發(fā)送接收,架構(gòu)遠(yuǎn)程通信控制網(wǎng)絡(luò)體系[1]。
基于TCP協(xié)議的遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)在設(shè)計(jì)目標(biāo)上遵循遠(yuǎn)程目標(biāo)計(jì)算機(jī)實(shí)時(shí)監(jiān)控原則,并圍繞實(shí)時(shí)監(jiān)控展開一系列操作,其中控制端相對(duì)于被控制端是隱蔽的,控制全程都不會(huì)在目標(biāo)機(jī)器上顯性存在?;谶@一系統(tǒng)設(shè)計(jì)開發(fā)的特殊性,本文將主要介紹它的系統(tǒng)體系結(jié)構(gòu)、功能、以及控制端與被控制端的主要設(shè)計(jì)方案。
實(shí)質(zhì)上,基于TCP協(xié)議的遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)就是一個(gè)以木馬技術(shù)為核心的雙向控制端,即客戶控制端與服務(wù)器被控制端的結(jié)合。前者由計(jì)算機(jī)主系統(tǒng)運(yùn)行,后者則由目標(biāo)計(jì)算機(jī)展開。而整個(gè)系統(tǒng)架構(gòu)是圍繞C/S系統(tǒng)結(jié)構(gòu)展開工作模式的。為了確??刂贫伺c被控制端的安全穩(wěn)定通信,本文所架構(gòu)的遠(yuǎn)程網(wǎng)絡(luò)控制體系環(huán)境要滿足以下兩種情況。
第一,控制端與被控制端二者在該體系結(jié)構(gòu)中一定要擁有相互獨(dú)立的IP地址。
第二,其中被控制端所依附的是獨(dú)立外網(wǎng)IP,它主要通過NAT轉(zhuǎn)換來實(shí)現(xiàn)控制端、被控制端雙方的相互訪問,形成局域網(wǎng)結(jié)構(gòu)。
依據(jù)上兩種情況來看,傳統(tǒng)C/S架構(gòu)的木馬軟件在遠(yuǎn)程控制中所能發(fā)揮的作用不大,尤其是對(duì)網(wǎng)絡(luò)架構(gòu)內(nèi)部控制力不足。所以應(yīng)該采用反彈連接方法,以被控制端主動(dòng)向控制端發(fā)出連接請(qǐng)求,進(jìn)而躲避防火墻的攔截。它基于木馬原理來設(shè)計(jì),其中控制端向被控制端發(fā)送操作命令,被控制端則解析處理命令,并把處理結(jié)果反饋給控制端,這樣就形成遠(yuǎn)程控制系統(tǒng)中的互動(dòng)連接[2]。
在TCP協(xié)議下的網(wǎng)絡(luò)遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng),它的運(yùn)作目標(biāo)就是通過躲避防火墻攔截來實(shí)現(xiàn)對(duì)被控制端設(shè)備的常規(guī)化運(yùn)行,與此同時(shí)第一時(shí)間接收來自于被控制端所發(fā)送來的所有指令。如果從系統(tǒng)功能角度來分析,這其中就包括控制端口號(hào)設(shè)置、反向連接反饋、文件管理、開關(guān)機(jī)等等操作。以反彈連接為例,它對(duì)系統(tǒng)結(jié)構(gòu)要求恰好與C/S結(jié)構(gòu)相反,這里將服務(wù)器設(shè)置在控制端,基于監(jiān)聽設(shè)備來創(chuàng)建端口,這樣做就能同時(shí)接收到控制端與被控制端兩方面的通信連接請(qǐng)求,最終促成信息通信交互循環(huán),實(shí)現(xiàn)對(duì)防火墻攔截的有效規(guī)避。
3.1.1 控制端功能概述
控制端可以實(shí)現(xiàn)對(duì)多個(gè)遠(yuǎn)程被控制端設(shè)備的同時(shí)控制,所以它所采用的工作機(jī)制是多線程的,而且消息處理機(jī)制也相當(dāng)完善。它主要能實(shí)現(xiàn)以下5大功能:其一,第一時(shí)間處理能力與多控制端銜接能力;其二,對(duì)被控制端所請(qǐng)求消息進(jìn)行處理;其三,本地文件讀寫功能;其四,能夠隨時(shí)查看被控制端信息的交互功能;其五,擁有人性化、智能化的UI界面。
3.1.2 控制端具體設(shè)計(jì)方案
控制端的具體設(shè)計(jì)方案是依據(jù)C/S體系和木馬原理特點(diǎn)共同完成的,同時(shí)也加入了反彈連接技術(shù)。其工作流程就是控制通過對(duì)端口進(jìn)行監(jiān)聽進(jìn)而來實(shí)現(xiàn)對(duì)被控制端所發(fā)送連接請(qǐng)求的控制,與被控制端形成有效的通信連接。按照控制端的功能來看,它主要由3個(gè)模塊共同組成:TCP連接模塊、文件讀寫模塊以及消息解析模塊。就以TCP連接模塊設(shè)計(jì)為例,它的功能是負(fù)責(zé)對(duì)服務(wù)端信息的初始化處理及端口監(jiān)聽工作,同時(shí)它也能建立多項(xiàng)連接發(fā)送和接收一切來自于控制端與被控制端的消息。它的具體設(shè)計(jì)方案流程總共分6步驟完成。
步驟一:調(diào)用WSAStartup()函數(shù)對(duì)系統(tǒng)模塊進(jìn)行初始化處理。
步驟二:調(diào)用Socket()創(chuàng)建流式套接字程序,并返回接字號(hào)。
步驟三:調(diào)用bind()函數(shù)使套接字能夠與本地地址簇結(jié)構(gòu)實(shí)現(xiàn)關(guān)聯(lián)。
步驟四:調(diào)用listen()函數(shù)確保套接字狀態(tài)能夠轉(zhuǎn)入監(jiān)聽模式,以準(zhǔn)備建立連接。
步驟五:調(diào)用accept()函數(shù)來接收和建立連接,在獲得連接請(qǐng)求方許可以后接收套接字信息。
步驟六:最后調(diào)用closesocket()函數(shù)與WSACleanup()函數(shù)來實(shí)施資源釋放,然后結(jié)束整個(gè)設(shè)計(jì)流程。
3.1.3 控制端的應(yīng)用設(shè)計(jì)實(shí)現(xiàn)
控制端應(yīng)用設(shè)計(jì)實(shí)現(xiàn)主要基于通信協(xié)議完成,換言之,就是通信各方實(shí)體或服務(wù)在事前約定的通信規(guī)則環(huán)境下,實(shí)現(xiàn)計(jì)算機(jī)與網(wǎng)絡(luò)連接的一切標(biāo)準(zhǔn),在達(dá)成通信協(xié)議的基礎(chǔ)上完成通信過程。還以TCP連接模塊為例,它的控制端要對(duì)被控制端上下線進(jìn)行時(shí)刻監(jiān)聽,這里采用到了多線程技術(shù),實(shí)際就是為系統(tǒng)創(chuàng)建一個(gè)基于遠(yuǎn)程線程的可利用函數(shù)CreateThread,它的函數(shù)原型為:
LPVOIFD 1pParameter.
DWORD dwCreationFlags.
LPDWORD 1pThreadId);
在上述函數(shù)原型中,1pThreadAttributes作為一個(gè)重要的指向型安全指針出現(xiàn),它基于NULL指數(shù)默認(rèn)特性為安全。而參數(shù)dwStackSize則作為初始棧出現(xiàn),將其設(shè)置為0?;谏鲜鰠?shù),再設(shè)置對(duì)話框初始函數(shù)OnInitDialog,配合代碼實(shí)現(xiàn)遠(yuǎn)程監(jiān)聽線程函數(shù)創(chuàng)建:
HANDLEhThread=CreateThread(NULL,0,ServerThread,NULL,0,NULL)。
CloseHandle(hThread)
在上述線程函數(shù)中,ServerThread就作為監(jiān)聽函數(shù)出現(xiàn),它主要基于Socket函數(shù)來創(chuàng)建監(jiān)聽用套接字,并在系統(tǒng)所制定的套接字通信范圍內(nèi)進(jìn)行Internet域的建立,配合SOCK_STTEAM流式套接字類型來兌現(xiàn)TCP協(xié)議,并調(diào)用bind函數(shù)實(shí)現(xiàn)與本地地址簇的相互綁定。以下為它的部分設(shè)計(jì)代碼:
Listen(m_socket,5);
SOCKET sock;
While(TRUE){sock=accept(pclientdlg-〉m_socket,(SOCKADDR*)&addrclient,&len);}
在上述的ServerThread函數(shù)中,利用while循環(huán)來兌現(xiàn)多用戶上下線監(jiān)聽功能,即實(shí)現(xiàn)對(duì)基于TCP協(xié)議的遠(yuǎn)程網(wǎng)絡(luò)通信控制系統(tǒng)的建立。
3.2.1 被控制端功能概述
在遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)中,被控端主要用于執(zhí)行命令,實(shí)現(xiàn)與控制端之間的文件傳輸。為了保護(hù)信息數(shù)據(jù)安全,被控制端的隱蔽性往往較強(qiáng),它擁有自啟動(dòng)、自動(dòng)連接、關(guān)閉被控端PC、抓屏、隱藏等功能。
3.2.2 被控制端具體設(shè)計(jì)方案
在本設(shè)計(jì)中將被控制端理解為一個(gè)通過定時(shí)器不斷向控制端發(fā)出連接請(qǐng)求的設(shè)備,在控制端驗(yàn)證通過后,兩端才能建立通信連接。在這里存在實(shí)現(xiàn)兩端相互交流的通信協(xié)議解析命令,在調(diào)用相應(yīng)處理函數(shù)基礎(chǔ)上,實(shí)現(xiàn)對(duì)被控制端的設(shè)計(jì)流程:
對(duì)控制端建立Socket連接→連接控制端與被控制端→調(diào)用recv()接收控制端消息→解析消息同時(shí)調(diào)用相關(guān)處理函數(shù)→選擇是否下線。
在整個(gè)設(shè)計(jì)流程中,TCP連接模塊輔助控制端構(gòu)建Socket套接字編程接口連接,連接控制端之間的信息數(shù)據(jù)溝通與文件傳輸?shù)冗h(yuǎn)程互動(dòng)工作,并有針對(duì)性的解析出來自于被控制端消息模塊所傳送的控制命令,最后再調(diào)用相應(yīng)功能模塊進(jìn)行功能反饋,完成與控制端之間的相互信息轉(zhuǎn)換[3]。
本文基于TCP協(xié)議實(shí)現(xiàn)了對(duì)遠(yuǎn)程網(wǎng)絡(luò)控制系統(tǒng)的構(gòu)建,分別解析了它的控制端與被控制端具體功能與設(shè)計(jì)流程,達(dá)到了兩端雙向的訪問協(xié)助功能效果。可以說,遠(yuǎn)程控制系統(tǒng)高效且便捷,已經(jīng)越來越被人們所重視,它的技術(shù)力也將在未來的研究與進(jìn)化中得到充實(shí),被更多領(lǐng)域所廣泛應(yīng)用。
[1]華蕊.一種基于無線傳感器網(wǎng)絡(luò)應(yīng)用的輕便TCP/IP協(xié)議棧設(shè)計(jì)[D].北京交通大學(xué),2011:14-23.
[2]雒海東.基于TCP/TP協(xié)議下的網(wǎng)絡(luò)通信的應(yīng)用開發(fā)[J].青海電力,2007,26(3): 60-63.
[3]李丙林.基于TCP/IP協(xié)議的遠(yuǎn)程控制系統(tǒng)的研究[D].長(zhǎng)春工業(yè)大學(xué),2005:21-39.
TP3-0
A
2095-7327(2017)-08-0157-02
課題項(xiàng)目:江蘇省現(xiàn)代教育技術(shù)研究2015年度課題(2015-R-41328)。
劉曉天(1981.7—),女,漢族,江蘇濱海人,本科學(xué)歷,鹽城工業(yè)職業(yè)技術(shù)學(xué)院講師,主要從事模式識(shí)別、計(jì)算機(jī)網(wǎng)絡(luò)研究。
山東農(nóng)業(yè)工程學(xué)院學(xué)報(bào)2017年8期