畢業(yè)論文---網(wǎng)絡流量測量軟件的設計與實現(xiàn)_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  學 士 學 位 論 文</p><p>  THESIS OF BACHELOR</p><p>  題 目 網(wǎng)絡流量測量軟件的設計與實現(xiàn) </p><p>  網(wǎng)絡流量測量軟件的設計與實現(xiàn)</p><p>  摘 要:為了方便網(wǎng)絡編程,90年代初,由Microsoft聯(lián)合了其他幾家公司共同制定了一套

2、WINDOWS下的網(wǎng)絡編程接口,即Windows Sockets規(guī)范,它不是一種網(wǎng)絡協(xié)議,而是一套開放的、支持多種協(xié)議的Windows下的網(wǎng)絡編程接口。本篇論文主要是介紹了在TCP/IP基礎上利用winsock2對網(wǎng)卡進行編程,以達到網(wǎng)絡流量監(jiān)測的目的。論文首先介紹了TCP/IP協(xié)議,旨在介紹IP,TCP,UDP等比較重要的協(xié)議。主要是介紹IP頭,TCP頭,UDP頭的特點,以便從IP頭中可以獲取源地址,目的地址,協(xié)議類型等信息。在隨后的

3、章節(jié)中提出了Socket的概念,Socket實際上提供了一個通信端口使所有擁有Socket的端口的計算機之間能夠相互通信,在本論文中主要說明了socket的建立,監(jiān)聽和撤銷的過程。具體到程序?qū)崿F(xiàn)中,對網(wǎng)卡混雜模式的設置是通過原始套接字(raw socket)來實現(xiàn)的。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過將SOCK_RAW設置成SIO_RCVALL。對數(shù)據(jù)包的獲取通過recv()函數(shù)來完成。最后要完成的工作就是對所捕獲的IP數(shù)據(jù)包

4、進行分析以提取出我們所需要的信</p><p>  關鍵字: TCP/IP,Winsock,原始套接字,NetBios </p><p>  Abstract: For convenience of network programming, in the early 1990s, a new set of network programming interface using under

5、WINDOWS was established by some companies united by Microsoft. It is known as Windows Socket Norm. It isn't a kind of network protocol, but an open network programming interface support multiple protocols under WINDO

6、WS. The main purpose of the thesis is to introduce how to use Winsock2 program on network adapter under the protocol of TCP/IP. This is for the purpose of meas</p><p>  In the following section, we give the

7、concept of Socket. Sockets actually provide a communication port to allow all the computers that have Socket port to communicate with each other. In the thesis, we talk on the process of the Socket’s building listening a

8、nd canceling. In the program, we use RAW Socket to set adapter on the mixed mode. To let the Socket receive all data, we also need to set the on SIO_RCVALL. Then we use the function recv () to get data pack. At last we n

9、eed analyze the data p</p><p>  KEY WORDS:TCP/IP, Winsock,RAW SOCKET, NetBIOS</p><p><b>  目  錄</b></p><p>  摘 要…………………………………………………………………….1</p><p>  Abstrac

10、t………………………………………………………..2</p><p>  前 言…………………………………………………………………….4</p><p>  第一章 緒論……………………………………………………………5</p><p>  1.1 TCP/IP協(xié)議及其協(xié)議分析方法……………………………….5</p><p>  1.1.1 分層

11、…………………………………………………………..5</p><p>  1.1.2 IP地址……………………………………………………….6</p><p>  1.1.3 端口…………………………………………………………..6</p><p>  1.1.4 TCP/IP協(xié)議在Windows中的實現(xiàn)………………………….7</p><p> 

12、 1.2 Winsock編程…………………………………………………...7</p><p>  1.3 網(wǎng)絡流量測量的程序?qū)崿F(xiàn)原理………………………………..8</p><p>  第二章 TCP/IP協(xié)議集………………………………………………9</p><p>  2.1 TCP/IP協(xié)議簡介……………………………………………….9</p><

13、p>  2.2 IP協(xié)議………………………………………………………….9</p><p>  2.3 TCP協(xié)議………………………………………………………..10</p><p>  2.3.1 TCP服務模型………………………………………………..10</p><p>  2.3.2 TCP數(shù)據(jù)段頭………………………………………………..11</p&g

14、t;<p>  2.3.3 TCP協(xié)議的建立……………………………………………..12</p><p>  2.4 UDP協(xié)議………………………………………………………..13</p><p>  第三章 WINSOCK編程概述…………………………………………14</p><p>  3.1 套接字的概念………………………………………………….14&l

15、t;/p><p>  3.2 套接字的種類………………………………………………….14</p><p>  3.3 套接字的建立………………………………………………….14</p><p>  第四章 網(wǎng)絡流量測量的程序?qū)崿F(xiàn)……………………………….16</p><p>  4.1 網(wǎng)卡初始化…………………………………………………….16<

16、/p><p>  4.1.1 NetBios概述…………………………………………………16</p><p>  4.1.2 利用NetBios來初始化網(wǎng)卡………………………………..16</p><p>  4.2 原始套接字的設置…………………………………………….16</p><p>  4.3 IP包的協(xié)議分析………………………………………

17、………17</p><p>  4.4 結果與測試…………………………………………………….19</p><p>  結 論…………………………………………………………………….21</p><p>  結束語…………………………………………………………………….22</p><p>  參考文獻…………………………………………………………

18、………23</p><p><b>  前  言</b></p><p>  隨著計算機網(wǎng)絡技術日新月異的發(fā)展,Internet的逐漸普及,網(wǎng)絡對于人們已經(jīng)不再是一個陌生的概念??梢哉f,網(wǎng)絡已經(jīng)在很多人的生活中占據(jù)了重要的地位。于是,各種各樣的軟件隨之誕生,使人們能夠更加方便,快捷的訪問網(wǎng)絡,了解網(wǎng)絡以充分的利用網(wǎng)絡。</p><p>  本

19、論文就是向大家介紹網(wǎng)絡中比較常用的技術——網(wǎng)絡流量的監(jiān)測。在介紹具體的程序?qū)崿F(xiàn)之前,論文首先介紹了TCP/IP協(xié)議,可以說,任何網(wǎng)絡技術都與TCP/IP協(xié)議有著密切的關聯(lián),TCP/IP協(xié)議給不同型號的計算機,不同的操作系統(tǒng)之間提供了相互通信的平臺。TCP/IP起源于60年代末美國政府資助的一個分組交換網(wǎng)絡研究項目,到現(xiàn)在90年代已發(fā)展成為計算機之間最常應用的組網(wǎng)形式。它是一個真正的開放系統(tǒng),因為協(xié)議組件的定義及其多種實現(xiàn)可以不用花錢或花

