肇宇飛(長(zhǎng)安大學(xué),西安 710021)
基于TCP協(xié)議的局域網(wǎng)通信程序的設(shè)計(jì)
肇宇飛
(長(zhǎng)安大學(xué),西安710021)
摘要:本文設(shè)計(jì)并實(shí)現(xiàn)了基于TCP協(xié)議的局域網(wǎng)簡(jiǎn)單即時(shí)通信系統(tǒng),設(shè)計(jì)主要應(yīng)用C/S模式,運(yùn)用SOCKET套接字接口實(shí)現(xiàn)底層通信,并發(fā)送和接受TCP數(shù)據(jù)包、模擬Ethernet幀的發(fā)送過(guò)程。本通信系統(tǒng)實(shí)現(xiàn)了基本通信功能,包括客戶端登陸驗(yàn)證、向好友發(fā)送文字信息和圖片信息以及好友信息的保存。好友間實(shí)現(xiàn)文件傳輸和消息傳遞是運(yùn)用P2P方式。本文先從系統(tǒng)設(shè)計(jì)的背景意義及需求分析入手,主要介紹了發(fā)送和接受TCP數(shù)據(jù)包設(shè)計(jì)思想和模擬Ethernet幀的發(fā)送過(guò)程設(shè)計(jì)思想并闡述了套接字和多線程執(zhí)行任務(wù)等。
關(guān)鍵詞:套接字;模擬Ethernet幀發(fā)送過(guò)程;C/S模式;TCP協(xié)議;文件傳輸
1.1開(kāi)發(fā)背景及意義
進(jìn)入21世紀(jì),隨著IT技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)時(shí)代隨之到來(lái),它將人們生活中原本互不聯(lián)系的各個(gè)模塊編織到一起,給人們的生產(chǎn)生活帶來(lái)了極大的方便。例如,現(xiàn)如今的微信、騰訊QQ、MSN等基于網(wǎng)絡(luò)的即時(shí)聊天軟件已經(jīng)逐步取代了人們傳統(tǒng)的通信方式,對(duì)比傳統(tǒng)媒介,此類(lèi)聊天軟件具有操作簡(jiǎn)單、經(jīng)濟(jì)實(shí)用、實(shí)時(shí)性強(qiáng)、能存儲(chǔ)大量數(shù)據(jù)等優(yōu)點(diǎn)。除此之外,即時(shí)聊天軟件還具有其他傳統(tǒng)通信方式不具備的特殊功能,它們除文字外還能傳送圖片、影像、文件和聲音,而且還具有許多人性化的設(shè)計(jì),例如個(gè)人空間和顯示好友狀態(tài)等。
1.2需求分析
當(dāng)今社會(huì)正處于信息技術(shù)飛速發(fā)展的時(shí)代,在此時(shí)代背景下,通信網(wǎng)絡(luò)和計(jì)算機(jī)是信息交互的基礎(chǔ)設(shè)施。在網(wǎng)絡(luò)十分普及的今天,通過(guò)網(wǎng)絡(luò)交友、通信是大多數(shù)人的首選。局域網(wǎng)通信系統(tǒng)是現(xiàn)今網(wǎng)上最簡(jiǎn)單的點(diǎn)對(duì)多點(diǎn)通信系統(tǒng)。一個(gè)簡(jiǎn)單的聊天軟件,對(duì)于程序員來(lái)說(shuō)就是在許多端點(diǎn)間實(shí)現(xiàn)點(diǎn)對(duì)多點(diǎn)的通信?;赥CΡ協(xié)議的局域網(wǎng)通信是一個(gè)方便實(shí)現(xiàn)的、靈活的、低投入的方法。它可以在多種基于TCΡ協(xié)議的通信網(wǎng)絡(luò)上運(yùn)行。
2.1發(fā)送和接受TCP數(shù)據(jù)包
TCΡ是一種可靠的、面向連接的傳輸層協(xié)議。TCΡ協(xié)議在網(wǎng)絡(luò)層IΡ協(xié)議的基礎(chǔ)上工作。本課程設(shè)計(jì)的目的是設(shè)計(jì)一個(gè)發(fā)送和接收TCΡ數(shù)據(jù)包的程序,其功能是填充一個(gè)TCΡ數(shù)據(jù)包,發(fā)送給目的主機(jī),并在目的主機(jī)接收此TCΡ數(shù)據(jù)包,將數(shù)據(jù)字段顯示顯示在標(biāo)準(zhǔn)輸出上。編寫(xiě)MFC應(yīng)用圖像界面程序,實(shí)現(xiàn)消息的發(fā)送與接收要求:
1)建立聊天服務(wù)器,并通過(guò)設(shè)置IΡ及端口號(hào)連接服務(wù)器;
2)TCΡ頭部參數(shù)自行設(shè)定;
3)在客戶端輸入消息并發(fā)送;
4)實(shí)現(xiàn)TCΡ文件的發(fā)送與接收。
2.2模擬Ethernet幀的發(fā)送過(guò)程
現(xiàn)今,Ethernet是人們普遍使用的局域網(wǎng)。通過(guò)了解模擬Ethernet幀的發(fā)送過(guò)程可以更加深刻理解局域網(wǎng)的知識(shí)。設(shè)計(jì)本通信系統(tǒng)就是模擬Ethernet幀的發(fā)送過(guò)程,更加深入地了解掌握Ethernet幀的數(shù)據(jù)發(fā)送流程。
模擬Ethernet幀的數(shù)據(jù)發(fā)送流程的標(biāo)準(zhǔn):
1)模擬Ethernet上的兩臺(tái)主機(jī),分別用線程a和線程b來(lái)表示;2)模擬總線用bus雙字類(lèi)型變量;
3)兩個(gè)子線程向總線發(fā)送自己的數(shù)據(jù)。數(shù)據(jù)用此線程號(hào)模擬,發(fā)送數(shù)據(jù)用線程號(hào)和Bus的“或”操作進(jìn)行模擬;
4)所有主機(jī)需要向總線上發(fā)送25組有效的數(shù)據(jù),假如任意一次數(shù)據(jù)未發(fā)送成功,那么終止該線程。
3.1發(fā)送和接受TCP數(shù)據(jù)包設(shè)計(jì)思想
本程序設(shè)計(jì)的目標(biāo)是接受發(fā)送TCΡ數(shù)據(jù)包,并能夠運(yùn)用原始套接字來(lái)完成此項(xiàng)任務(wù)。本程序設(shè)計(jì)主要由發(fā)送TCΡ數(shù)據(jù)包和模擬Ethernet幀的發(fā)送兩個(gè)模塊構(gòu)成。
3.2模擬Ethernet幀的發(fā)送過(guò)程設(shè)計(jì)思想
3.2.1Ethernet幀的發(fā)送流程
1)偵聽(tīng)載波過(guò)程:thernet中每個(gè)結(jié)點(diǎn)發(fā)送數(shù)據(jù)是利用總線作為傳輸介質(zhì),總線是所有結(jié)點(diǎn)共享的公共傳輸介質(zhì)。因此每個(gè)結(jié)點(diǎn)在發(fā)送一個(gè)幀前,需要判斷總線是否為空。由于Ethernet的數(shù)據(jù)是使用曼徹斯特編碼方式,可以利用判斷總線電平是否跳變的方式判斷總線是否為空。若總線為空,則可啟動(dòng)發(fā)送,否則繼續(xù)偵聽(tīng)。
2)檢測(cè)沖突過(guò)程:在數(shù)據(jù)傳輸過(guò)程中,極有可能產(chǎn)生阻塞(阻塞是指總線上同時(shí)出現(xiàn)多個(gè)數(shù)據(jù)傳輸,它們疊加后的信號(hào)波形與所有發(fā)送結(jié)點(diǎn)輸出的信號(hào)波形有所出入。原因是可能會(huì)有多個(gè)主機(jī)同時(shí)在偵聽(tīng)總線,當(dāng)它們判斷總線為空時(shí),它們會(huì)向總線傳輸數(shù)據(jù))。所以在發(fā)送數(shù)據(jù)過(guò)程中,應(yīng)該進(jìn)行阻塞檢測(cè),如果發(fā)生阻塞應(yīng)當(dāng)立即停止數(shù)據(jù)傳輸。
3)隨機(jī)延遲重發(fā):在檢測(cè)到阻塞、停止傳輸后,結(jié)點(diǎn)進(jìn)行隨機(jī)延遲后重發(fā)。若重發(fā)后還沒(méi)成功,則顯示傳輸失敗,取消該幀的傳輸。隨機(jī)延遲的計(jì)算方法一般采用截止二進(jìn)制指數(shù)年后退算法。該算法可表示為:τ=2的n次方乘以x乘以c。其中τ為結(jié)點(diǎn)重新發(fā)送需要的后退延遲時(shí)間,c為沖突窗口值(沖突窗口為總線最大長(zhǎng)度和電磁波在介質(zhì)中的傳播速度比值的2倍),x為隨機(jī)數(shù),n的取值n=min(n,25),k是該幀被成功傳輸?shù)拇螖?shù)。
3.2.2幀接收流程大致可以分以下三個(gè)步驟
1)檢驗(yàn)是否發(fā)生阻塞,如果發(fā)生阻塞,則舍棄此幀;如果沒(méi)有發(fā)生阻塞,則下一步;
2)檢驗(yàn)該幀的目的地址判斷能否接收該幀,如果可以接收,則進(jìn)行下一步;
3)進(jìn)行CRC校驗(yàn)和檢驗(yàn)LLC數(shù)據(jù)長(zhǎng)度;如果全部正確,則接收該幀,否則舍棄。
本程序設(shè)計(jì)基本達(dá)到了高速度、人性化、穩(wěn)定性、模塊化、安全性等設(shè)計(jì)要求。程序設(shè)計(jì)重點(diǎn)設(shè)計(jì)實(shí)現(xiàn)了系統(tǒng)應(yīng)用的模塊。從實(shí)驗(yàn)的結(jié)果來(lái)看,本通信系統(tǒng)擁有較好的、較人性話的聊天窗口和穩(wěn)定流暢的網(wǎng)絡(luò)通信。通過(guò)本次基于TCΡ協(xié)議的簡(jiǎn)單局域網(wǎng)通信系統(tǒng)設(shè)計(jì),我進(jìn)一步深刻地了解了局域網(wǎng)通信、C/S模式以及套接字接口實(shí)現(xiàn)的相關(guān)知識(shí),熟悉掌握了TCP數(shù)據(jù)包的發(fā)送和接受以及模擬Ethernet幀的發(fā)送,深刻理解了其中原理。我相信,局域網(wǎng)通信系統(tǒng)在教育、商業(yè)等領(lǐng)域會(huì)發(fā)揮越來(lái)越重要的作用。
參考文獻(xiàn):
[1]李為民.高校實(shí)驗(yàn)室管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J].福建電腦,2009(12).
[2]黃吉亞,謝樹(shù)云,趙莉.淺談實(shí)驗(yàn)室管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J].科技傳播,2010(15).
[3]尹光,梁偉洋.一種基于網(wǎng)絡(luò)的實(shí)驗(yàn)室管理系統(tǒng)[J].電子工程師,2000(06).
作者簡(jiǎn)介:肇宇飛(1994-),男,遼寧鐵嶺人,本科,研究方向:計(jì)算機(jī)技術(shù)。