網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn)_第1頁
網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn)_第2頁
網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn)_第3頁
網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn)_第4頁
網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、- I - 密級: 學(xué)學(xué) 士士 學(xué)學(xué) 位位 論論 文文 THESIS OF BACHELOR 題 目 網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn)網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn) 學(xué) 院: 專 業(yè): 計算機(jī)科學(xué)與技術(shù)計算機(jī)科學(xué)與技術(shù) 班 級: 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 起訖日期: - - 網(wǎng)絡(luò)流量測量軟件的設(shè)計與實現(xiàn) 摘摘 要:要:為了方便網(wǎng)絡(luò)編程,90 年代初,由 Microsoft 聯(lián)合了其他 幾家公司共同制定了一套 WINDOWS 下的網(wǎng)絡(luò)編程接口,即 Windows Sockets 規(guī)范,它不是一種網(wǎng)絡(luò)協(xié)議,而是一套開放的、支持多種協(xié) 議的 Windows 下的網(wǎng)絡(luò)編程接口。本篇論文主要是介紹了在

2、 TCP/IP 基礎(chǔ)上利用 winsock2 對網(wǎng)卡進(jìn)行編程,以達(dá)到網(wǎng)絡(luò)流量監(jiān)測的目的。 論文首先介紹了 TCP/IP 協(xié)議,旨在介紹 IP,TCP,UDP 等比較重要 的協(xié)議。主要是介紹 IP 頭,TCP 頭,UDP 頭的特點,以便從 IP 頭中 可以獲取源地址,目的地址,協(xié)議類型等信息。在隨后的章節(jié)中提 出了 Socket 的概念,Socket 實際上提供了一個通信端口使所有擁 有 Socket 的端口的計算機(jī)之間能夠相互通信,在本論文中主要說明 了 socket 的建立,監(jiān)聽和撤銷的過程。具體到程序?qū)崿F(xiàn)中,對網(wǎng)卡 混雜模式的設(shè)置是通過原始套接字(raw socket)來實現(xiàn)的。為了 讓原

3、始套接字能接受所有的數(shù)據(jù),還需要通過將 SOCK_RAW 設(shè)置成 SIO_RCVALL。對數(shù)據(jù)包的獲取通過 recv()函數(shù)來完成。最后要完成 的工作就是對所捕獲的 IP 數(shù)據(jù)包進(jìn)行分析以提取出我們所需要的信 息。在論文的最后是旨在說明進(jìn)一步工作的展開。 關(guān)鍵字: TCP/IP,Winsock,原始套接字,NetBios - Abstract: For convenience of network programming, in the early 1990s, a new set of network programming interface using under WINDOWS was

4、 established by some companies united by Microsoft. It is known as Windows Socket Norm. It isnt a kind of network protocol, but an open network programming interface support multiple protocols under WINDOWS. The main purpose of the thesis is to introduce how to use Winsock2 program on network adapte

5、r under the protocol of TCP/IP. This is for the purpose of measure the network discharge. At the beginning of the thesis, we introduce all important protocols of TCP/IP, like IP, TCP, and UDP. We introduce IP header, TCP header and UDP header for the most important because we need acquire the inform

6、ation of source address, destination address, and protocol type from the IP header. In the following section, we give the 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 pr

7、ocess of the Sockets building listening and 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 need analyze the data pack to get the -

8、information we need. KEYKEY WORDSWORDS:TCP/IP, Winsock,RAW SOCKET, NetBIOS 目目錄錄 摘要.1 Abstract.2 前言.4 第一章緒論5 1.1TCP/IP 協(xié)議及其協(xié)議分析方法.5 1.1.1分層.5 1.1.2IP 地址.6 1.1.3端口.6 1.1.4TCP/IP 協(xié)議在 Windows 中的實現(xiàn).7 1.2Winsock 編程.7 1.3網(wǎng)絡(luò)流量測量的程序?qū)崿F(xiàn)原理.8 第二章TCP/IP 協(xié)議集9 2.1TCP/IP 協(xié)議簡介.9 2.2IP 協(xié)議.9 2.3TCP 協(xié)議.10 2.3.1TCP 服務(wù)模型.

9、10 2.3.2TCP 數(shù)據(jù)段頭.11 2.3.3TCP 協(xié)議的建立.12 2.4UDP 協(xié)議.13 第三章WINSOCK 編程概述14 3.1套接字的概念.14 3.2套接字的種類.14 3.3套接字的建立.14 第四章網(wǎng)絡(luò)流量測量的程序?qū)崿F(xiàn).16 4.1網(wǎng)卡初始化.16 4.1.1NetBios 概述16 4.1.2利用 NetBios 來初始化網(wǎng)卡.16 4.2原始套接字的設(shè)置.16 4.3IP 包的協(xié)議分析17 - 4.4結(jié)果與測試.19 結(jié) 論.21 結(jié)束語.22 參考文獻(xiàn)23 前前 言言 隨著計算機(jī)網(wǎng)絡(luò)技術(shù)日新月異的發(fā)展,Internet 的逐漸普及,網(wǎng)絡(luò)對于人們已經(jīng)不再 是一個陌

10、生的概念??梢哉f,網(wǎng)絡(luò)已經(jīng)在很多人的生活中占據(jù)了重要的地位。于是,各種 各樣的軟件隨之誕生,使人們能夠更加方便,快捷的訪問網(wǎng)絡(luò),了解網(wǎng)絡(luò)以充分的利用網(wǎng) 絡(luò)。 本論文就是向大家介紹網(wǎng)絡(luò)中比較常用的技術(shù)網(wǎng)絡(luò)流量的監(jiān)測。在介紹具體的程 序?qū)崿F(xiàn)之前,論文首先介紹了 TCP/IP 協(xié)議,可以說,任何網(wǎng)絡(luò)技術(shù)都與 TCP/IP 協(xié)議有著 密切的關(guān)聯(lián),TCP/IP 協(xié)議給不同型號的計算機(jī),不同的操作系統(tǒng)之間提供了相互通信的平 臺。TCP/IP 起源于 60 年代末美國政府資助的一個分組交換網(wǎng)絡(luò)研究項目,到現(xiàn)在 90 年代 已發(fā)展成為計算機(jī)之間最常應(yīng)用的組網(wǎng)形式。它是一個真正的開放系統(tǒng),因為協(xié)議組件的 定義及

11、其多種實現(xiàn)可以不用花錢或花很少的錢就可以公開地得到。 在進(jìn)行網(wǎng)絡(luò)流量的測量之前,我們首先要對本地機(jī)的信息有一個了解。這些信息的獲 取是通過 Netbios 來完成的。Netbios 利用其網(wǎng)絡(luò)控制快 NCB 來完成我們需要它去完成的 對網(wǎng)卡的初始化工作。通過 ncb_command 來發(fā)出命令完成對網(wǎng)卡的操作。通過發(fā)送 NCBENUM 命令獲取網(wǎng)卡的數(shù)目和每個網(wǎng)卡的內(nèi)部編號;對選定的網(wǎng)卡發(fā)送一個 NCBRESET 命 令,以便進(jìn)行初始化;接著,可以發(fā)送 NCBASTAT 命令以獲取網(wǎng)卡的信息。這樣,我們可以 讀出網(wǎng)卡的 MAC 地址以便進(jìn)行進(jìn)一步的工作。 要實現(xiàn)網(wǎng)絡(luò)流量的測量,Winsock

12、給我們提供了一個接口,我們通過這個接口可以實 現(xiàn)對 IP 層以上的層的數(shù)據(jù)包的監(jiān)測。我們通過建立原始套接字,利用 Winsock 提供給我們 的一些特定的函數(shù)就可以完成對網(wǎng)絡(luò)數(shù)據(jù)包的捕獲。首先需要建立一個 socket,將它設(shè)置 成為是對 ip 頭的操作,然后利用 gethostname,phost 獲取本機(jī)名,本機(jī) ip 地址。將本機(jī) 地址與 IP 地址綁定之后,將網(wǎng)卡設(shè)置為混雜模式,以便對所有經(jīng)過它的數(shù)據(jù)包進(jìn)行接收。 在這些準(zhǔn)備工作已經(jīng)做好之后,余下的就是利用 recv()來捕獲網(wǎng)絡(luò)中的數(shù)據(jù)包。 到現(xiàn)在為止,我們所作的工作都是分析工作的鋪墊。我們最后所要看到的就是網(wǎng)絡(luò)數(shù) 據(jù)包的分析結(jié)果。在

13、數(shù)據(jù)包的分析過程中,用戶一般想得到的主要信息不外乎是包的協(xié)議 類型,源/目的地址,發(fā)送/接收端口以及包的大小,定義指針,分別指向數(shù)據(jù)包的相對應(yīng) - 的位置就可以得到這些信息。將得到的信息羅列并顯示出來之后,我們就完成了對網(wǎng)絡(luò)中 數(shù)據(jù)包的流量監(jiān)測過程。 在論文的最后對整篇論文進(jìn)行了總結(jié),說明了一些不足之處,并對所有對這篇論文知 道并建議的老師等表示感謝。 第一章第一章緒論緒論 1.11.1TCP/IPTCP/IP 協(xié)議及其協(xié)議分析方法協(xié)議及其協(xié)議分析方法 TCP/IP 起源于 60 年代末美國政府資助的一個分組交換網(wǎng)絡(luò)的研究項目,到現(xiàn)在 90 年 代已發(fā)展成為計算機(jī)之間最常用的組網(wǎng)形式。它是一個

14、真正的開放系統(tǒng),因為協(xié)議組件的 定義及其多種實現(xiàn)可以不用花錢或花很少的錢就可以公開地得到。它成為被稱作“全球互 聯(lián)網(wǎng)”或“因特網(wǎng)”(Internet)的基礎(chǔ)。 .1分層分層 協(xié)議分層的概念的提出是為了減少協(xié)議設(shè)計的復(fù)雜性,每一層都建立到它的下層之上, 每一層的目的就是為了向上一層提供特定的服務(wù)。一臺機(jī)器的第 n 層向另一臺機(jī)器的第 n 層會話,通話的規(guī)則稱為協(xié)議。分層和協(xié)議構(gòu)成了網(wǎng)絡(luò)體系結(jié)構(gòu)。 在提到了分層的概念時就不能不提一下 OSI 參考模型。該模型基于國際化標(biāo)準(zhǔn)組織, 共分為七層: 物理層:涉及到通信在信道上傳輸?shù)脑急忍亓鳌?數(shù)據(jù)鏈路層:加強(qiáng)物理層傳輸原始比特流的功能,

15、使之對網(wǎng)絡(luò)層顯現(xiàn)為一條無錯 線路 網(wǎng)絡(luò)層:關(guān)系到子網(wǎng)的運(yùn)行控制,其中一個關(guān)鍵的問題就是路由選擇。 傳輸層:為用戶提供端到端的數(shù)據(jù)傳送服務(wù)。 會話層:允許不同機(jī)器上的用戶建立會話關(guān)系,為用戶提供會話控制服務(wù)。 表示層:為用戶提供數(shù)據(jù)轉(zhuǎn)換和表示服務(wù)。 應(yīng)用層:為用戶提供訪問 OSI 的接口,其中包括大量的常見的協(xié)議。 TCP/IP 通常被認(rèn)為是一個四層協(xié)議系統(tǒng),每一層負(fù)責(zé)不同的功能。 數(shù)據(jù)鏈路層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機(jī)中對應(yīng)的網(wǎng)絡(luò)接口卡。 - 它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細(xì)節(jié)。 網(wǎng)絡(luò)層,處理分組在網(wǎng)絡(luò)中的活動,例如分組的路由選擇。在 TCP/IP 協(xié)議組件中

16、, 網(wǎng)絡(luò)層協(xié)議包括 IP 協(xié)議(網(wǎng)際協(xié)議) ,ICMP 協(xié)議(Internet 互連網(wǎng)控制報文協(xié)議) , 以及 IGMP 協(xié)議(Internet 組管理協(xié)議) 。 運(yùn)輸層,主要為兩臺主機(jī)上的應(yīng)用程序提供端到端的通信。在 TCP/IP 協(xié)議組件中, 有兩個互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和 UDP(用戶數(shù)據(jù)報協(xié)議) 。 TCP 為兩臺主機(jī)提供高可靠性的數(shù)據(jù)通信。而另一方面,UDP 則為應(yīng)用層提供一種 非常簡單的服務(wù)。它只是把稱作數(shù)據(jù)報的分組從一臺主機(jī)發(fā)送到另一臺主機(jī),但并不 保證該數(shù)據(jù)報能到達(dá)另一端。 應(yīng)用層,負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的 TCP/IP 實現(xiàn)都會提供下 面

17、這些通用的應(yīng)用程序: Telnet 遠(yuǎn)程登錄,F(xiàn)TP 文件傳輸協(xié)議,SMTP 用于電子郵 件的簡單郵件傳輸協(xié)議,SNMP 簡單網(wǎng)絡(luò)管理協(xié)議。 圖 1-1 OSI 模型與 TCP/IP 模型的比較 如圖所示,OSI 模型有七層,而 TCP/IP 模型只有 4 層。OSI 模型在網(wǎng)絡(luò)層支持無連接 和面向連接的通信,而 TCP/IP 模型在網(wǎng)絡(luò)層僅有無連接的通信方式,但是在傳輸層卻支持 兩種模式,更好的面向了用戶。 .2IPIP 地址地址 互連網(wǎng)上的每個接口必須有一個唯一的 Internet 地址(也稱作 IP 地址) 。IP 地址長 32 bit。這些 32 位的地址通常寫成四個十

18、進(jìn)制的數(shù),其中每個整數(shù)對應(yīng)一個字節(jié)。這種表示方 法稱作“點分十進(jìn)制表示法” 。需要再次指出的是,多接口主機(jī)具有多個 IP 地址,其中每 個接口都對應(yīng)一個 IP 地址。 - 由于互連網(wǎng)上的每個接口必須有一個唯一的 IP 地址,因此必須要有一個管理機(jī)構(gòu)為接 入互連網(wǎng)的網(wǎng)絡(luò)分配 IP 地址。這個管理機(jī)構(gòu)就是互連網(wǎng)絡(luò)信息中心(Internet Network Information Centre)稱作 InterNIC。InterNIC 只分配網(wǎng)絡(luò)號。主機(jī)號的分配由系統(tǒng)管理員來 負(fù)責(zé)。 .3端口端口 網(wǎng)絡(luò)中可以被命名和尋址的通信端口,是操作系統(tǒng)可分配的一種資源。按照 OSI 七層 協(xié)議

19、的描述,傳輸層與網(wǎng)絡(luò)層在功能上的最大區(qū)別是傳輸層提供進(jìn)程通信能力。從這個意 義上講,網(wǎng)絡(luò)通信的最終地址就不僅僅是主機(jī)地址了,還包括可以描述進(jìn)程的某種標(biāo)識符。 為此,TCP/IP 協(xié)議提出了協(xié)議端口(protocol port,簡稱端口)的概念,用于標(biāo)識通信的進(jìn) 程。端口是一種抽象的軟件結(jié)構(gòu),應(yīng)用程序(即進(jìn)程)通過系統(tǒng)調(diào)用與某端口建立連接后, 傳輸層傳給該端口的數(shù)據(jù)都被相應(yīng)進(jìn)程所接收,相應(yīng)進(jìn)程發(fā)給傳輸層的數(shù)據(jù)都通過該端口 輸出。在 TCP/IP 協(xié)議的實現(xiàn)中,端口操作類似于一般的 I/O 操作,進(jìn)程獲取一個端口,相 當(dāng)于獲取本地唯一的 I/O 文件,可以用一般的讀寫原語訪問之。 類似于文件描述符

20、,每個端口都擁有一個叫端口號(port number)的整數(shù)型標(biāo)識符, 用于區(qū)別不同端口。端口號的分配是一個重要問題。端口號的分配有兩種基本分配方式: 第一種叫全局分配,這是一種集中控制方式,由一個公認(rèn)的中央機(jī)構(gòu)根據(jù)用戶需要進(jìn)行統(tǒng) 一分配,并將結(jié)果公布于眾。第二種是本地分配,又稱動態(tài)連接,即進(jìn)程需要訪問傳輸層 服務(wù)時,向本地操作系統(tǒng)提出申請,操作系統(tǒng)返回一個本地唯一的端口號,進(jìn)程再通過合 適的系統(tǒng)調(diào)用將自己與該端口號綁定起來。 .4TCP/IPTCP/IP 協(xié)議在協(xié)議在 WindowsWindows 中的實現(xiàn)中的實現(xiàn) 對 TCP/IP 協(xié)議有了一個結(jié)構(gòu)性的了解之后,就要考慮 T

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

22、ndows 應(yīng)用程序 與 TCP/IP 之間的通信界面。如圖: - 圖 1-2 Winsock 在 TCP/IP 和 OSI 中的表示 在 Windows 中,利用 Winsock 通信需經(jīng)過幾個步驟:初始化 Winsock,創(chuàng)建套接字,建 立會話,傳送數(shù)據(jù),中止會話,中止 Winsock。Winsock 既可以提供機(jī)器間的通訊,又可提 供 Windows 進(jìn)程間的通信。 1.31.3網(wǎng)絡(luò)流量測量的程序?qū)崿F(xiàn)原理網(wǎng)絡(luò)流量測量的程序?qū)崿F(xiàn)原理 網(wǎng)絡(luò)流量監(jiān)測器也是通過對網(wǎng)卡的編程來實現(xiàn)網(wǎng)絡(luò)通訊的,對網(wǎng)卡的編程也是使用通 常的套接字(socket)方式來進(jìn)行。但是,通常的套接字程序只能響應(yīng)與自己硬件地址

23、相 匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對于其他形式的數(shù)據(jù)幀比如已到達(dá)網(wǎng)絡(luò)接口但卻不 是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗證投遞地址并非自身地址之后將不引起響應(yīng),也就 是說應(yīng)用程序無法收取到達(dá)的數(shù)據(jù)包。而網(wǎng)絡(luò)監(jiān)測器的目的恰恰在于從網(wǎng)卡接收所有經(jīng)過 它的數(shù)據(jù)包,這些數(shù)據(jù)包即可以是發(fā)給它的也可以是發(fā)往別處的。顯然,要達(dá)到此目的就 必須將其設(shè)置為混雜模式。 這種對網(wǎng)卡混雜模式的設(shè)置是通過原始套接字(raw socket)來實現(xiàn)的,這也有別于 通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報套接字。在創(chuàng)建了原始套接字后,需要通過 Setsockopt()函數(shù)來設(shè)置 IP 頭操作選項,然后再通過 bind()函數(shù)將原始套

24、接字綁定到本 地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過 ioctlsocket()來進(jìn)行設(shè)置, 而且還可以指定是否親自處理 IP 頭。至此,實際就可以開始對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行監(jiān)測了,對 數(shù)據(jù)包的獲取仍通過 recv()函數(shù)來完成。 - 第二章第二章TCP/IPTCP/IP 協(xié)議集協(xié)議集 2.12.1TCP/IPTCP/IP 協(xié)議簡介協(xié)議簡介 很多不同的廠家生產(chǎn)各種型號的計算機(jī),它們運(yùn)行完全不同的操作系統(tǒng),但 TCP/IP 協(xié) 議組件允許它們互相進(jìn)行通信。TCP/IP 模型是一種層級式(Layering)的結(jié)構(gòu),每一層都 呼叫它的下一層所提供的服務(wù)來完成自己的需求。TCP/IP 模型可以

25、分為以下四層:應(yīng)用層、 傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層。本章主要對 TCP/IP 協(xié)議組件進(jìn)行概述。 2.22.2IPIP 協(xié)議協(xié)議 IP 是 TCP/IP 協(xié)議族中最為核心的協(xié)議。所有的 TCP,UDP,ICMP,及 IGMP 數(shù)據(jù)都以 IP 數(shù)據(jù)報格式傳輸。與大多數(shù)網(wǎng)絡(luò)層協(xié)議不同,IP 協(xié)議一開始就是為了網(wǎng)絡(luò)互連的目的而 設(shè)計的,它的工作是提供一種從源端到目的端傳輸數(shù)據(jù)報的最佳嘗試方法,不管這些機(jī)器 是否在同一網(wǎng)絡(luò)中。我們可以通過分析 IP 數(shù)據(jù)報的頭部來更好的了解 IP 協(xié)議: . 7、生命期(time to life):是同一個用來限制分組生命周期的計數(shù)器,最長生命周 期 255s,它必須

26、在每個節(jié)點都遞減,而且當(dāng)一個路由器中排隊時間過長可以十倍數(shù)遞減。 8、協(xié)議(protocol):說明將它送給哪個傳輸進(jìn)程的,協(xié)議的編號在整個因特網(wǎng)上是 全球通用的,它定義于 RFC 1700 中。 9、頭部. - . 圖 2.4 UDP 頭 源端口和目的端口的作用與 TCP 中完全相同。UDP 長度字段指明包括 8 字節(jié)的頭和數(shù) 據(jù)在內(nèi)的數(shù)據(jù)段長度。UDP 校驗和字段包括偽 UDP 頭,UDP 頭,UDP 數(shù)據(jù),如果有必要再補(bǔ) 充為偶數(shù)個字節(jié)。該字段是可選的,而且在不用于運(yùn)算時記為 0。 使用 UDP 協(xié)議時,為了傳輸數(shù)據(jù),首先要設(shè)置客戶計算機(jī)的 LocalPort 屬性。然后服 務(wù)器計算機(jī)只

27、需將 RemoteHost 設(shè)置為客戶計算機(jī)的 IP 地址,并將 RemotePort 屬性設(shè)置為 與客戶計算機(jī) LocalPort 屬性相同的端口,最后調(diào)用 SendData 方法來發(fā)送信息,而客戶計 算機(jī)則使用 DataArrival 事件內(nèi)的 GetData 方法來獲取服務(wù)器計算機(jī)發(fā)送來的信息。 第三章第三章WinsockWinsock 編程概述編程概述 Winsock 就是 Windows Socket 的簡稱。最簡單地說,Winsock 就是 Windows 應(yīng)用程序 與 TCP/IP 之間的通信界面。當(dāng)然,Winsock 還支持其他一些網(wǎng)絡(luò)協(xié)議棧,例如,Novell 的 IPX/S

28、PX 協(xié)議?!,F(xiàn)在最新版本是 Winsock2.0 版。 3.13.1套接字的概念套接字的概念 Socket 是網(wǎng)絡(luò)上運(yùn)行的兩個程序間雙向通信連接的一端。Socket 這個詞的一般意義是 自然的或人工的插口,如家用電器的電源插口等??蛻舫绦蚩梢韵?Socket 寫請求,服務(wù)器將 處理此請求,然后通過 Socket 把結(jié)果返回給客戶。Socket 是一種底層連接??蛻魴C(jī)和服務(wù)器 通過寫入到 Socket 的字節(jié)流進(jìn)行通信。它們必須有共同的協(xié)議,也就是說,通過 Socket 相互 傳送信息時所用的語言必須是協(xié)定好的。 3.23.2套接字的種類套接字的種類 流式套接字(SOCK_STREAM):提供

29、了一個面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無差 - 錯、無重復(fù)地發(fā)送,且按發(fā)送順序接收。內(nèi)設(shè)流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看作是 字節(jié)流,無長度限制。文件傳送協(xié)議(FTP)即使用流式套接字。 數(shù)據(jù)報式套接字(SOCK_DGRAM):提供了一個無連接服務(wù)。數(shù)據(jù)包以獨(dú)立包形式被發(fā) 送,不提供無錯保證,數(shù)據(jù)可能丟失或重復(fù),并且接收順序混亂。網(wǎng)絡(luò)文件系統(tǒng)(NFS)使 用數(shù)據(jù)報式套接字。 原始套接字(SOCK_RAW): 該接口允許對較低層協(xié)議,如 IP、ICMP 直接訪問。常用 于檢驗新的協(xié)議實現(xiàn)或訪問現(xiàn)有服務(wù)中配置的新設(shè)備。 3.33.3套接字的建立套接字的建立 一個人要能夠收到別人打給他的電話,首

30、先他要裝上一門電話。同樣,必須先建立 socket 以偵聽線路。這個過程包含幾個步驟。首先,要建立一個新的 socket,就像先裝上 電話一樣。socket() 命令就完成這個工作。 因為 sockets 有幾種類型,因此要注明我們要建立什么類型的。我們要做一個選擇是 socket 的地址格式。如同電話有音頻和脈沖兩種形式一樣,socket 有兩個最重要的選項是 AF_UNIX 和 AF_INET。我們這里將著重于 AF_INET 方式。AF_INET 使用 3 這樣被點號隔開的四個十進(jìn)制數(shù)字的地址格式。除了機(jī)器地址以外,還可以利用端口號允 許每臺機(jī)器上的多個 . . 第

31、四章第四章網(wǎng)絡(luò)流量測量的程序?qū)崿F(xiàn)網(wǎng)絡(luò)流量測量的程序?qū)崿F(xiàn) 4.14.1 網(wǎng)卡初始化網(wǎng)卡初始化 本論文在介紹對網(wǎng)卡初始化的過程中,主要介紹以下幾項工作:獲得網(wǎng)卡的 MAC 地址, - 得到本機(jī)網(wǎng)卡的數(shù)目,Reset 網(wǎng)卡,通過 IP 地址得到機(jī)器名。在論文中把這幾項工作一起 放到網(wǎng)卡初始化部分介紹,其中一個主要原因就是這些主要都是利用 NetBios 來完成的。 下面我們來詳細(xì)介紹。 .1 NetBiosNetBios 概述概述 NetBios 是 PC 網(wǎng)絡(luò)中用得最為廣泛的網(wǎng)絡(luò)協(xié)議之一,大多數(shù)的局域網(wǎng)(LAN)產(chǎn)品都 支持 NetBios。因此,將 NetBios 作為網(wǎng)絡(luò)協(xié)議的

32、優(yōu)點是:基于 NetBios 網(wǎng)絡(luò)應(yīng)用程序并 不需修改便能在其它各種網(wǎng)絡(luò)環(huán)境下運(yùn)行,用戶將享受到極大的靈活性,既使改用了其它 網(wǎng)絡(luò)也能繼續(xù)使用原先的應(yīng)用程序,避免了重復(fù)投入。 .2 利用利用 NetBiosNetBios 來初始化網(wǎng)卡來初始化網(wǎng)卡 NetBios API 只包括了一個函數(shù),就叫做 NetBios。這個函數(shù)使用網(wǎng)絡(luò)控制塊 NCB(network control block)結(jié)構(gòu)作為參數(shù),這個結(jié)構(gòu)告訴函數(shù)要做什么。這個結(jié)構(gòu)中包 括多個成員,如 ncb_command,ncb_num,ncb_length 等。 我們著重介紹一下 nc . 為了更加客觀準(zhǔn)確的顯示出測量

33、的數(shù)據(jù)包,我們首先直接將所截獲的 TCP 包和 UDP 包 的不經(jīng)過加工直接顯示出來: 首先截獲 UDP 包,以下是在本機(jī)上運(yùn)行一個利用 UDP 傳輸?shù)某绦驎r,運(yùn)行數(shù)據(jù)包捕獲 程序所顯示的數(shù)據(jù)包: 圖 5-1 截獲的 UDP 包 圖中所標(biāo)記的 11 轉(zhuǎn)化為 10 進(jìn)制數(shù)后為 17(UDP 協(xié)議號),在兩個字節(jié)后的部分 ca 75 01 65 表示源地址,e0 02 f3 47 表示目的地址。05 98 表示該數(shù)據(jù)包長度為 1432(注 - 意長度從版本位IHL 開始計算,從圖中顯示為第一行 45)。 下圖是在本機(jī)上運(yùn)行 FTP 軟件所截獲的 TCP 包: 圖 5-2 運(yùn)行 FTP 程序所截獲的

34、 TCP 數(shù)據(jù)包 與 UDP 相同,圖中第二行所顯示的 ca c8 ee e0 表示的源地址,隨后 ca c8 ee 50 所 表示的是數(shù)據(jù)包的目的地址。不同的是在源地址前兩個字節(jié)處的 06 表示該數(shù)據(jù)包是利用 TCP 協(xié)議進(jìn)行傳輸?shù)摹?5 dc 表示該 TCP 數(shù)據(jù)包的大小為 1500,起始位為版本IHL,在圖 中顯示為第一行的 45。 將以上所得到的數(shù)據(jù)包信息解析出來,用文字形式顯示出來就可以讓使用者能夠清楚 明白的了解所在局域網(wǎng)絡(luò)的基本狀態(tài)了。如圖所示: 圖 5-3 當(dāng)前網(wǎng)絡(luò)基本狀態(tài)示意圖 - 結(jié)結(jié)論論 通過網(wǎng)絡(luò)流量監(jiān)測統(tǒng)計的程序我們基本上可以了解到網(wǎng)絡(luò)數(shù)據(jù) 包中所包含的一般信息,該程序提取出數(shù)據(jù)包中比較有代表性的信 息:協(xié)議,源/目的地址,源/目的端口以及數(shù)據(jù)包長度。通過這些 信息,我

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論