20、很少的錢就可以公開地得到。</p><p>  在進行網(wǎng)絡流量的測量之前,我們首先要對本地機的信息有一個了解。這些信息的獲取是通過Netbios來完成的。Netbios利用其網(wǎng)絡控制快NCB來完成我們需要它去完成的對網(wǎng)卡的初始化工作。通過ncb_command來發(fā)出命令完成對網(wǎng)卡的操作。通過發(fā)送NCBENUM命令獲取網(wǎng)卡的數(shù)目和每個網(wǎng)卡的內(nèi)部編號;對選定的網(wǎng)卡發(fā)送一個NCBRESET命令,以便進行初始化;接著,

21、可以發(fā)送NCBASTAT命令以獲取網(wǎng)卡的信息。這樣,我們可以讀出網(wǎng)卡的MAC地址以便進行進一步的工作。</p><p>  要實現(xiàn)網(wǎng)絡流量的測量,Winsock給我們提供了一個接口,我們通過這個接口可以實現(xiàn)對IP層以上的層的數(shù)據(jù)包的監(jiān)測。我們通過建立原始套接字,利用Winsock提供給我們的一些特定的函數(shù)就可以完成對網(wǎng)絡數(shù)據(jù)包的捕獲。首先需要建立一個socket,將它設置成為是對ip頭的操作,然后利用gethos

22、tname,phost獲取本機名,本機ip地址。將本機地址與IP地址綁定之后,將網(wǎng)卡設置為混雜模式,以便對所有經(jīng)過它的數(shù)據(jù)包進行接收。在這些準備工作已經(jīng)做好之后,余下的就是利用recv()來捕獲網(wǎng)絡中的數(shù)據(jù)包。</p><p>  到現(xiàn)在為止,我們所作的工作都是分析工作的鋪墊。我們最后所要看到的就是網(wǎng)絡數(shù)據(jù)包的分析結果。在數(shù)據(jù)包的分析過程中,用戶一般想得到的主要信息不外乎是包的協(xié)議類型,源/目的地址,發(fā)送/接收端

23、口以及包的大小,定義指針,分別指向數(shù)據(jù)包的相對應的位置就可以得到這些信息。將得到的信息羅列并顯示出來之后,我們就完成了對網(wǎng)絡中數(shù)據(jù)包的流量監(jiān)測過程。</p><p>  在論文的最后對整篇論文進行了總結,說明了一些不足之處,并對所有對這篇論文知道并建議的老師等表示感謝。</p><p><b>  第一章 緒論</b></p><p>  1.

24、1 TCP/IP協(xié)議及其協(xié)議分析方法</p><p>  TCP/IP起源于60年代末美國政府資助的一個分組交換網(wǎng)絡的研究項目,到現(xiàn)在90年代已發(fā)展成為計算機之間最常用的組網(wǎng)形式。它是一個真正的開放系統(tǒng),因為協(xié)議組件的定義及其多種實現(xiàn)可以不用花錢或花很少的錢就可以公開地得到。它成為被稱作“全球互聯(lián)網(wǎng)”或“因特網(wǎng)”(Internet)的基礎。</p><p><b>  1.1.1

25、 分層</b></p><p>  協(xié)議分層的概念的提出是為了減少協(xié)議設計的復雜性,每一層都建立到它的下層之上,每一層的目的就是為了向上一層提供特定的服務。一臺機器的第n層向另一臺機器的第n層會話,通話的規(guī)則稱為協(xié)議。分層和協(xié)議構成了網(wǎng)絡體系結構。</p><p>  在提到了分層的概念時就不能不提一下OSI參考模型。該模型基于國際化標準組織,共分為七層:</p>

26、<p>  物理層:涉及到通信在信道上傳輸?shù)脑急忍亓鳌?lt;/p><p>  數(shù)據(jù)鏈路層:加強物理層傳輸原始比特流的功能,使之對網(wǎng)絡層顯現(xiàn)為一條無錯線路</p><p>  網(wǎng)絡層:關系到子網(wǎng)的運行控制,其中一個關鍵的問題就是路由選擇。</p><p>  傳輸層:為用戶提供端到端的數(shù)據(jù)傳送服務。</p><p>  會話層:允許

27、不同機器上的用戶建立會話關系,為用戶提供會話控制服務。</p><p>  表示層:為用戶提供數(shù)據(jù)轉換和表示服務。</p><p>  應用層:為用戶提供訪問OSI的接口,其中包括大量的常見的協(xié)議。</p><p>  TCP/IP通常被認為是一個四層協(xié)議系統(tǒng),每一層負責不同的功能。</p><p>  數(shù)據(jù)鏈路層,通常包括操作系統(tǒng)中的設備驅(qū)

28、動程序和計算機中對應的網(wǎng)絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節(jié)。</p><p>  網(wǎng)絡層,處理分組在網(wǎng)絡中的活動,例如分組的路由選擇。在TCP/IP協(xié)議組件中,網(wǎng)絡層協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(Internet互連網(wǎng)控制報文協(xié)議),以及IGMP協(xié)議(Internet組管理協(xié)議)。</p><p>  運輸層,主要為兩臺主機上的應用程序提供端到端

29、的通信。在TCP/IP協(xié)議組件中,有兩個互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。TCP為兩臺主機提供高可靠性的數(shù)據(jù)通信。而另一方面,UDP則為應用層提供一種非常簡單的服務。它只是把稱作數(shù)據(jù)報的分組從一臺主機發(fā)送到另一臺主機,但并不保證該數(shù)據(jù)報能到達另一端。</p><p>  應用層,負責處理特定的應用程序細節(jié)。幾乎各種不同的TCP/IP實現(xiàn)都會提供下面這些通用的應用程序: Teln

