?? csdn_文檔中心_用vxd技術設計網絡計費系統.htm
字號:
<TBODY>
<TR>
<TD align=middle bgColor=#fafafa class=td1 vAlign=top width=150><BR>
<SCRIPT src="CSDN_文檔中心_用VxD技術設計網絡計費系統.files/microsoft.js"></SCRIPT>
</TD>
<TD align=middle width=620>
<TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
<TBODY>
<TR bgColor=#ffffff>
<TD align=middle height=10 width=50></TD>
<TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A
href="http://www.csdn.net/develop/">文檔中心</A> - <FONT
color=#003399>Visual C++</FONT> </TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>標題</FONT></TD>
<TD><B> 用VxD技術設計網絡計費系統</B> lizhx(原作)
</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>關鍵字</FONT></TD>
<TD width=500> 用VxD技術設計網絡計費系統</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>出處</FONT></TD>
<TD height=10> <A
href="http://elizhx.yeah.net/">http://elizhx.yeah.net/</A></TD></TR>
<TR>
<TD align=middle height=10></TD>
<TD height=10></TD></TR></TBODY></TABLE><!--文章說明信息結束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>
<STYLE type=text/css>A:link {
COLOR: #006699; FONT-FAMILY: "宋體"; FONT-SIZE: 9pt; TEXT-DECORATION: none
}
A:visited {
COLOR: #000000; FONT-FAMILY: "宋體"; FONT-SIZE: 9pt; TEXT-DECORATION: none
}
A:active {
COLOR: #ff0000; FONT-FAMILY: "宋體"; FONT-SIZE: 9pt; TEXT-DECORATION: none
}
A:hover {
COLOR: #ff0000; FONT-FAMILY: "宋體"; FONT-SIZE: 9pt; TEXT-DECORATION: underline
}
BODY {
FONT-SIZE: 9pt
}
TH {
FONT-SIZE: 9pt
}
TD {
FONT-SIZE: 9pt
}
.ee {
FONT-FAMILY: "宋體"; FONT-SIZE: 9pt; LINE-HEIGHT: 9pt
}
A:hover {
COLOR: rgb(255,134,137); TEXT-DECORATION: underline
}
</STYLE>
<P align=center><FONT face=宋體 size=5>杭州商學院校園網網絡計費系統</FONT></P>
<P align=center>--計費信息獲取子系統的設計與實現 </P>
<P align=center>李壯相 </P>
<P><B>[摘要]</B> 本文給出了一個基于Web的、跨平臺的校園網網絡計費系統的初步設計與實<BR>
施方案,并給出系統的模塊結構和功能的描述,同時詳細地探討了計費信息<BR>
獲取子系統(底層數據報文截取及其接口)的分析、設計與實現。</P>
<P><B>[關鍵詞]</B>計費系統、底層數據報文截取、TCP/IP、FTP、數據報文、共享介質<BR>
信息流量、虛擬設備、VxD技術、數據采集、數據控制 </P>
<P><B>一、引言</B> </P>
<P>
因特網以其信息傳送方便、快捷、費用低廉,并且可以實現資源共享等諸多優點,深受廣大用戶青睞。目前,我院已通過國家教科<BR>網連入因特網,給我們的教學、科研帶來極大的方便,同時也不可回避因特網服務的計費問題。目前的網絡雖然在速度上有了很大的提<BR>高,但是隨著網絡用戶數量的迅速增加和傳輸量的增加(比如圖片和多媒體資料越來越普遍),網絡帶寬仍然很緊張。對網絡使用收取<BR>合理的費用一方面可以維持網絡的運行和發展,另一方面,也可以促使用戶合理使用網絡資源。由于網絡結構的多樣性和計費規則的復<BR>雜性,為此我們分析我院校園網的特點,在校園網網絡的軟硬件上提出了一種校園網的網絡計費系統的設計與實施方案。</P>
<P> 作為計費信息系統的基礎,計費信息的截取是系統整體的核心關鍵部分,該模塊的分析、設計與實現好壞直接影響著系統的設計與<BR>實現和校園網的網絡計費管理,本文對此進行詳細的探討和討論。
</P>
<P><B>二、系統設計和分析</B> </P>
<P> 國際上,計費管理負責監視和記錄用戶對網絡資源的使用,并分配網絡運行成本。其主要功能有: </P>
<UL>
<LI>數據的采集(包括簡單的統計功能),即從用于計費的設備(如計費路由器)中采集原始數據,經過簡單的統計后,放入數據庫。<BR>在數據采集的同時進行簡單的統計是必要的。一個原因是原始數據量是非常大的,如果全部記錄下來,數據庫往往不夠;另一個原<BR>因是對原始數據的查詢統計非常費時間,因此需要在數據采集的同時進行簡單的統計。
<LI>數據統計,即對數據庫中的數據進行進一步的統計,如對某個時間段的某個IP地址區間的流量統計。
<LI>流量分析,即結合數據庫中的流量數據和其它有關信息,對流量作出分析。如非法用戶流量,對敏感站點的訪問流量等。
<LI>計費信息查詢,即根據用戶管理模塊提出的查詢要求,通過權限檢查,根據用戶類型從數據統計和流量分析模塊中取得相應的查詢<BR>結果。
<LI>報表生成,即根據流量數據和收費規劃,計算用戶應交的費用,并生成報表。
<LI>計費規劃的維護,即修改各種計費參數,如單價、免費網段設置等。 </LI></UL>
<P> 我院校園網的主干網絡采用高速非共享介質的網絡結構,但是院內各部門與外界的互聯均依賴共享介質,所以我們設計的校園網網絡<BR>計費系統正是建立在這一"關口"上。</P>
<P> 在共享介質網絡中,流經這一網絡的任何數據包,均可由這一網段的任何一臺主機所截獲。因此,把網絡計費系統設計在與外界互聯<BR>的網段上,即可統計出校園內各部門與外界的所有通信量。</P>
<P> 總體上,我們所設計的網絡計費系統分為三部分,一是在Win32平臺上的線程對數據包的截獲,并且進行初步的整理,生成日志文件,<BR>并加適當的控制,這是低層的服務程序,作為前臺;而后臺則是在Windows
NT Server上的數據庫管理,用Borland Delphi
4.0開發,直接<BR>取得第一部分截取程序生成的日志文件和通過FTP獲取在Linux服務器上其它服務生成的日志文件,對其分析,統計出有效的數據信息,并至<BR>于以BDE驅動的數據庫文件中。三是計費信息用戶查詢子系統,使得用戶能在線通過權限查詢到自己各個時間段內的計費信息和費用情況,<BR>有利于減輕網絡管理員的工作負擔。</P>
<P> 具體情況如下:</P>
<P> ⑴、因特網采用的是TCP/IP協議,所以Win32平臺上的進程只要截獲到所有的IP數據包,就可以分析出所需要統計的計費信息。對于統<BR>計信息分以下幾種情況:<BR> FTP:又分上傳和下載,下載的數據報信息不用列入統計范圍,上傳則需要;<BR> UDP:數據報信息需要統計;<BR> 撥號上網:可以通過在路由器上生成的日志文件進行分析;<BR> 電子郵件:也可以通過Windows
NT
Server上的Nescape郵件服務器留下的日<BR> 志文件進行統計,而不需要進行數據報的截獲;<BR> ⑵、后臺的數據庫信息管理通過由Delphi開發的管理信息系統采集上述的數據信息實現的,對FTP、UDP、撥號上網和電子郵件的信息<BR>進行再次整理、分析,統計出必要的數據存于數據庫中,可供使用校園網服務的各部門查詢其費用情況之用。<BR> ⑶、計費信息用戶查詢子系統,用戶通過頁面瀏覽器訪問,提交請求反饋該用戶使用校園網信息服務的費用情況。查詢子系統通過權<BR>限(如身份認證)和查詢條件查詢數據庫的數據,輸出該用戶的需求的信息。</P>
<P> 系統計費依據</P>
<P> 對于網絡計費的信息而言,最根本的是IP地址、網絡流量以及時間段。因此,系統的計費依據就是IP的地址和流量,還有時間段的統<BR>計,以此信息作為收費規則。</P>
<P> ㈠、IP地址 區分出校內和校外、國內和國外。由于因特網的網絡地址管理都是劃分層次的,只要知道其隸屬于哪一層次即可進行<BR> 管理;<BR> ㈡、IP流量 區分出國內和國外的數據流量來統計;<BR> ㈢、時間段 對于撥號上網的用戶,不同的時間段有不同的收費規則;<BR> ㈣、特殊的校內部門有其對應的計費依據。</P>
<P><B>三、計費信息獲取子系統(底層數據報截取及其接口)的分析與設計</B></P>
<P>3.1 關于VxD技術<BR> ①
為什么要使用VxD技術<BR> 為了減輕服務器的負擔,而我院校園網的主干網絡采用高速非共享介質的網絡結構,但是院內各部門與外界的互聯均依賴共享介<BR>
質,根據這一特點可用一臺獨立的計算機來處理計費工作以達到這一目的。這臺服務器的操作系統可以是Linux也可以采用Win32,但<BR>
Win32具有易操作、可視化的的優點。雖然Win32平臺不支持對設備的直接存取,但可以采用VxD技術來實現這一功能。<BR> ②
VxD在網卡上應用的關鍵技術 <BR> A. 載入VxD <BR> #include <WINDOWS.H>HANDLE
hVxD; <BR> hVxD =
CreateFile("\\\\.\\VPACKET.VXD",<BR> GENERIC_READ |
GENERIC_WRITE,<BR> 0,<BR> NULL,
<BR> OPEN_EXISTING,<BR> FILE_ATTRIBUTE_NORMAL
| FILE_FLAG_OVERLAPPED | FILE_FLAG_DELETE_ON_CLOSE, NULL);
<BR> if (hVxD == INVALID_HANDLE_VALUE)
<BR> return SYSERR; <BR> B. 釋放VxD
<BR> CloseHandle(hVxD); <BR> C. 綁定VxD到網絡接口卡 <BR> int
Bind(HANDLE hVxD, BYTE* inBuffer) <BR> { <BR> HANDLE hEvent;
<BR> DWORD cbRet; <BR> OVERLAPPED ovlp = {0,0,0,0,0};
<BR> int result; <BR> int cbIn = 5; <BR> hEvent =
CreateEvent(0, TRUE, 0, NULL); <BR> if (!hEvent) <BR> return
SYSERR; <BR> ovlp.hEvent = hEvent;
//DeviceIoControl函數直接發送一個控制碼給指定的設備促使相應的設備去執行指定的操作 <BR> result =
DeviceIoControl(hVxD,<BR> IOCTL_PROTOCOL_BIND,<BR> inBuffer,
<BR> cbIn, <BR> inBuffer,
<BR> cbIn, <BR> &cbRet,
<BR> &ovlp); <BR> if (!result)
<BR> GetOverlappedResult(hVxD,<BR> &ovlp,
<BR> &cbRet, <BR> TRUE);
<BR> CloseHandle(hEvent);<BR> return OK;
<BR> }<BR> D.讀數據包 <BR> int RcvPacket(HANDLE hVxD, BYTE*
Buffer, DWORD cbIn) <BR> { <BR> HANDLE hEvent; <BR> DWORD
cbRet = 0; <BR> OVERLAPPED ovlp = {0,0,0,0,0}; <BR> int
result; <BR> hEvent = CreateEvent(0, TRUE, 0, NULL); <BR> if
(!hEvent) <BR> return SYSERR; <BR> ovlp.hEvent = hEvent;
<BR> result =
DeviceIoControl(hVxD,<BR> IOCTL_PROTOCOL_READ,<BR> Buffer,
<BR> cbIn, <BR> Buffer,
<BR> cbIn, <BR> &cbRet,
<BR> &ovlp); <BR> if (!result)
<BR> GetOverlappedResult(hVxD, <BR> &ovlp,
<BR> &cbRet, <BR> TRUE);
<BR> CloseHandle(hEvent); <BR> return cbRet;
<BR> }<BR> E.送數據包
<BR> 與IOCTL_PROTOCOL_READ相似,此時參數為IOCTL_PROTOCOL_WRITE </P>
<P>3.2 截取部分的分析與設計</P>
<P> 由于校園網網絡計費系統分為三大部分,采用底層數據報文截取來提供計費管理的信息依據,所以首先就要從相關的網絡方面知識入手。</P>
<P> 在計算機網絡體系結構中,雖然TCP/IP體系結構不是國際標準,但占有非常重要的地位。世界上第一個分組交換網是美國軍方的實驗網<BR>ARPANET,它的體系結構也采用分層次的結構。當初的ARPANET現已發展成為世界上規模最大的計算機網絡Internet,即因特網。在因特網所<BR>使用的協議中,最著名的就是運輸層的TCP傳輸控制協議和網絡層的IP互連網協議。TCP/IP體系結構已成為計算機網絡的事實上的國際標準,<BR>也稱為工業標準。
又因為因特網采用的是TCP/IP協議(傳輸控制協議與互連網協議),流經共享介質的網絡任何的數據報文遵循著該協議,<BR>所以Win32操作系統平臺上的數據報截取進程模塊只要截獲到所有的TCP/IP數據報,從其報文的首部即可分析出所需的必要計費數據信息。</P>
<P> 而對于網絡計費系統的計費信息而言,最根本的是源IP地址、目的IP地址、源端口、目的端口、TCP/IP數據報文的長度以及報文流經該<BR>共享介質網段的時間。這些信息的獲取就要采用TCP/IP協議,進行相應的處理。因此,網絡計費系統計費依據的獲取就是IP的源、目的地址,<BR>源、目的端口和TCP/IP數據報文長度,還有報文流經的時間這項重要信息的獲取。</P>
<P> 首先是分析TCP/IP網絡體系下兩個最主要的協議--互連網協議IP和傳輸控制協議的數據報文格式開始,從協議報文最基本的字段信息中<BR>提取出對計費管理有效的數據依據。</P>
<P>以下詳細描述TCP/IP報文格式。 </P>
<P>IP數據報文段的格式如下所示:</P>
<P><IMG height=178 src="" width=538> </P>
<P>其中首部中幾個重要字段的意義是: </P>
<UL>
<LI>總長度 占16Bit,是指首部和數據之和的長度,單位為字節,在本文中又稱之為流量,數據報文的最大長度為65535字節,<BR>這在當前是夠用的
<LI>協議 占8Bit,是指此數據報文所攜帶的運輸層數據是使用何種協議,以便目的主機的IP層知道應將此數據報文上交給哪<BR>個進程,常用的協議和相應的協議字段值是:
<BR> UDP(17)、TCP(6)、ICMP(1)、GCP(3)、EGP(8)、IGP(9)<BR>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -