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