30、et 遠程登錄,F(xiàn)TP 文件傳輸協(xié)議,SMTP 用于電子郵件的簡單郵件傳輸協(xié)議,SNMP 簡單網(wǎng)絡管理協(xié)議。</p><p>  圖1-1 OSI模型與TCP/IP模型的比較</p><p>  如圖所示,OSI模型有七層,而TCP/IP模型只有4層。OSI模型在網(wǎng)絡層支持無連接和面向連接的通信,而TCP/IP模型在網(wǎng)絡層僅有無連接的通信方式,但是在傳輸層卻支持兩種模式,更好的面向了用戶。

31、</p><p>  1.1.2 IP地址</p><p>  互連網(wǎng)上的每個接口必須有一個唯一的Internet地址(也稱作IP地址)。IP地址長32 bit。這些32位的地址通常寫成四個十進制的數(shù),其中每個整數(shù)對應一個字節(jié)。這種表示方法稱作“點分十進制表示法”。需要再次指出的是,多接口主機具有多個IP地址,其中每個接口都對應一個IP地址。</p><p>  由

32、于互連網(wǎng)上的每個接口必須有一個唯一的IP地址,因此必須要有一個管理機構為接入互連網(wǎng)的網(wǎng)絡分配IP地址。這個管理機構就是互連網(wǎng)絡信息中心(Internet Network Information Centre)稱作InterNIC。InterNIC只分配網(wǎng)絡號。主機號的分配由系統(tǒng)管理員來負責。</p><p><b>  1.1.3 端口</b></p><p>  網(wǎng)

33、絡中可以被命名和尋址的通信端口,是操作系統(tǒng)可分配的一種資源。按照OSI七層協(xié)議的描述,傳輸層與網(wǎng)絡層在功能上的最大區(qū)別是傳輸層提供進程通信能力。從這個意義上講,網(wǎng)絡通信的最終地址就不僅僅是主機地址了,還包括可以描述進程的某種標識符。為此,TCP/IP協(xié)議提出了協(xié)議端口(protocol port,簡稱端口)的概念,用于標識通信的進程。端口是一種抽象的軟件結構,應用程序(即進程)通過系統(tǒng)調(diào)用與某端口建立連接后,傳輸層傳給該端口的數(shù)據(jù)都被相

34、應進程所接收,相應進程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。在TCP/IP協(xié)議的實現(xiàn)中,端口操作類似于一般的I/O操作,進程獲取一個端口,相當于獲取本地唯一的I/O文件,可以用一般的讀寫原語訪問之。</p><p>  類似于文件描述符,每個端口都擁有一個叫端口號(port number)的整數(shù)型標識符,用于區(qū)別不同端口。端口號的分配是一個重要問題。端口號的分配有兩種基本分配方式:第一種叫全局分配,這是一種集中控制方

35、式,由一個公認的中央機構根據(jù)用戶需要進行統(tǒng)一分配,并將結果公布于眾。第二種是本地分配,又稱動態(tài)連接,即進程需要訪問傳輸層服務時,向本地操作系統(tǒng)提出申請,操作系統(tǒng)返回一個本地唯一的端口號,進程再通過合適的系統(tǒng)調(diào)用將自己與該端口號綁定起來。</p><p>  1.1.4 TCP/IP協(xié)議在Windows中的實現(xiàn)</p><p>  對TCP/IP協(xié)議有了一個結構性的了解之后,就要考慮TCP/

36、IP協(xié)議在Windows中是如何應用的。TCP/IP和OSI有一層映射關系,所以可以將TCP/IP通過OSI映射到Windows操作系統(tǒng)中去。OSI在Windows中的實現(xiàn):物理層就是網(wǎng)卡,數(shù)據(jù)鏈路層就是網(wǎng)卡驅(qū)動程序,網(wǎng)絡層就是NDIS(網(wǎng)絡驅(qū)動程序接口規(guī)范),傳輸層是TDI(傳輸驅(qū)動程序接口),會話層是SPI(服務提供者接口),表示層是API(應用編程接口),應用層通常就是EXE文件。</p><p>  1.

37、2 Winsock編程</p><p>  Winsock就是Windows Socket的簡稱,最簡單的說,Winsock就是Windows應用程序與TCP/IP之間的通信界面。如圖:</p><p>  圖1-2 Winsock在TCP/IP和OSI中的表示</p><p>  在Windows中,利用Winsock通信需經(jīng)過幾個步驟:初始化Winsock,創(chuàng)建

38、套接字,建立會話,傳送數(shù)據(jù),中止會話,中止Winsock。Winsock既可以提供機器間的通訊,又可提供Windows進程間的通信。</p><p>  1.3 網(wǎng)絡流量測量的程序?qū)崿F(xiàn)原理</p><p>  網(wǎng)絡流量監(jiān)測器也是通過對網(wǎng)卡的編程來實現(xiàn)網(wǎng)絡通訊的,對網(wǎng)卡的編程也是使用通常的套接字(socket)方式來進行。但是,通常的套接字程序只能響應與自己硬件地址相匹配的或是以廣播形式發(fā)出

39、的數(shù)據(jù)幀,對于其他形式的數(shù)據(jù)幀比如已到達網(wǎng)絡接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡接口在驗證投遞地址并非自身地址之后將不引起響應,也就是說應用程序無法收取到達的數(shù)據(jù)包。而網(wǎng)絡監(jiān)測器的目的恰恰在于從網(wǎng)卡接收所有經(jīng)過它的數(shù)據(jù)包,這些數(shù)據(jù)包即可以是發(fā)給它的也可以是發(fā)往別處的。顯然,要達到此目的就必須將其設置為混雜模式。</p><p>  這種對網(wǎng)卡混雜模式的設置是通過原始套接字(raw socket)來實現(xiàn)的,這也有別

40、于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報套接字。在創(chuàng)建了原始套接字后,需要通過Setsockopt()函數(shù)來設置IP頭操作選項,然后再通過bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過ioctlsocket()來進行設置,而且還可以指定是否親自處理IP頭。至此,實際就可以開始對網(wǎng)絡數(shù)據(jù)包進行監(jiān)測了,對數(shù)據(jù)包的獲取仍通過recv()函數(shù)來完成。</p><p>  第二章 TC

41、P/IP協(xié)議集</p><p>  2.1 TCP/IP協(xié)議簡介</p><p>  很多不同的廠家生產(chǎn)各種型號的計算機,它們運行完全不同的操作系統(tǒng),但TCP/IP協(xié)議組件允許它們互相進行通信。TCP/IP模型是一種層級式(Layering)的結構,每一層都呼叫它的下一層所提供的服務來完成自己的需求。TCP/IP模型可以分為以下四層:應用層、傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層。本章主要對TCP/I

42、P協(xié)議組件進行概述。</p><p><b>  2.2 IP協(xié)議</b></p><p>  IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP,UDP,ICMP,及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸。與大多數(shù)網(wǎng)絡層協(xié)議不同,IP協(xié)議一開始就是為了網(wǎng)絡互連的目的而設計的,它的工作是提供一種從源端到目的端傳輸數(shù)據(jù)報的最佳嘗試方法,不管這些機器是否在同一網(wǎng)絡中。我們

43、可以通過分析IP數(shù)據(jù)報的頭部來更好的了解IP協(xié)議:</p><p><b>  圖2-1 IP包頭</b></p><p>  1、版本(version):記錄了數(shù)據(jù)報屬于哪一個版本的協(xié)議。</p><p>  2、IHL字段:用來告訴頭部有多長,以32字節(jié)長度為一個單位,最小值為5。</p><p>  3、服務類型(

44、type of service):使主機告訴子網(wǎng)它想要什么樣的服務。3個標志位D,T,R主機能說明它最關心組合{Delay,Throughput,Reliability}中的哪一項。還有兩位未用。D,T,R的優(yōu)先級從0到7。</p><p>  4、總長(total length):包括數(shù)據(jù)報中的所有信息——包括頭部和數(shù)據(jù)??傞L65535字節(jié)。</p><p>  5、標識(identif

45、ication): 讓目的主機判斷新來的分段屬于哪個分組,所有屬于同一分組的字段包含同樣的標識值。</p><p>  6、分段偏移(fragment offset):說明分段在當前數(shù)據(jù)報的什么位置。除了數(shù)據(jù)報的最后一個分段外,所有分段都要乘以8字節(jié)。因為在分段位移前有3位,其中兩位是未用的位,然后是兩個1位字段,DF表示不要分段,MF表示還有進一步的分段。這樣表示分段位移的位只有13位,因此每個數(shù)據(jù)報最長是81

46、92個分組,這樣最大的數(shù)據(jù)報長度是65536字節(jié)。</p><p>  7、生命期(time to life):是同一個用來限制分組生命周期的計數(shù)器,最長生命周期255s,它必須在每個節(jié)點都遞減,而且當一個路由器中排隊時間過長可以十倍數(shù)遞減。</p><p>  8、協(xié)議(protocol):說明將它送給哪個傳輸進程的,協(xié)議的編號在整個因特網(wǎng)上是全球通用的,它定義于RFC 1700中。&l

47、t;/p><p>  9、頭部校驗和(header checksum):這種算法用來校驗頭部。該算法將頭部所有16位半字數(shù)據(jù)累加起來,采用補運算,再取其結果的補碼。網(wǎng)由于該算法的原理,當數(shù)據(jù)報到達時其頭部校驗和應該為0。</p><p>  10、源地址(source)和目的地址(destination address):指明了網(wǎng)絡號和主機號。</p><p><

48、b>  2.3 TCP協(xié)議</b></p><p>  TCP(傳輸控制協(xié)議),是專門設計用于在不可靠的internet上提供可靠的、端到端的字節(jié)流通信的協(xié)議。每臺支持TCP的機器均有一個TCP傳輸實體,或者是用戶進程,或者負責管理TCP流以及與IP層接口的核心。TCP實體從本地進程接受用戶的數(shù)據(jù)流,并將其分為不超過64字節(jié)的數(shù)據(jù)片段,并將每個數(shù)據(jù)片段作為單獨的IP數(shù)據(jù)報發(fā)送出去。當包含有TCP

49、數(shù)據(jù)的IP數(shù)據(jù)報到達某臺相連的機器后,他們又被送給該機器內(nèi)的TCP實體,被重新組合為原來的數(shù)據(jù)流。IP層并不能保證將數(shù)據(jù)報正確地傳送到目的端,因此TCP實體需要判定是否超時并根據(jù)需要重發(fā)數(shù)據(jù)報。到達的數(shù)據(jù)也可能是按照錯誤的順序傳到的,這也需要由TCP實體按正確的順序重新將這些數(shù)據(jù)報組裝成報文。</p><p>  2.3.1 TCP服務模型</p><p>  通過在發(fā)送方和接收方分別創(chuàng)建

50、稱為Socket的通信端點可以獲得TCP服務。每個套接字序號包含主機的IP地址以及一個主機本地的16位號碼,稱為端口。為了獲得TCP服務,必須在發(fā)送方的Socket和接收方的Socket之間明確的建立連接。</p><p>  一個套接字可以被多個連接同時使用。序號小于256的端口稱為通用端口。所有的TCP連接均是全雙工的和點到點的,TCP不支持多點播送或廣播。TCP連接是字節(jié)流而非報文流,報文邊界并不按頭尾銜接

51、方式保存。當一個應用程序把數(shù)據(jù)送給TCP實體時,TCP根據(jù)自己的判斷,可能會立刻將其發(fā)送出去或者將其緩存起來。</p><p>  有時候用戶為了立刻發(fā)送數(shù)據(jù)可以使用PUSH標志來通知TCP不能耽擱數(shù)據(jù)的發(fā)送。TCP服務的另一個特點就是緊急數(shù)據(jù)功能。當一個用戶按下DEL或者CTRL+C中斷一個已經(jīng)開始的遠程計算時,發(fā)送方應用程序在數(shù)據(jù)流中放入一些控制信息并將其與URGENT標志一起交給TCP,當緊急數(shù)據(jù)到達目的端

52、之后,接受方應用程序被中斷,然后去讀取數(shù)據(jù)并進而發(fā)現(xiàn)了緊急數(shù)據(jù)。</p><p>  2.3.2 TCP數(shù)據(jù)段頭</p><p>  發(fā)送和接收方TCP實體以數(shù)據(jù)段(segment)的形式交換數(shù)據(jù)。一個數(shù)據(jù)段包含一個固定的20字節(jié)的頭,后面跟著以0字節(jié)或多字節(jié)的數(shù)據(jù)。對于數(shù)據(jù)段的大小有兩個限制條件:(1)每個數(shù)據(jù)段必須適合IP的載荷能力,不能超過65535字節(jié)。(2)要求每個數(shù)據(jù)段必須適合

53、最大傳送單位MTU。TCP實體所用的基本協(xié)議是滑動窗口協(xié)議。當發(fā)送方傳送一個數(shù)據(jù)段時,它要啟動計時器。當數(shù)據(jù)段到達目的地后,接受方的TCP實體向回發(fā)送一個數(shù)據(jù)段,包含確認序號,希望收到下一個數(shù)據(jù)段的順序號。如果確認號超時,則發(fā)送方將重發(fā)。</p><p>  TCP數(shù)據(jù)段每段均以固定格式的20字節(jié)的頭開始,固定的頭后面可能是頭的一些可選項。在可選項后面最多有65535-20-20=65495數(shù)據(jù)字節(jié),第一個20指

54、IP頭,第二個20指TCP頭。不帶任何數(shù)據(jù)的數(shù)據(jù)段也是合法的,一般用于確認報文和控制報文。</p><p>  以下介紹一下TCP數(shù)據(jù)段頭中每個字段的含義:</p><p><b>  圖2-2 TCP頭</b></p><p>  1、源端口和目的端口字段標識出本地和遠端的連接點。每個主機都可以自行決定如何分配自己的端口(從256開始)。&l

55、t;/p><p>  2、順序號和確認號字段執(zhí)行它的通用功能。確認號指希望接收下一個字節(jié)而不是前面已經(jīng)正確接收的字節(jié)。</p><p>  3、TCP頭長表明在TCP頭中包含多少個32位字。由于可選項字段是變長的,因此TCP頭也是變長的,它實際上是指明了數(shù)據(jù)在數(shù)據(jù)段中的開始位置。接下來有6個未用的位。</p><p>  4、接下來是六個1位的標志:</p>

56、<p> ?。?)URG位是應急指針標志,當用到了應急指針,則URG置1。應急指針指從當前順序號到緊急數(shù)據(jù)位置的偏移量。</p><p> ?。?)ACK位置1表明確認號是合法的。ACK為0表示數(shù)據(jù)段不包括確認信息。</p><p> ?。?)PSH偽表示是帶有PUSH位標志的數(shù)據(jù)。</p><p> ?。?)RST位用于復位由于主機崩潰或其他原因而出

57、現(xiàn)錯誤的連接。</p><p> ?。?)SYN位用于建立連接。在連接請求中,SYN=1,ACK=0,表示捎帶確認字段無效。連接響應數(shù)據(jù)段應帶有確認,因此SYN=1,ACK=1。</p><p> ?。?)FIN位用于釋放連接,它表明發(fā)送方已經(jīng)沒有數(shù)據(jù)發(fā)送了,然而當斷開連接后,進程還可以繼續(xù)接收數(shù)據(jù)。</p><p>  5、窗口大小字段表示在確認了字節(jié)之后還可以發(fā)

58、送多個字節(jié),由于TCP中的流量控制是通過滑動窗口來處理的。窗口大小為0也是合法的,表示它已經(jīng)收到了包括當前字段的所有數(shù)據(jù)段,但當前接收方急需暫停,希望不要發(fā)數(shù)據(jù)。</p><p>  6、校驗和也是為了確保高可靠性而設置的。它校驗頭部,數(shù)據(jù)和偽IP頭(如下圖)之和。當接收方對整個數(shù)據(jù)段,包括校驗和字段進行運算時,結果應是0。</p><p>  圖2-3 TCP偽頭</p>

59、<p>  2.3.3 TCP協(xié)議的建立</p><p>  TCP連接的建立使用三次握手協(xié)議,在此過程中雙方要互報自己的初始序號,這樣就可以保證包的接收順序和發(fā)送順序相一致。</p><p>  1、(B) --> [SYN] --> (A)</p><p>  假如服務器A和客戶機B通訊. 當A要和B通信時,B首先向A發(fā)一個SYN (Syn

60、chronize) 標記的包,告訴A請求建立連接。</p><p>  2、(B) <-- [SYN/ACK] <--(A)</p><p>  接著,A收到后會發(fā)一個對SYN包的確認包(SYN/ACK)回去,表示對第一個SYN包的確認,并繼續(xù)握手操作。SYN/ACK包是僅SYN 和 ACK 標記為1的包。</p><p>  3、(B) -->

61、[ACK] --> (A)</p><p>  B收到SYN/ACK 包,B發(fā)一個確認包(ACK),通知A連接已建立。至此,三次握手完成,一個TCP連接完成。</p><p><b>  2.4 UDP協(xié)議</b></p><p>  Internet協(xié)議組同樣支持無連接的傳輸協(xié)議UDP。RFC 768定義的UDP協(xié)議是個無連接的、不可靠

62、的協(xié)議,它能夠以最小的控制開銷為應用層協(xié)議提供最基本的傳輸服務。UDP向應用程序提供了一種發(fā)送封裝的原始IP數(shù)據(jù)報的方法,并且發(fā)送時無需建立連接。很多有一個請求和一個響應的客戶-服務器應用程序采用UDP,這樣可以避免建立和釋放連接的麻煩。</p><p>  一個UDP數(shù)據(jù)段包括一個8字節(jié)的頭和數(shù)據(jù)部分。頭的格式如下:</p><p><b>  圖2.4 UDP頭</b&

63、gt;</p><p>  源端口和目的端口的作用與TCP中完全相同。UDP長度字段指明包括8字節(jié)的頭和數(shù)據(jù)在內(nèi)的數(shù)據(jù)段長度。UDP校驗和字段包括偽UDP頭,UDP頭,UDP數(shù)據(jù),如果有必要再補充為偶數(shù)個字節(jié)。該字段是可選的,而且在不用于運算時記為0。</p><p>  使用UDP協(xié)議時,為了傳輸數(shù)據(jù),首先要設置客戶計算機的LocalPort屬性。然后服務器計算機只需將RemoteHos

64、t設置為客戶計算機的IP地址,并將RemotePort屬性設置為與客戶計算機LocalPort屬性相同的端口,最后調(diào)用SendData方法來發(fā)送信息,而客戶計算機則使用DataArrival事件內(nèi)的GetData方法來獲取服務器計算機發(fā)送來的信息。</p><p>  第三章 Winsock編程概述</p><p>  Winsock就是Windows Socket的簡稱。最簡單地說,Wi

65、nsock就是Windows應用程序與TCP/IP之間的通信界面。當然,Winsock還支持其他一些網(wǎng)絡協(xié)議棧,例如,Novell的IPX/SPX協(xié)議?!,F(xiàn)在最新版本是Winsock2.0版。</p><p>  3.1 套接字的概念</p><p>  Socket是網(wǎng)絡上運行的兩個程序間雙向通信連接的一端。Socket這個詞的一般意義是自然的或人工的插口,如家用電器的電源插口等??蛻舫?/p>

66、序可以向Socket寫請求,服務器將處理此請求,然后通過Socket把結果返回給客戶。Socket是一種底層連接??蛻魴C和服務器通過寫入到Socket的字節(jié)流進行通信。它們必須有共同的協(xié)議,也就是說,通過Socket相互傳送信息時所用的語言必須是協(xié)定好的。</p><p>  3.2 套接字的種類</p><p>  流式套接字(SOCK_STREAM):提供了一個面向連接、可靠的數(shù)據(jù)傳輸

67、服務,數(shù)據(jù)無差錯、無重復地發(fā)送,且按發(fā)送順序接收。內(nèi)設流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看作是字節(jié)流,無長度限制。文件傳送協(xié)議(FTP)即使用流式套接字。</p><p>  數(shù)據(jù)報式套接字(SOCK_DGRAM):提供了一個無連接服務。數(shù)據(jù)包以獨立包形式被發(fā)送,不提供無錯保證,數(shù)據(jù)可能丟失或重復,并且接收順序混亂。網(wǎng)絡文件系統(tǒng)(NFS)使用數(shù)據(jù)報式套接字。</p><p>  原始套接字(

68、SOCK_RAW): 該接口允許對較低層協(xié)議,如IP、ICMP直接訪問。常用于檢驗新的協(xié)議實現(xiàn)或訪問現(xiàn)有服務中配置的新設備。</p><p>  3.3 套接字的建立</p><p>  一個人要能夠收到別人打給他的電話,首先他要裝上一門電話。同樣,必須先建立 socket 以偵聽線路。這個過程包含幾個步驟。首先,要建立一個新的 socket,就像先裝上電話一樣。socket() 命令就完

69、成這個工作。 </p><p>  因為 sockets 有幾種類型,因此要注明我們要建立什么類型的。我們要做一個選擇是 socket 的地址格式。如同電話有音頻和脈沖兩種形式一樣,socket 有兩個最重要的選項是 AF_UNIX 和 AF_INET。我們這里將著重于 AF_INET 方式。AF_INET 使用202.117.1.13 這樣被點號隔開的四個十進制數(shù)字的地址格式。除了機器地址以外,還可以利用端口號

70、允許每臺機器上的多個 AF_INET socket。</p><p>  另外一個必須提供的參數(shù)是 socket 的類型。流式套接字提供了雙向、有序的、無重復的以及無記錄邊界的數(shù)據(jù)流服務,適合處理大量數(shù)據(jù)。它是面向聯(lián)結的,必須建立數(shù)據(jù)傳輸鏈路,同時還必須對傳輸?shù)臄?shù)據(jù)進行驗證,確保數(shù)據(jù)的準確性。因此,系統(tǒng)開銷較大。而數(shù)據(jù)報套接字也支持雙向的數(shù)據(jù)流,但不保證傳輸數(shù)據(jù)的準確性,但保留了記錄邊界。由于數(shù)據(jù)報套接字是無聯(lián)接

71、的,例如廣播時的聯(lián)接,所以并不保證接收端是否正在偵聽。數(shù)據(jù)報套接字傳輸效率比較高。SOCK_RAW是將套接字定義為原始套接字。原始套接字保存了數(shù)據(jù)包中的完整IP頭,前面兩種套接字只能收到用戶數(shù)據(jù)。因此可以通過原始套接字對數(shù)據(jù)進行分析。</p><p>  在建立 socket 后,我們就要提供 socket 偵聽的地址了。bind() 函數(shù)來處理這件事情,將本地地址綁定到所創(chuàng)建的套接字上。然后我們要做的就是設置

72、SOCK_RAW 為SIO_RCVALL,以便接收所有的IP包。這里的SIO_RCVALL是指示SOCK_RAW接收所有的數(shù)據(jù)包。</p><p>  前面的工作基本上都是對原始套接字進行設置,在將原始套接字設置完畢,使其能按預期目的工作時,就可以通過recv()函數(shù)從網(wǎng)卡接收數(shù)據(jù)了,接收到的原始數(shù)據(jù)包存放在緩存RecvBuf[]中,緩沖區(qū)長度BUFFER_SIZE定義為65535。然后就可以根據(jù)前面對IP數(shù)據(jù)段

73、頭、TCP數(shù)據(jù)段頭的結構描述而對捕獲的數(shù)據(jù)包進行分析。</p><p>  第四章 網(wǎng)絡流量測量的程序?qū)崿F(xiàn)</p><p><b>  4.1 網(wǎng)卡初始化</b></p><p>  本論文在介紹對網(wǎng)卡初始化的過程中,主要介紹以下幾項工作:獲得網(wǎng)卡的MAC地址,得到本機網(wǎng)卡的數(shù)目,Reset網(wǎng)卡,通過IP地址得到機器名。在論文中把這幾項工作一起

74、放到網(wǎng)卡初始化部分介紹,其中一個主要原因就是這些主要都是利用NetBios來完成的。下面我們來詳細介紹。</p><p>  4.1.1 NetBios概述</p><p>  NetBios是PC網(wǎng)絡中用得最為廣泛的網(wǎng)絡協(xié)議之一,大多數(shù)的局域網(wǎng)(LAN)產(chǎn)品都支持NetBios。因此,將NetBios作為網(wǎng)絡協(xié)議的優(yōu)點是:基于NetBios網(wǎng)絡應用程序并不需修改便能在其它各種網(wǎng)絡環(huán)境下運

75、行,用戶將享受到極大的靈活性,既使改用了其它網(wǎng)絡也能繼續(xù)使用原先的應用程序,避免了重復投入。</p><p>  4.1.2 利用NetBios來初始化網(wǎng)卡</p><p>  NetBios API只包括了一個函數(shù),就叫做NetBios。這個函數(shù)使用網(wǎng)絡控制塊NCB(network control block)結構作為參數(shù),這個結構告訴函數(shù)要做什么。這個結構中包括多個成員,如ncb_co

76、mmand,ncb_num,ncb_length等。</p><p>  我們著重介紹一下ncb_command。每一個發(fā)往NetBios的NCB都代表一項要執(zhí)行的動作,具體執(zhí)行哪項動作,由ncb_command字段的取值決定。我們使用三個命令來探測MAC地址:NCBENUM,NCBRESET,NCBASTAT。NCBENUM列舉系統(tǒng)中網(wǎng)卡的數(shù)量。NCBRESET重置網(wǎng)卡。NCBASTAT 接受本地或遠程接口卡的

77、狀態(tài)。使用此命令后,ncb_buffer成員指向由ADAPTER_STATUS結構填充的緩沖區(qū),隨后是NAME_BUFFER結構的數(shù)組。</p><p>  具體在程序?qū)崿F(xiàn)的時候我們首先利用NCBTRSRT重置網(wǎng)卡,以便我們可以查詢。接著,可以發(fā)送NCBASTAT命令以獲取網(wǎng)卡的信息。向網(wǎng)卡發(fā)送NCBENUM命令,以獲取當前機器的網(wǎng)卡信息,如網(wǎng)卡的個數(shù),網(wǎng)卡的編號等。最后對于每張網(wǎng)卡以其網(wǎng)卡編號為輸入編號,獲取其

78、MAC地址。</p><p>  4.2 原始套接字的設置</p><p><b>  具體設置步驟如下:</b></p><p>  1、WSAStartup(MAKEWORD(2, 2), &WSAData)查看Winsock的版本號。</p><p>  2、s=socket(AF_INET,SOCK_RA

79、W,IPPROTO_RAW)創(chuàng)建原始套接字</p><p>  3、setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag));IP頭操作選項,將flag設置成TRUE,親自對IP頭進行處理。</p><p>  4、gethostname((char*)LocalName, sizeof(LocalNa

80、me)-1);獲取本機名。</p><p>  5、pHost = gethostbyname((char*)LocalName))獲取本地IP地址。</p><p>  6、addr_in.sin_addr=*(in_addr *)phost->h_addr_list[0]; addr_in.sin_family = AF_INET; addr_in.sin_port = hton

81、s(57274);填充SOCKADDR_IN,第一句將IP地址與本機綁定,然后定義SOCKET類型為AF_INET,然后設定其端口號,可以為任意值,但是最好不要和公共端口號相同。</p><p>  7、bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in));綁定原始套接字到本地網(wǎng)卡上。</p><p>  8、ioctlsocket(so

82、ck, SIO_RCVALL, &dwValue); 設置 SOCK_RAW 為SIO_RCVALL,以便接收所有的IP包。其中SIO_RCVALL的定義為: #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)。</p><p>  在對原始套接字設置完畢后就可以通過reiv()從網(wǎng)卡接收數(shù)據(jù),接收到的原始數(shù)據(jù)包存放在緩存buf中。</p><p> 

83、 4.3 IP包的協(xié)議分析</p><p>  前面在第二章已經(jīng)對IP頭,TCP頭,UDP頭的結構進行了描述。以下我們將利用前面所介紹的結構特點對所捕獲的數(shù)據(jù)包進行分析:</p><p>  IP報頭是由一個_iphdr的類來定義的,在這個類中定義了11項:</p><p>  1、ver_len:版本,長度為4位;</p><p>  2、

84、type:服務類型,長度為8位;</p><p>  3、length[2]:該數(shù)據(jù)報的總長,16位;</p><p>  4、id[2]:報文標識,16位;</p><p>  5、flag_offset[2]:分段偏移,16位,包括3位標志,13位分段偏移;</p><p>  6、Time:生存時間,8位;</p><

85、;p>  7、Protocol:協(xié)議類型,8位;</p><p>  8、crc_val[2]:頭校驗和,16位;</p><p>  9、src_addr[4]:源地址,32位</p><p>  10、tar_addr[4]:目的地址,32位</p><p>  11、options[4]:選項,32位</p><

86、;p>  與IP頭定義相同,TCP報頭的定義了一個_tcphdr類,在這個類中定義了TCP頭的9項:</p><p>  1、source_port[2]:發(fā)送端端口號,16位;</p><p>  2、dest_port[2]:接收端端口號,16位;</p><p>  3、sequence_no[4]:順序號,32位;</p><p&g

87、t;  4、ack_no[4]:確認號,32位;</p><p>  5、offset_reser_con[2]:數(shù)據(jù)偏移位,16位;</p><p>  6、window[2]:窗口大小,16位;</p><p>  7、checksum[2]:校驗和,16位;</p><p>  8、urgen_pointer[2]:緊急指針,16位;&

88、lt;/p><p>  9、options[3]:選項,32位;</p><p>  對UDP頭的定義,與TCP頭的定義基本一致,這里就不再重復</p><p>  我們利用RFC1700的協(xié)議定義,分別給IP協(xié)議,TCP協(xié)議和UDP協(xié)議進行定義:</p><p>  1、#define PROTOCOL_IP 4,當IP頭中Protocol為4

89、時,這是一個IP數(shù)據(jù)包。</p><p>  2、PROTOCOL_TCP 6,當IP頭中Protocol為6時,這是一個TCP數(shù)據(jù)包。</p><p>  3、#define PROTOCOL_UDP 17,當IP頭中Protocol為17時,這是一個UDP數(shù)據(jù)包。</p><p>  當函數(shù)recv()執(zhí)行時,開始捕獲網(wǎng)絡中的數(shù)據(jù)包,定義一個名為len的緩沖區(qū),

90、當len>0時,說明接收到數(shù)據(jù),開始進行數(shù)據(jù)包分析。</p><p>  定義一個名為ip的指針,指向IP頭的第一個位,定義一個名為tcp的指針指向地址=(IP頭的首地址+IP頭的長度)的位置。這兩個指針的定義分別定義了IP頭和TCP頭。然后在IP頭分析Protocol,如果滿足上述定義的TCP頭,UDP頭的情況,利用函數(shù)GetProtocolTxt()分別輸出“TCP”“UDP”。</p>

91、<p>  將buf清0,得到一個16位的空棧,然后將ip指針分別指向src_addr[0],src_addr[1], src_addr[2] ,src_addr[3],彼此之間用“.”間隔開,得到數(shù)據(jù)包的源地址。同樣的,將ip指向tar_addr[0],tar_addr[1],tar_addr[2],tar_addr[3],用“.”間隔開,得到數(shù)據(jù)包的目的地址。然后在分別由src_port,dest_port,datalen

92、分別讀出數(shù)據(jù)包的源端口,目的端口,和數(shù)據(jù)包長度。Datalen由length[0]×+length[1]。</p><p>  最后,將該程序進行測試,該程序已經(jīng)具備了網(wǎng)絡流量測量的基本功能:捕獲數(shù)據(jù)包,對數(shù)據(jù)包進行IP層以上的分析。</p><p><b>  4.4 結果與測試</b></p><p>  為了更加客觀準確的顯示出

93、測量的數(shù)據(jù)包,我們首先直接將所截獲的TCP包和UDP包的不經(jīng)過加工直接顯示出來:</p><p>  首先截獲UDP包,以下是在本機上運行一個利用UDP傳輸?shù)某绦驎r,運行數(shù)據(jù)包捕獲程序所顯示的數(shù)據(jù)包:</p><p>  圖5-1 截獲的UDP包</p><p>  圖中所標記的11轉化為10進制數(shù)后為17(UDP協(xié)議號),在兩個字節(jié)后的部分ca 75 01 65表

94、示源地址,e0 02 f3 47表示目的地址。05 98表示該數(shù)據(jù)包長度為1432(注意長度從版本位+IHL開始計算,從圖中顯示為第一行45)。</p><p>  下圖是在本機上運行FTP軟件所截獲的TCP包:</p><p>  圖5-2 運行FTP程序所截獲的TCP數(shù)據(jù)包</p><p>  與UDP相同,圖中第二行所顯示的ca c8 ee e0表示的源地址,

95、隨后ca c8 ee 50所表示的是數(shù)據(jù)包的目的地址。不同的是在源地址前兩個字節(jié)處的06表示該數(shù)據(jù)包是利用TCP協(xié)議進行傳輸?shù)摹?5 dc表示該TCP數(shù)據(jù)包的大小為1500,起始位為版本+IHL,在圖中顯示為第一行的45。</p><p>  將以上所得到的數(shù)據(jù)包信息解析出來,用文字形式顯示出來就可以讓使用者能夠清楚明白的了解所在局域網(wǎng)絡的基本狀態(tài)了。如圖所示:</p><p>  圖5-

96、3 當前網(wǎng)絡基本狀態(tài)示意圖</p><p><b>  結  論</b></p><p>  通過網(wǎng)絡流量監(jiān)測統(tǒng)計的程序我們基本上可以了解到網(wǎng)絡數(shù)據(jù)包中所包含的一般信息,該程序提取出數(shù)據(jù)包中比較有代表性的信息:協(xié)議,源/目的地址,源/目的端口以及數(shù)據(jù)包長度。通過這些信息,我們就可以對網(wǎng)絡狀態(tài)有一個大體上的了解。通過源/目的地址可以知道在網(wǎng)絡上有哪些活動的主機,通過數(shù)據(jù)

97、包長度的累加可以了解到當前網(wǎng)絡的流量。</p><p>  本論文介紹的以原始套接字的方式對網(wǎng)絡數(shù)據(jù)進行捕獲的方法實現(xiàn)起來比較簡單,尤其是不需要編寫VxD虛擬設備驅(qū)動程序就可以實現(xiàn)抓包,使得其編寫過程變的比較簡便。但由于捕獲到的數(shù)據(jù)包頭不包含有幀信息,因此不能接收到與 IP 同屬網(wǎng)絡層的其它數(shù)據(jù)包, 如ARP數(shù)據(jù)包、RARP數(shù)據(jù)包等。由于所學知識有限,沒有對數(shù)據(jù)包做進一步的分析,而是僅僅給出了對一般信息的分析方法

98、。通過本論文的介紹,可對原始套接字的使用方法以及TCP/IP協(xié)議結構原理等知識有一個基本的認識。</p><p>  如果對TCP包/UDP包進行進一步的分析,就可以得到一些應用層的分析結果。這是通過對TCP/UDP協(xié)議的源端口和目的端口進行分析得到的。常用的一些協(xié)議的端口號有:</p><p>  1、SMTP(simple mail transfer protocol):簡單郵件傳輸協(xié)

99、議,端口號25</p><p>  2、POP3(post office protocol):電子郵局協(xié)議,端口號110</p><p>  3、FTP:文件傳輸協(xié)議,端口號21,</p><p>  4、HTTP:超文本傳輸協(xié)議,端口號80,</p><p>  5、Telnet:遠程終端會話協(xié)議,端口號23。</p><

100、;p>  這些進一步的分析工作由于開始階段的設計疏忽,沒有在最終的程序部分顯示出來。</p><p><b>  結 束 語</b></p><p>  應該說,在時間緊工作忙的情況下,在職完成畢業(yè)論文存在一定的困難,但通過老師的輔導及自己較好地處理工學矛盾,經(jīng)過一個多月的努力之后,我總算完成了這次畢業(yè)設計,雖然說還算順利,但是程序的編寫過程中遇到了不少的問題,

101、像Socket,Netbios以前在程序中基本上沒有使用過。</p><p>  在這里我要特別感謝***老師和高專函授站的***老師,在我挑選畢業(yè)設計題目和相關書籍過程中,他們給予了悉心的指導,使我能夠按照規(guī)定完成自己的畢業(yè)設計任務。</p><p>  在這里,我還要感謝我的哥哥,當我在程序中遇到問題時,常常能夠得到他耐心的講解,并在論文的完成過程中為我提出了很多的建議。</p&

102、gt;<p><b>  參考文獻</b></p><p>  熊桂喜,王小虎著,計算機網(wǎng)絡原理,北京:清華大學出版社,1998</p><p>  李增智,陳妍,計算機網(wǎng)絡原理.西安:西安交通大學出版社,2003</p><p>  朱雁輝,Windows防火墻與網(wǎng)絡封包截獲技術,北京:電子工業(yè)出版社,2002</p>

溫馨提示

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

評論

0/150

提交評論