第一篇:計算機網絡課程設計(精選)
課程設計(論文)任務書
信息工程 學院
計算機應用 專業 計算機2010-1 班
一、課程設計(論文)題目 計算機網絡課程設計
二、課程設計(論文)工作自 2012 年 6 月 18 日起至 2012 年 6 月 22 日止。
三、課程設計(論文)地點: 創新大樓405有線網絡實驗室。
四、課程設計(論文)內容要求: 1.本課程設計的目的
通過課程設計,使學生理論聯系實際,在實踐中進一步了解計算機網絡體系結構,深入理解TCP/IP參考模型,掌握各種網絡工程技術和網絡規劃與設計,初步掌握綜合布線技術、高速局域網技術、廣域網接入技術、網絡互聯技術,初步掌握網絡應用程序開發技術以及互聯網的應用技術。培養學生分析、解決問題的能力,提高學生的科技論文寫作能力。2.課程設計的任務及要求 1)基本要求:
(1)熟悉交換機、路由器等網絡設備的功能和使用;(2)掌握網絡規劃與設計,掌握網絡安全與管理技術;(3)初步掌握網絡應用程序設計技術和互聯網應用技術。2)課程設計論文編寫要求
(1)理論設計部分以課程設計論文的形式提交,格式必須按照課程設計論文標準格式進行書寫和裝訂。
(2)課程設計報告(論文)包括目錄、緒論、正文、設計小結、參考文獻、附錄等
3)課程設計評分標準:
(1)考勤與學習態度:20分
(2)理論理解與課程設計報告論文:40分;
(3)動手操作與實驗設計:20分;
(4)設計論文答辯:20分。4)參考文獻:
(1)《計算機網絡(第5版)》,謝希仁主編,電子工業出版社出版
(2)《windows網絡編程技術》,胡鳴主編,科學出版社出版
(3)網上百度 5)課程設計進度安排
內容 天數 地點
1.選擇設計題目、了解設計目的要求、查閱相關理論資料 1天 圖書館、機房
2.設計方案選型及實驗室完成相關的設計任務 2天 實驗室 3.總結課程設計任務和設計步驟,撰寫課程設計論文 2天 圖書館、機房、實驗室
學生簽名:
2012 年6月18日
6)選擇課程設計題目具體要求: 用winsock設計Ping應用程序
具體要求:
理解winsock技術網絡編程技術,分析PING應用程序設計原理和程序流程,選擇合適的開發環境,參考已有的PING程序功能,設計實現ping功能的應用程序。設計論文要求:
1)分析winsock編程技術;
2)分析ping程序的功能及其相關網絡協議; 3)給出ping程序流程圖和設計方案; 4)選擇開發環境,編譯源程序; 5)給出軟件測試文檔; 6)設計小結;
參考文獻(包括互聯網上的引用信息)。
課程設計(論文)評審意見
(1)考勤與學習態度(20分):優()、良()、中()、一般()、差();
(2)理論理解與課程設計報告論文(40分):優()、良()、中()、一般()、差();
(3)動手操作與實驗設計(20分):優()、良()、中()、一般()、差();
(4)設計論文答辯(20分):優()、良()、中()、一般()、差();(5)格式規范性及考勤是否降等級:是()、否()
評閱人:
職稱: 講 師
2012 年6 月24 日
目錄
一、目的和意義以及發展現狀和趨勢..........................1
二、課程設計具體要求......................................2
三、winsock編程技術.......................................3
四、ping程序的功能及其相關網絡協議........................6
五、ping程序流程圖和設計方案..............................7
六、開發環境..............................................9
七、源程序...............................................10
八、軟件測試.............................................22
九、總結與心得...........................................24
十、參考文獻.............................................25
一、目的和意義以及發展現狀和趨勢
目的: 通過課程設計,使學生理論聯系實際,在實踐中進一步了解計算機網絡體系結構,深入理解,TCP/IP參考模型,掌握各種網絡工程技術和網絡規劃與設計,初步掌握綜合布線技術、高速局域網技術、廣域網接入技術、網絡互聯技術,初步掌握網絡應用程序開發技術以及互聯網的應用技術。培養學生分析、解決問題的能力,提高學生的科技論文寫作能力。
意義:在進行本課程設計題目后,能初步掌握PING程序的設計原理及實現過程,了解網絡的連通性概念,了解winsock網絡編程的概念并能實現簡單的網絡應用程序設計與實現。
發展現狀和趨勢:ping命令是用來檢查網絡是否能夠連通,用它可以很好地幫助我們分析判定網絡故障,并且是windows等系統自帶的程序,大多數上網用戶都會使用該功能,其發展現狀良好,是目前使用特別多的一個工具,估計這也將成為未來的發展的趨勢。
二、課程設計具體要求 用winsock設計Ping應用程序 具體要求:
理解winsock技術網絡編程技術,分析PING應用程序設計原理和程序流程,選擇合適的開發環境,參考已有的PING程序功能,設計實現ping功能的應用程序。
設計論文要求:
7)分析winsock編程技術;
8)分析ping程序的功能及其相關網絡協議; 9)給出ping程序流程圖和設計方案; 10)選擇開發環境,編譯源程序; 11)給出軟件測試文檔; 12)設計小結;
參考文獻(包括互聯網上的引用信息)。
三、winsock編程技術
使用WinSock API的編程,應該了解TCP/IP的基礎知識。雖然你可以直接使用WinSock API來寫網絡應用程序,但是,要寫出優秀的網絡應用程序,還是必須對TCP/IP協議有一些了解的。
1.TCP/IP協議與WinSock網絡編程接口的關系
WinSock 并不是一種網絡協議,它只是一個網絡編程接口,也就是說,它不是協議,但是它可以訪問很多種網絡協議,你可以把他當作一些協議的封裝。現在的 WinSock已經基本上實現了與協議無關。你可以使用WinSock來調用多種協議的功能。那么,WinSock和TCP/IP協議到底是什么關系呢?實際上,WinSock就是TCP/IP協議的一種封裝,你可以通過調用WinSock的接口函數來調用TCP/IP的各種功能.例如我想用TCP/IP 協議發送數據,你就可以使用WinSock的接口函數Send()來調用TCP/IP的發送數據功能,至于具體怎么發送數據,WinSock已經幫你封裝好了這種功能。
2、TCP/IP協議介紹
TCP/IP協議包含的范圍非常的廣,他是一種四層協議,包含了各種硬件、軟件需求的定義。TCP/IP協議確切的說法應該是TCP/UDP/IP協議。UDP協議(User Datagram Protocol 用戶數據報協議),是一種保護消息邊界的,不保障可靠數據的傳輸。TCP協議(Transmission Control Protocol 傳輸控制協議),是一種流傳輸的協議。他提供可靠的、有序的、雙向的、面向連接的傳輸。保護消息邊界,就是指傳輸協議把數據當作一條獨立的消息在網上傳輸,接收端只能接收獨立的消息。也就是說存在保護消息邊界,接收端一次只能接收發送端發出的一個數據包。
而面向流則是指無保護消息保護邊界的,如果發送端連續發送數據,接收端有可能在一次接收動作中,會接收兩個或者更多的數據包。3.WinSock編程簡單流程
WinSock編程分為服務器端和客戶端兩部分,TCP服務器端的大體流程如下:
對于任何基于WinSock的編程首先必須要初始化WinSock DLL庫。int WSAStarup(WORD wVersionRequested,LPWSADATA lpWsAData)。wVersionRequested是我們要求使用的WinSock的版本。調用這個接口函數可以初始化WinSock。
然后必須創建一個套接字(Socket)。
SOCKET Socket(int af,int type,int protocol);套接字可以說是WinSock通訊的核心。WinSock通訊的所有數據傳輸,都是通過 3 套接字來完成的,套接字包含了兩個信息,一個是IP地址,一個是Port端口號,使用這兩個信息,就可以確定網絡中的任何一個通訊節點。
當調用了Socket()接口函數創建了一個套接字后,必須把套接字與你需要進行通訊的地址建立聯系,可以通過綁定函數來實現
int bind(SOCKET s,const struct sockaddr FAR* name,int namelen);struct sockaddr_in{ short sin_family;u_short sin_prot;struct in_addr sin_addr;char sin_sero[8];} 就包含了需要建立連接的本地的地址,包括地址族、IP和端口信息。sin_family字段必須把它設為AF_INET,這是告訴WinSock使用的是IP地址族。sin_prot就是要用來通訊的端口號。sin_addr就是要用來通訊的IP地址信息。WinSock API提供了幾個函數。把主機字節轉化成網絡字節的函數;u_long htonl(u_long hostlong);u_short htons(u_short hostshort);把網絡字節轉化成主機字節的函數;u_long ntohl(u_long netlong);u_short ntohs(u_short netshort);這樣,設置IP地址和port端口時,就必須把主機字節轉化成網絡字節后,才能用Bind()函數來綁定套接字和地址。
當綁定完成之后,服務器端必須建立一個監聽的隊列來接收客戶端的連接請求。int listen(SOCKET s,int backlog);這個函數可以把套接字轉成監聽模式。如果客戶端有了連接請求,我們還必須使用
int accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen);來接受客戶端的請求。
現在基本上已經完成了一個服務器的建立,而客戶端的建立的流程則是初始化WinSock,然后創建Socket套接字,再使用
int connect(SOCKET s,const struct sockaddr FAR* name,int namelen);來連接服務端。4.WinSock編程的模型
上面介紹的僅僅是最簡單的WinSock通訊的方法,而實際中很多網絡通訊的卻很多難以解決的意外情況。
例如,WinSock提供了兩種套接字模式:鎖定和非鎖定。當使用鎖定套接字的時候,使用的很多函數,例如accpet、send、recv等等,如果沒有數據需要處理,這些函數都不會返回,也就是說,你的應用程序會阻塞在那些函數的調用處。而如果使用非阻塞模式,調用這些函數,不管你有沒有數據到達,他都會返回。所以有可能我們在非阻塞模式里,調用這些函數大部分的情況下會返回失敗,所以就需要我們來處理很多的意外出錯。
這顯然不是我們想要看到的情況。我們可以采用WinSock的通訊模型來避免這些情況的發生。
WinSock提供了五種套接字I/O模型來解決這些問題。他們分別是select(選擇),WSAAsyncSelect(異步選擇),WSAEventSelect(事件選擇,overlapped(重疊),completion port(完成端口)。
這里詳細介紹一下select,WSAASyncSelect兩種模型。Select模型是最常見的I/O模型。使用
int select(int nfds , fd_set FAR* readfds , fd_set FAR* writefds,fd_set FAR* exceptfds,const struct timeval FAR * timeout);函數來檢查你要調用的Socket套接字是否已經有了需要處理的數據。select包含三個Socket隊列,分別代表:
readfds,檢查可讀性,writefds,檢查可寫性,exceptfds,例外數據。timeout是select函數的返回時間。
WSAAsyncSelect(異步選擇)模型:WSAASyncSelect模型就是把一個窗口和套接字句柄建立起連接,套接字的網絡事件發生時時候,就會把某個消息發送到窗口,然后可以在窗口的消息響應函數中處理數據的接收和發送。
int WSAAsyncSelect(SOCKET s, HWND hWnd , unsigned int wMsg , long lEvent);這個函數可以把套接字句柄和窗口建立起連接,wMsg 是我們必須自定義的一個消息。
四、ping程序的功能及其相關網絡協議
1、Ping程序功能
它主要的功能是用來檢測網絡的連通情況和分析網絡速度。
Ping程序通過主機向遠程計算機發出ICMP回顯請求,遠程計算機攔截這個請求,然后生成一條回顯應答消息,通過網絡傳給主機。但是如果因為一些原因造成不能抵達目標主機,就會生成對應的ICMP錯誤消息,由原來打算建立通信的那個路徑上某處的一個路由器返回。如果與遠程主機的物理性連接并不存在問題,但是遠程主機已經關機或沒有設置對網絡時間的做出相應,便需由自己的程序來執行超時檢測,偵測出這樣的情況。以檢查網絡是否能夠連通,從而可以很好地幫助我們分析判定網絡故障。
它所利用的原理:網絡上的機器都有唯一確定的IP地址,按照缺省設置,Windows上運行的Ping命令給目標IP地址發送4個ICMP(網間控制報文協議)回送請求,每個32字節數據,如果一切正常,應能得到4個回送應答。根據返回的數據包我們可以確定目標主機的存在以及是否可達。
在本程序中,可以通過兩種方式測試目標主機的連通性:通過ip地址或者主機名。前者較簡單,若通過主機名測試連通性的話,首先要通過數據庫中的地址主機名表查詢并解析其對應的ip地址,然后進一步測試連通性。如果可以正常連通,則按照先后的順序返回4個應答幀,顯示所用的時間,并且提示完成ping測試。如果不能正常連通,則顯示Unknow host+地址,并提示測試完成。
2、Ping的協議
支持Ping的協議中ICMP是最關鍵的一個。ICMP全稱Internet Control Message Protocol(網際控制信息協議)。在網絡體系結構的各層次中,都需要控制,而不同的層次有不同的分工和控制內容,IP層的控制功能是最復雜的,主要負責差錯控制、擁塞控制等,任何控制都是建立在信息的基礎之上的,在基于IP數據報的網絡體系中,網關必須自己處理數據報的傳輸工作,而IP協議自身沒有內在機制來獲取差錯信息并處理。為了處理這些錯誤,TCP/IP設計了ICMP協議,當某個網關發現傳輸錯誤時,立即向信源主機發送ICMP報文,報告出錯信息,讓信源主機采取相應處理措施,它是一種差錯和控制報文協議,不僅用于傳輸差錯報文,還傳輸控制報文。
ICMP報文包含在IP數據報中,屬于IP的一個用戶,IP頭部就在ICMP報文的前面,所以一個ICMP報文包括IP頭部、ICMP頭部和ICMP報文,IP頭部的Protocol值為1就說明這是一個ICMP報文,ICMP頭部中的類型(Type)域用于
說明ICMP報文的作用及格式,此外還有一個代碼(Code)域用于詳細說明某種ICMP報文的類型,所有數據都在ICMP頭部后面。
常見的ICMP報文主要有:響應請求目標不可到達、源抑制和超時報文,以 及時間戳。6
五、ping程序流程圖和設計方案
1、Ping請求程序流程圖
2、Ping回應程序流程圖
3、接收數據包流程圖
六、開發環境
1、C語言簡介
C語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出。1978后,C語言已先后被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件,三維,二維圖形和動畫。具體應用比如單片機以及嵌入式系統開發。
2、C語言特點
C是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。
C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,并具有多種循環、條件語句控制程序流向,從而使程序完全結構化。
C語言功能齊全。具有各種各樣的數據類型,并引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。
C語言適用范圍大。適合于多種操作系統,如Windows、DOS、UNIX等等;也適用于多種機型。
C語言對編寫需要硬件進行操作的場合,明顯優于其它高級語言,有一些大型應用軟件也是用C語言編寫的。
七、源程序
/*ping源文件*/
#pragma comment(lib, “ws2_32.lib”)
#include
#define IP_RECORD_ROUTE 0x7
#define DEF_PACKET_SIZE 32
#define MAX_PACKET
1024
#define MAX_IP_HDR_SIZE 60
#define ICMP_ECHO
#define ICMP_ECHOREPLY
0
#define ICMP_MIN
void InitPing();void UserHelp();
void GetArgments(int argc, char** argv);
USHORT CheckSum(USHORT *buffer, int size);void FillICMPData(char *icmp_data, int datasize);void FreeRes();
void DecodeIPOptions(char *buf, int bytes);void DecodeICMPHeader(char *buf, int bytes, SOCKADDR_IN* from);
void PingTest(int timeout);
typedef struct _iphdr
//定義IP報頭結構體 { 10 unsigned int h_len:4;/*表示IP報頭長度,首部長度指的是首部占32bit字的數目,包括任何選項。由于它是一個4bit 字段,因此首部最長為60個字節,不包括任何選項的IP報頭是20個字節。*/
unsigned int version:4;// 表示IP的版本號,這里表示Ipv4 unsigned char tos;/*表示服務的類型,可以表示最小時延,最大吞吐量,最高可靠性和最小費用。*/ unsigned short total_len;//整個IP數據報的總長度
unsigned short ident;//唯一的標識符,標識主機發送的每一份數據報 unsigned short frag_flags;//分段標志,表示過長的數據報是否要分段 unsigned char ttl;//生存期,表示數據報可以經過的最多路由器數 unsigned char proto;//協議類型(TCP、UDP等)unsigned short checksum;//校驗和 unsigned int sourceIP;//源IP地址 unsigned int destIP;//目的IP地址 } IpHeader;
typedef struct _icmphdr
//定義ICMP報文結構體 {
BYTE
i_type;
//ICMP報文類型
BYTE
i_code;
// 該類型中的代碼號,一種ICMP 報文的類型號和該類型中的代碼號共同決定
USHORT i_cksum;
// 校驗和
USHORT i_id;
USHORT i_seq;
// 序列號,序列號從0開始,每發送一次新的回顯請求就加1
ULONG timestamp;
// 時間
} IcmpHeader;
typedef struct _ipoptionhdr
//定義IP選項結構體 {
unsigned char code;
// 指明IP 選項類型,對于路由記錄選項,它的值是7
unsigned char len;
// 選項頭長度
unsigned char ptr;
// 地址指針字段,是一個基于1的指針,指向存放下一個IP地址的位置
unsigned long addr[9];
//記錄的Ip地址列表,由于IP首部中選項的空間有限,所以可以記錄的Ip地址最多是9個 } IpOptionHeader;
SOCKET m_socket;IpOptionHeader IpOption;SOCKADDR_IN DestAddr;SOCKADDR_IN SourceAddr;
char *icmp_data;char *recvbuf;USHORT seq_no;char *lpdest;int datasize;BOOL RecordFlag;double PacketNum;BOOL SucessFlag;
void InitPing()
//初始化ping 所需的全局變量,為各個變量賦初始值 {
WSADATA wsaData;
icmp_data = NULL;
seq_no = 0;
recvbuf = NULL;
RecordFlag = FALSE;
lpdest = NULL;
datasize = DEF_PACKET_SIZE;
PacketNum = 5;
SucessFlag = FALSE;
if(WSAStartup(MAKEWORD(2, 2), &wsaData)!= 0)
{
printf(“WSAStartup()failed: %dn”, GetLastError());
return;
}
m_socket = INVALID_SOCKET;}
void UserHelp()
//顯示用戶幫助信息 { printf(“請到cmd命令提示符上操作!n”);printf(“UserHelp: ping-r
printf(“
-r
record routen”);
printf(“
-n
record amountn”);
printf(“
host
remote machine to pingn”);
printf(“
datasize
can be up to 1KBn”);
ExitProcess(-1);}
void GetArgments(int argc,char** argv)
//獲取用戶提交的參數 {
int i;
int j;
int exp;
int len;
int m;
if(argc == 1)
{
printf(“nPlease specify the destination IP address and the ping option as follow!n”);
UserHelp();
}
for(i = 1;i < argc;i++)
{
len = strlen(argv[i]);
if(argv[i][0] == '-')
{
if(isdigit(argv[i][1]))
{
PacketNum = 0;
for(j=len-1,exp=0;j>=1;j--,exp++)
PacketNum +=((double)(argv[i][j]-48))*pow(10,exp);
}
else
{
switch(tolower(argv[i][1]))
{
case 'r':
RecordFlag = TRUE;
break;
default:
UserHelp();break;
}
}
}
else if(isdigit(argv[i][0]))
{
for(m=1;m { if(!(isdigit(argv[i][m]))) { lpdest = argv[i]; break; } else if(m==len-1) datasize = atoi(argv[i]); } } else lpdest = argv[i]; } } USHORT CheckSum(USHORT *buffer, int size){ unsigned long cksum=0; while(size > 1) { cksum += *buffer++; size-= sizeof(USHORT); } if(size) { cksum += *(UCHAR*)buffer; } cksum =(cksum >> 16)+(cksum & 0xffff); cksum +=(cksum >>16); return(USHORT)(~cksum);} void FillICMPData(char *icmp_data, int datasize)字段 { //計算校驗和 //填充ICMP數據報中各個 IcmpHeader *icmp_hdr = NULL; char *datapart = NULL; icmp_hdr =(IcmpHeader*)icmp_data; icmp_hdr->i_type = ICMP_ECHO; icmp_hdr->i_code = 0; icmp_hdr->i_id =(USHORT)GetCurrentProcessId(); icmp_hdr->i_cksum = 0; icmp_hdr->i_seq = 0; datapart = icmp_data + sizeof(IcmpHeader); memset(datapart,'0',datasize-sizeof(IcmpHeader));} void FreeRes() //釋放占用的資源,包括關閉初始化socket 調用的函數的、關閉創建的socket和釋放分配的內存等。{ if(m_socket!= INVALID_SOCKET) closesocket(m_socket); HeapFree(GetProcessHeap(), 0, recvbuf); HeapFree(GetProcessHeap(), 0, icmp_data); WSACleanup(); return;} void DecodeIPOptions(char *buf, int bytes) //解讀IP選項,從中讀出從源主機到目的主機經過的路由,并輸出路由信息 { IpOptionHeader *ipopt = NULL; IN_ADDR inaddr; int i;HOSTENT *host = NULL; ipopt =(IpOptionHeader *)(buf + 20); printf(“RR: ”); for(i = 0;i <(ipopt->ptr / 4)icmphdr->timestamp); printf(“n”); icmpcount++; return;} void PingTest(int timeout) //進行Ping操作 { int ret; int readNum; int fromlen; struct hostent *hp = NULL; m_socket = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, 0,WSA_FLAG_OVERLAPPED); if(m_socket == INVALID_SOCKET) { printf(“WSASocket()failed: %dn”, WSAGetLastError()); NULL,return; } if(RecordFlag) { ZeroMemory(&IpOption, sizeof(IpOption)); IpOption.code = IP_RECORD_ROUTE; IpOption.ptr = 4; IpOption.len = 39; ret = setsockopt(m_socket, IPPROTO_IP, IP_OPTIONS,(char *)&IpOption, sizeof(IpOption)); if(ret == SOCKET_ERROR) { printf(“setsockopt(IP_OPTIONS)failed: %dn”,WSAGetLastError()); } } readNum = setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO,(char*)&timeout, sizeof(timeout)); if(readNum == SOCKET_ERROR) { printf(“setsockopt(SO_RCVTIMEO)failed: %dn”,WSAGetLastError()); return; } timeout = 1000; readNum = setsockopt(m_socket, SOL_SOCKET, SO_SNDTIMEO,(char*)&timeout, sizeof(timeout)); if(readNum == SOCKET_ERROR) { printf(“setsockopt(SO_SNDTIMEO)failed: %dn”,WSAGetLastError()); return; } memset(&DestAddr, 0, sizeof(DestAddr)); DestAddr.sin_family = AF_INET; if((DestAddr.sin_addr.s_addr = inet_addr(lpdest))== INADDR_NONE) { if((hp = gethostbyname(lpdest))!= NULL) { memcpy(&(DestAddr.sin_addr), hp->h_addr, hp->h_length); DestAddr.sin_family = hp->h_addrtype; printf(“-------華東交通大學信息學院20100610040104------------------n”); printf(“DestAddr.sin_addr = %sn”, inet_ntoa(DestAddr.sin_addr)); } else { printf(“gethostbyname()failed: %dn”,WSAGetLastError()); return; } } datasize += sizeof(IcmpHeader); icmp_data =(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PACKET); recvbuf =(char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,MAX_PACKET); if(!icmp_data) { printf(“HeapAlloc()failed: %dn”, GetLastError()); return; } memset(icmp_data,0,MAX_PACKET); FillICMPData(icmp_data,datasize); while(1){ static int nCount = 0; int writeNum; if(nCount++ == PacketNum) break; ((IcmpHeader*)icmp_data)->i_cksum = 0; ((IcmpHeader*)icmp_data)->timestamp = GetTickCount(); ((IcmpHeader*)icmp_data)->i_seq = seq_no++; ((IcmpHeader*)icmp_data)->i_cksum = CheckSum((USHORT*)icmp_data, datasize); writeNum = sendto(m_socket, icmp_data, datasize, 0,(struct sockaddr*)&DestAddr, sizeof(DestAddr)); if(writeNum == SOCKET_ERROR) { if(WSAGetLastError()== WSAETIMEDOUT) { printf(“timed outn”); continue; } printf(“sendto()failed: %dn”, WSAGetLastError()); return; } fromlen = sizeof(SourceAddr); readNum = recvfrom(m_socket, recvbuf, MAX_PACKET, 0,(struct sockaddr*)&SourceAddr, &fromlen); if(readNum == SOCKET_ERROR) { if(WSAGetLastError()== WSAETIMEDOUT) { printf(“timed outn”); continue; } printf(“recvfrom()failed: %dn”, WSAGetLastError()); return; } DecodeICMPHeader(recvbuf, readNum, &SourceAddr); } } int main(int argc, char* argv[]){ InitPing(); GetArgments(argc, argv); PingTest(1000); Sleep(1000); if(SucessFlag){ printf(“-------華東交通大學信息學院20100610040104------------------n”); printf(“nPing end, you got %.0f record!n”,PacketNum); printf(“nplease press enter if you want to ping againn”);} else printf(“Ping end,no record!”); FreeRes(); getchar(); return 0; } 八、軟件測試 九、總結與心得 一個星期結束了,不敢說自己有多大的進步,獲得了多少知識,但起碼對網路有了進一步的了解。通過這次課程設計發現這其中需要的很多知識我們沒有接觸過,去圖書館查資料的時候發現我們課堂上學到的僅僅是皮毛,還有很多我們需要掌握的知識。同時也發現有很多我們學過的東西并沒有理解到位,不能靈活運用于實際,不能很好的用來解決問題,這就需要我們不斷地大量的實踐,通過不斷的自學,不斷的發現問題,思考問題,進而解決問題。在這個過程中,我們將深刻理解所學知識,也可以學到不少很實用的知識。比如了解了ping命令實際上是向你要訪問的目的地主機發送一個ICMP數據包,如果網絡連通良好,目的主機收到該數據包后,會返回一個同樣大小的ICMP數據包,通過返回的數據包里面的內容,你可以了解很多東西,如往返時間、TTL、目的地址的IP地址、目的地主機所使用的操作系統、所經過的路由數等等,我的實驗里由于時間較短、只設計了能查看往返時間、TTL、目的地址的IP地址這些信息。 閱讀各種文檔,很多東西寫的思路清晰,貌似看著也很簡單,但真正需要自己想辦法去設計一個時才發現其中的難度。 通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。 不管做什么,我們都要相信自己,不能畏懼,不能怕遇到困難,什么都需要去嘗試,有些你開始認為很難的事在你嘗試之后你可能會發現原來它并沒有自己以前覺得的那樣難,自己也是可以的。 十、參考文獻 (1)《計算機網絡(第5版)》,謝希仁主編,電子工業出版社出版 (2)《windows網絡編程技術》,胡鳴主編,科學出版社出版 (3)網上百度 目 錄 1.課題描述........................................................1 2 系統設計概述...................................................1 3 課程設計的主要內容............................................2 3.1站點總體設計原則及設計目標....................................2 3.2用戶需求......................................................2 3.3動態IP地址的設置及服務器的配置...............................3 3.3.1.動態IP配置簡介...........................................3 3.3.2.配置DHCP服務器...........................................3 3.3.3配置IIS服務器.............................................6 3.4制作網站......................................................6 3.4.1.建站流程..................................................6 3.4.2.網站各模塊的設計...........................................7 3.4.3.建站實現軟件...............................................8 3.5.建站注意要點..................................................9 3.5.1.前期調研分析...............................................9 3.5.2.網站的目的及功能定位.......................................9 3.5.3網站技術解決方案...........................................9 3.5.4.網站內容規劃.............................................10 3.5.5.網頁設計.................................................10 3.5.6.網站測試..................................................10 4.網站維護.......................................................10 4.1、靜態頁面的添加修改..........................................10 4.2、動態功能支持在線更新........................................10 總結..............................................................12 參考文獻.........................................................12 1.課題描述 計算機網絡近年來獲得了飛速的發展。計算機通信網絡以及Internet已成為我們社會結構的一個基本組成部分。網絡被應用于工商業的各個方面,電子銀行、電子商務、企業管理、信息服務業等都以計算機網絡系統為基礎。從學校遠程教育到公司日常辦公乃至現在的電子社區,很多方面都離不開網絡技術。可以不夸張地說,網絡在當今世界無處不在。 網絡的發展也是一個經濟上的沖擊。數據網絡使個人化的遠程通信成為可能,并改變了商業通信的模式。一個完整的用于發展網絡技術、網絡產品和網絡服務的新興工業已經形成,計算機網絡的普及性和重要性已經導致了在不同崗位上對具有更多網絡知識的人才的大量需求。企業需要雇員來規劃、獲取、安裝、操作、管理那些構成計算機網絡的軟硬件系統,建立自己的網站,方便辦公及交流 系統設計概述 傳統的企業內部辦公存在著種種弊端,往往造成人員和資源的極大浪費,應用網絡技術組建余個高效、快捷、安全的辦公環境成為許多企業和單位的當務之急。與傳統的單機工作相比,網絡化辦公具有以下幾個明顯優點: 1共享軟硬件資源,節約資金投入,提高運作效率 企業內部組件web站點后,可以在一個部門只安裝一臺打印機和掃描儀,其他計算機通過局域網共享這些設備和數據,有利于降低成本。2對重要數據進行安全、集中的管理 組建站點后,可以把一些重要數據放置在專門的網絡服務器上集中管理,并通過網絡服務器的訪問控制限制其他計算機對總要數據的訪問。這樣就可以有效管理企業內部的重要數據,保證數據安全性,防止數據丟失和被竊取。3方便企業內部信息發布與交流 當企業進行諸如企業內部新聞、電話號碼、產品文檔、技術文件等信息發布時,可以把這些信息放置在web站點的共享目錄上,供員工下載,方便了信息的發布和接收。4便于員工的協調操作 利用內部的辦公網,可以方便的對同一事務進行協同處理,提高工作效率,縮短任務完成的時間 圖2.1企業內部網絡拓撲 課程設計的主要內容 3.1站點總體設計原則及設計目標 組建企業內部web站點要注意站點的分塊、共享、安全性、可管理性、以及可維護性。在設計中,系統結構模塊化,軟硬件平臺可以模塊化瓶裝,系統配置靈活,使系統具有強大的可增長性和強壯性。滿足多層次安全控制手段,建立完善的安全管理體系,防止數據的丟失和被竊取。 組建企業內部web站點,既能將公司內部所有計算機納入系統中去,實現統一規劃、分塊工作、異地互聯、整體管理,并可為將來的應用擴展升級預留接口。 3.2用戶需求 作為企業內部網絡需要滿足: 1、辦公事務管理 主要包括公文與文檔管理、公告、大事記、會議紀要、資產與辦公用品管理、行政制度、辦公事務討論等。 2、人力資源管理 主要包括員工檔案、崗位職責、員工通信錄、認識管理規范等。 3、財務資產管理 主要包括固定資產管理、工資管理、經費管理等。 4、網站管理 主要包括用戶及權限設置、數據庫維護、網頁設置、標志與標題設置及網絡各欄目內容編輯等功能。 3.3動態IP地址的設置及服務器的配置 3.3.1.動態IP配置簡介 動態IP地址,顧名思義就是設備所取得的IP地址是非固定的,是可以動態分配和取得的。使用動態IP地址的原因主要有兩個:一是可以用較少的IP地址構建較大的網絡。如果與連入網絡的主機和其它設備相比,所分得的公用IP地址略少一些,如果為每個設備都分配一個固定的IP地址,則顯然部分計算機將不能接入網絡。考慮到并非所有的計算機都在同一時間內運行并與網絡連接,所以,如果將IP進行動態分配,即計算機連入網絡時自動取得,斷開與網絡的連接時自動收回,即可滿足網絡對IP地址的需求。二是可以增加網絡內計算機的可移動性。當某臺主機從一個子網移動到另一個子網時,由于IP地址中網絡號的不同,從而導致該計算機與其它主機間無法進行通信,解決該類問題最簡單的方式就是為移動的主機在新子網中重新分配IP地址。但是,如果采用動態IP地址,就會減少這種網絡管理的復雜性。Windows NT使用DHCP來解決動態IP地址的分配問題。使用DHCP時,整個網絡中必須至少有一臺運行Windows NT主機安裝有DHCP軟件,充當DHCP服務器,而其它所有欲使用DHCP功能的工作站也必須具有支持DHCP的功能。這樣,當DHCP工作站啟動時,它就會自動與DHCP服務器通信,并由DHCP服務器為其提供一個IP地址。當然,這個地址只是臨時的 3.3.2.配置DHCP服務器 DHCP提供了計算機IP地址的動態配置,如果需要服務器為域中的計算機動態分配IP地址,則必須配置DHCP服務器。配置DHCP服務器的具體步驟如下: 圖3.1打開服務器配置向導 圖3.2配置服務器向導 圖3.3配置服務器向導 圖3.4為配置服務器向導 圖3.5管理服務器 圖3.6 再來就是通過“開始”選擇“控制面板”|“添加或刪除程序”也可以安裝DHCP。 3.3.3配置IIS服務器 右鍵單擊“我的電腦”選擇“管理”~服務及應用程序~Internet信息服務~網站~默認網站,單擊右鍵,選擇屬性,打開主目錄,設置主目錄為web站點的根目錄,也可選擇修改其他屬性 圖3.7配置IIS服務器 3.4制作網站 3.4.1.建站流程 建立網站的流程大致可以分成三個階段,如圖所示 圖3.8網站的流程框圖 構建內容信息、搜索整理資料和規劃網站結構是建立網站的 企業的每一個員工都存在向企業內部網發布內容的潛在可能性。但員工必須按照他們各自的角色協調作業活動。不同規模的公司都需要以省時省錢的方式組織交互信息發布的流程。 通常情況下,為在網站上發布內容,作者創建的材料要經過一個或多個編輯的審校和核準。在這個過程中,作者及編輯按照各種特定的標準分類及標注信息,并為發布設計頁面及連接。這一流程通常不是正式的,且要接受網絡管理員的協調,這就導致了管理員在“站點發布狂潮”到來時,或是當用戶對實時信息需求迅速增長時陷入孤立無援的境地。 使用Site Server可以解決,Site Server還定義了一套為站點增添內容的四步流程,既提交、標注、核準和部署。 圖3.9新聞發布系統框圖 3.4.3.建站實現軟件 可以用Dreamweaver,主要包括兩種頁面,即html和asp。 HTML(Hyper Text Markup Language ,超文本標記語言),或稱為“多媒體文件語言”,是用于創建Web頁和Web 信息發布的 (1)通用性:可實現不同平臺的文檔共享。 (2)可擴展性:HTML的標簽集合可以根據新需求而不斷修正或加入有限的新標簽符, 為實現有限的新功能的擴展提供保障。 (3)創建的靈活性:HTML文檔是純文本文檔, 可以由網頁編輯器以及其他文本編輯軟件創建。 HTML是“Hyper Text Markup Language”的縮寫,它是一種超文本標記語言,是網頁的描述語言,用于編制通過萬維網顯示的超文本文件。它是目前在網頁設計中,所使用的最基本的標記語言。現在很多HTML 的編輯器,都是通過跟文字處理器相似的接口來編輯網頁的。 ASP 文件和 HTML 文件類似ASP 文件可包含文本、HTML、XML 和腳本 ASP 文件中的腳本可在服務器上執行。ASP 文件的擴展名是 “.asp”.當瀏覽器請求某個 HTML 文件時,服務器會返回這個文件.而當瀏覽器請求某個 ASP 文件時,IIS 將這個請求傳遞至 ASP 引擎。ASP 引擎會逐行地讀取這個文件,并執行文件中的腳本。最后,ASP 文件將以純 HTML 的形式返回到瀏覽器。ASP 指 Active Server Pages(動態服務器頁面)ASP 是運行于 IIS 之中的程序.3.5.建站注意要點 另外在網頁制作過程中應注意以下要點: 3.5.1.前期調研分析 了解網頁制作后具體的工作人員具體權限,以保證公司機密信息不會被泄露,同時又能讓每個人從網站上獲取足夠的工作信息;同時對于私人隱私的公開應得到個人的允許。在注意到以上的同時,還要考慮公司的自身情況、建設網站的能力等 3.5.2.網站的目的及功能定位 本次為企業內部web站點的構建及維護 3.5.3網站技術解決方案 確定服務器,是自建服務器還是租用虛擬主機。選擇操作系統。網站安全性措施,如:防入侵,防病毒,防竊取方案 3.5.4.網站內容規劃 根據網站的目的和功能規劃網站內容。一般企業內部網站應包括:公司簡介、部門簡介、公共信息、新聞發布、員工聯系方式、任務信息、信息搜索查詢、相關幫助等內容。 3.5.5.網頁設計 網頁美術設計要求。網頁美術設計一般要求與企業整體形象一致,企業內部網色彩要與辦公環境保持和諧 3.5.6.網站測試 ①網站發布前要進行細致周密的測試,以保證正常的瀏覽和使用。主要測試內容有: ②服務器穩定性、安全性。③程序及數據庫測試 ④網頁兼容性測試,包括不同瀏覽器下的現實結果、不同顯示器分辨率的頁面效果等。⑤需要的其他測試 4.網站維護 服務器及相關軟硬件的維護,對可能出現的問題進行評估,制定相應時間。數據庫維護。有效地利用數據是網站維護的重要內容,因此數據庫的維護要受到重視。 內容的更新、調整計劃。 制定相關網站維護的規定,將網站維護制度化、規范化。 4.1、靜態頁面的添加修改 靜態頁面的更新需要使用專業的網頁設計工具,然后將修改后的網頁通過FTP上傳到相應的位置,在此同時還要保證不能破壞其他的頁面程序和格局 4.2、動態功能支持在線更新 如果企業信息量很大,如工作信息經常需要更新,有更多的企業資訊需要告訴員工,企業建立動態數據庫系統。這里的動態并不是指動畫,而是指網站的內容來自企業的數據庫。如果更改了數據庫,那么前臺頁面的內容也會隨之而更改。 總 結 通過這次課程設計,我拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。安排課程設計的基本目的,在于通過理論與實際的結合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養成為能夠主動適應社會主義現代化建設需要的高素質的復合型人才。作為整個學習體系的有機組成部分,課程設計雖然安排在一周進行,但并不具有絕對獨立的意義。它的一個重要功能,在于運用學習成果,檢驗學習成果。運用學習成果,把課堂上學到的系統化的理論知識,嘗試性地應用于實際設計工作,并從理論的高度對設計工作的現代化提出一些有針對性的建議和設想。檢驗學習成果,看一看課堂學習與實際工作到底有多大距離,并通過綜合分析,找出學習中存在的不足,以便為完善學習計劃,改變學習內容與方法提供實踐依據。對計算機專業的本科生來說,實際能力的培養至關重要,必須從課堂走向實踐。這也是一次預演和準備畢業設計工作。通過課程設計,讓我找出自身狀況與實際需要的差距,并在以后的學習期間及時補充相關知識,為求職與正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。課程設計促進了我系人才培養計劃的完善和課程設置的調整。在一個星期的課程設計之后,我感到不僅實際動手能力有所提高,更重要的是通過對網站開發流程以及維護方面的了解,進一步激發了我對專業知識的興趣,并能夠結合實際存在的問題在專業領域內進行更深入的學習。 在課程設計過程中,我學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現這個計劃,并掌握了在執行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我收獲的是黎明。 參考文獻 [1]朱兵.小型網組建與應用進階[M].南方出版社.2004.[2]鄧文達胡伏湘.計算機網絡教程[M].清華大學出版社.2007.[3] 趙永超.新編網站規劃與設計教程[M].西北工業大學出版社.2004.[4] 楊力學.ASP商業網站整站集成開發[M].電子工業出版社.2007.[5] 石志國.ASP動態網站編程[M].清華大學出版社.2001.[6] 李嵐.網絡設計與維護[M].中國物資出版社.2002. 計算機網絡課程設計 報告書 學院: 班級:通信0902 姓名: 學號: 指導老師: 實驗三 交換機VLAN實驗 SWITCH2的拓撲圖 規劃IP: PCA的ip為:10.65.1.1 PCB的ip為:10.66.1.1 PCC的ip為:10.65.1.3 PCD的ip為:10.66.1.3 SWA: SWB: 設置VLAN: SWA: SWB: 不設trunk時測試可通性 從PCA到PCC測試:不通,因現在的連線兩端在VLAN1中,不能承載Vlan2的信息 [root@PCA root]# ping 10.65.1.3 從PCA到PCB測試:不通:不是一個網段,且不在一個VLAN [root@PCA root]# ping 10.66.1.1 從PCB到PCD測試:通:因為在同一網段內。路徑:從switch A的f0/6到switch B的f0/6 [root@PCB root]# ping 10.66.1.3 從PCA到SWA測試:不通:不在同一網段內 [root@PCA root]# ping 10.66.1.7 從PCA到SWB測試:不通:不在同一網段,也不在同一vlan [root@PCA root]# ping 10.66.1.8 從SWA到PCA測試:不通:不在同一網段 SWA#ping 10.65.1.1 從SWA到SWB測試:通:在同一個網段中,路徑:從switch A的f0/8到switch B的f0/1 SWB#ping 10.66.1.8 swa40#conf t swa40(config)#int f0/8 swa40(config-if)#switchport mode trunk swa40(config-if)#int f0/1 swa40(config-if)#switchport mode trunk swa40(config-if)# 從PCA到PCC、PCD、SWA、SWB的可通性依次為通,不通,不通,不通。 PCA和PCC在同一網段中,路徑:從switch A的f0/3到switch B的f0/3,PCA和PCD、SWA、SWB不在同一網段內。 從PCB到PCC、PCD、SWA、SWB的可通性依次為不通,通,通,通。PCB與PCC不在同一網段,PCB與PCD、SWA、SWB在同一網段內,路徑分別為從switch A的f0/6到switch B的f0/6;從PCB到switch A的f0/6;從switch A的f0/6到switch B的f0/1.SWITCH3的拓撲圖 (1)都不設vlan情況下,測試連通性 從PCA到PCC,PCD,SWA,SWB依次為 不通,不通,通,不通 PCA與PCC、PCD不在同一默認vlan中,PCA與SWA在同一默認vlan中,路徑:從PCA到switch A的f0/3,PCA與SWB不在同一默認vlan中。 從PCB到PCC,PCD,SWA,SWB依次為不通,不通,通,不通。PCB與PCC、PCD不在同一默認vlan中,PCB與SWA在同一默認vlan中,路徑:從PCB到switch A的f0/6,PCB與SWB不在同一默認vlan中。 (2)設置有vlan情況下,測試連通性 從PCA到PCC、PCB、SWA、SWB、PCD均不通:不在同一vlan 從PCB到PCC、PCD、SWA、SWB測試為不通,不通,通,不通。PCB與PCC、PCD不在同一默認vlan中,PCB與SWA在同一默認vlan中,路徑:從PCB到switch A的f0/6,PCB與SWB不在同一默認vlan中。 (3)使用trunk情況下,測試連通性 從PCA到PCC、PCD、SWA、SWB的可通性依次為不通,通,不通,不通。PCA與PCC、PCD不在同一默認vlan中,PCA與SWA在同一默認vlan中,路徑:從PCA到switch A的f0/3,PCA與SWB不在同一默認vlan中。 從PCB到PCC、PCD、SWA、SWB的可通性依次為通,不通,通,通。PCB到PCC設置了trunk,路徑:從switch A的f0/6到switch C的f0/1到switch B的f0/1,PCB與PCD不在同一vlan,PCB與SWA、SWB設置了trunk,路徑:從PCB到switch A的f0/6,從switch A的f0/6到switch C的f0/1到switch B的f0/1 實驗六 路由器接口的secondary ip 裝入圖文件:router1e 設置計算機的IP和網關: PCA:PCA的IP地址:10.65.1.1 網關指向:10.65.1.2 PCB:PCB的IP地址:10.66.1.1 網關指向:10.66.1.2 設置交換機的IP地址: switch(config)#int vlan 1 switch(config-if)#ip address 10.66.1.8 255.255.0.0 設置路由器的接口f0/0的有兩個ip地址。roa(config)int f0/0 roa(config-if)#ip address 10.65.1.2 255.255.0.0 roa(config-if)#no shut roa(config-if)#ip address 10.66.1.2 255.255.0.0 secondary roa(config-if)#no shut roa#sh run 測試可通性 [root#PCA root]# ping 10.66.1.1 通:在同一網段,路徑:從switch的f0/3到f0/6 [root#PCA root]# ping 10.66.1.2 通 [root#PCB root]# ping 10.65.1.1 通:在同一vlan中,從switch的f0/6到f0/3 [root#PCB root]# ping 10.65.1.2 通 switch#ping 10.65.1.1 不通:不在同一網段 switch#ping 10.66.1.1 通:在同一網段,路徑:從switch的f0/6到PCB 如果去掉交換機與路由的連線,PCA和PCB還可以通嗎? 不通:不在同一網段,需通過路由尋址,去掉線就不能通了。 可見PCA到PCB的發包是經過路由器的,稱之為單臂路由。 這種情況PCA和PCB在同廣播域中,對工作帶寬不利。如果劃分VLAN可以隔離廣播 實驗七 使用路由器子接口路由情況 裝入圖文件:router1e 此實驗計算機和交換機的IP地址和網關不變,但要求交換機工作在兩個VLAN的情況下,一個是原有的默認VALN,另一個是新設置的VLAN 2,含f0/ 5、f0/6。1.設置交換機,增加一個vlan 2 switch#vlan database Switch(vlan)#vlan 2 Switch(vlan)#exit Switch#conf t Switch(config)#hostname SWA SWA(config)#int f0/5 SWA(config-if)#switchport access vlan 2 SWA(config-if)#int f0/6 SWA(config-if)#switchport access vlan 2 SWA(config-if)#int f0/1 SWA(config-if)#switchport mode trunk SWA(config-if)# 2.路由器f0/0 有兩個子接口 roa(config)int f0/0 roa(config-if)#int f0/0.1 roa(config-subif.1)#encapsulation isl 1 roa(config-subif.1)#ip address 10.65.1.2 255.255.0.0 roa(config-subif.1)#no shut roa(config-subif.1)#int f0/0.2 roa(config-subif.2)#encapsulation isl 2 roa(config-subif.2)#ip address 10.66.1.2 255.255.0.0 roa(config-subif.2)#no shut roa#sh run 3.測試可通性:都通,路由器設置了兩個子接口,使其在同一vlan中 [root#PCA root]# ping 10.66.1.1 通,路徑:從PCA到switch A的S0/3到switch A的S0/1到ROA的F0/0到switch A的S0/1到switch A的S0/6到PCB [root#PCA root]# ping 10.66.1.2 通:從PCA到switch A的S0/3到switch A的S0/1到ROA 的F0/0到switch A的S0/1到switch A的S0/6到PCB,) [root#PCB root]# ping 10.65.1.1 通:從PCB到switch A的S0/6到switch A的S0/1到ROA的F0/0到switch A 的S0/1到switch A 的S0/3到PCA) [root#PCB root]# ping 10.65.1.2 通:從PCB到switch A的S0/6到switch A的S0/1到ROA的F0/0到switch A的S0/1到switch A的S0/3到PCA 在使用一個路由器接口的情況下,如果下接的網絡含有不同的VLAN,則要求路由器的接口要劃分成子接口,并綁定isl協議。在交換機上通過多個VLAN的接口,要設置成trunk。如果去掉交換機與路由的連線,PCA和PCB還可以通嗎? 不通:不在同一網段,需通過路由尋址,去掉線就不能通了。 可見這也是一種單臂路由。 實驗九 三個路由器的靜態路由 裝入圖文件:router3 設置ROA的IP: f0/0: 10.65.1.2-->PCA:10.65.1.1 f0/1: 10.66.1.2-->PCB:10.66.1.1 s0/0: 10.67.1.2 s0/1: 10.68.1.2--> 設置ROB的IP: s0/0: 10.68.1.1 <--s0/1: 10.69.1.2--> f0/0: 10.70.1.2 f0/1: 10.71.1.2 設置ROC的IP: s0/0: 10.69.1.1 <--s0/1: 10.72.1.2 f0/0: 10.73.1.2-->PCC:10.73.1.1 f0/1: 10.74.1.2-->PCD:10.74.1.1 設置從PCA到PCC的靜態路由 ROA(config)#ip routing ROA(config)#ip route 10.73.0.0 255.255.0.0 10.68.1.1 ROA#show ip route ROB(config)#ip route 10.73.0.0 255.255.0.0 10.69.1.1 ROB#show ip route [root@PCA root]#ping 10.73.1.1 通:由于與ROA和ROC相連的ROB接口都在同一個網段上,所以能通,路徑:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD 使用默認路由 ROA(config)#no ip route 10.73.0.0 255.255.0.0 10.68.1.1 [root@PCA root]#ping 10.73.1.1 通:因為裝入文件時有默認的動態路由存在路徑:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD ROA(config)#ip route 0.0.0.0.0.0.0.0 10.68.1.1 [root@PCA root]#ping 10.73.1.1 通:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD) 實驗十 三個路由器動態路由實驗 裝入圖文件:router3 實驗網絡與上個實驗相同,ip地址也不變,現在用動態路由實現網絡的連通。ROA(config)#ip routing ROA(config)#router rip ROA(config-router)#network 10.0.0.0 ROB(config)#ip routing ROB(config)#router rip ROB(config-router)#network 10.0.0.0 ROC(config)#ip routing ROC(config)#router rip ROC(config-router)#network 10.0.0.0 ROA#sh ip route ROB#sh ip route ROC#sh ip route 從計算機PCA 測試到各點的連通性。都通:由于路由器接口都已經激活,可以相互連通:路徑:PCA到PCB:從PCA到switch B的F0/0 F0/1到PCB PCA到PCC:從PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/0到PCC PCA到PCD :從PCA到switch B的F0/0 S0/1到switch A 的S0/0 S0/1到switch C的S0/0 F0/1到PCD 實驗十一 基本訪問控制列表 裝入文件1 1.配置路由達到網絡各點可通。 本實驗使用有動態路由,也可以使用靜態路由。假設網絡是通暢的。ROA f0/0: 10.65.1.2-->PCA:10.65.1.1 ROA f0/1: 10.66.1.2-->PCB:10.66.1.1 ROA s0/0: 10.67.1.2 ROA s0/1: 10.68.1.2--> ROB s0/0: 10.68.1.1 <--ROB s0/1: 10.69.1.2--> ROB f0/0: 10.70.1.2 ROB f0/1: 10.71.1.2 ROC s0/0: 10.69.1.1 <--ROC s0/1: 10.72.1.2 ROC f0/1: 10.73.1.2-->PCC:10.73.1.1 ROC f0/0: 10.74.1.2-->PCD:10.74.1.1 1.基本的訪問控制列表: 先從PCA ping PCD: [root@PCA @root]#ping 10.74.1.1 應該是可以通的。由于與ROA和ROC相連的ROB接口都在同一個網段上,路徑:從 PCA到switch B的F0/0 S0/1到switch A的S0/0 S0/1到switch C的S0/0 F0/1到PCD 在ROB的s0/0寫一個輸入的訪問控制列表: ROB(config)#access-list 1 deny any ROB(config)#int s0/0 ROB(config-if)#ip access-group 1 in ROB#sh access-list 測試PCA至PCD的聯通性。(deny)命令所示為S0/0讀入控制,題意ROB S0/0為10.68.1.1,PCA的IP為10.65,1,1不包含于ROB VLAN中,所以不能訪問 測試PCC至PCD的聯通性。(permit)在同一個路由器下,通過路由器尋址能找到對方的IP,所以能通, PCC到switch C的f0/0 F0/1到PCD 測試PCD至PCA的聯通性。(permit)由題意由于命令所示為S0/0讀入控制,所以ROB能訪問ROA,所以訪問列表設置無效,所以兩者之間的訪問不受控制,所以能PING通, 從PCD到SWC的F0/1 S0/0到SWA的S0/0 S0/0到SWB的S0/1 F0/0到PCA 2.刪除這個列表 ROB(config)#no access-list 1 ROB(config)# int s0/0 ROB(config-if)#no ip access-group 1 in 二者都可能實現去掉訪問列表的目的。前者是從列表號角度刪除,后者是從接口及輸入和輸出的角度刪除。可以通過sh run 和sh access-list 命令查看刪除情況。3.再寫訪問控制列表 ROA(config)#access-list 1 deny 10.65.1.1 ROA(config)#access-list 1 permit any ROA(config)#int s0/1 ROA(config-if)#ip access-group 1 out ROA#sh access-list 再測試PCA至PCD的聯通性。(deny)ROA設置拒絕了PCA的訪問 再測試PCB至PCD的聯通性。(permit)由題意ROA中的S0/1為10.68.1.2 PCB的IP為10.66.1.1,不包含于S0/1 VLAN中,由于命令所示為S0/0由于是輸出控制,能訪問,所以訪問列表設置無效,不加控制,所以能PING通, 從PCB到SWB的F0/1 S0/1到SWA 的S0/0 S0/1到SWC的S0/0 F0/1到PCD 再測試PCD至PCA的聯通性。(permit)由于是輸出控制,所以對輸入不做要求,能通,所以輸出訪問列表無效,對輸入不加控制,所以能PING通, 從PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA 4.重新設置各路由接口有電腦的ip地址。R0B(config)#access-list 4 permit 10.65.1.1 ROB(config)#access-list 4 deny 10.65.1.0 0.0.0.255 (10.65.1.3 deny)ROB(config)#access-list 4 permit 10.65.0.0 0.0.255.255(10.65.0.0 permit)ROB(config)#access-list 4 deny 10.0.0.0 0.255.255.255 (10.66.0.0 deny)ROB(config)#access-list 4 permit any (11.0.0.0 premit)ROB(config)#int s0/0 ROB(config-if)#ip access-group 4 in 測試PCA至PCD的聯通性。(deny)PCA的IP為10.65.1.1按理來說應該所有的訪問都允許,由于命令所示為S0/0讀入控制,題意ROB S0/0為10.68.1.1,PCA的IP為10.65,1,1不包含于ROB VLAN中所以不通 測試PCB至PCD的聯通性。(permit)P CB的IP為10.66.1.1屬于deny 10.0.0.0 0.255.255.255,所以訪問被拒絕,所以PING不通 測試PCD至PCA的聯通性。(permit)PCD的IP為10.74.1.1屬于deny 10.0.0.0 0.255.255.255,按理來說應該是拒絕的,但是DENY屬于源程序拒絕訪問,而PCD先到S0/1,在通過S0/1與S0/0進行信息傳遞,所以能到達PCA,所以設置讀入列表參數無效,對PCD不做限制, 從PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA 接口的ip地址,計算機的ip地址,請自定 實驗十二 擴展訪問控制列表 裝入文件2 1.阻止PCA訪問PCD: ROB(config)# access-list 101 deny icmp 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0 ROB(config)# access-list 101 permit ip any any ROB(config)# int s0/0 ROB(config-if)#ip access-group 101 out ROB(config-if)#exit ROB(config)#exit ROB#sh access-list [root@PCA root]#ping 10.74.1.1(不通)PCA的IP為10.65.1.1屬于deny ip 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0,所以PING 不通 [root@PCC root]#ping 10.74.1.1(通)PCC和PCD處在同一個路由器下,通過路由器尋址可以相互PING通,從PCC到SWC的F0/0-F0/1到PCD [root@PCD root]#ping 10.65.1.1(通)因為ROB的S0/0為輸出控制,所以當PCD通過外部訪問ROB某個端口下的PCA時,是不受控制的,所以ROB的S0/0的輸出對PCD的訪問是無效的,所以鏈路不加限制,從 PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA 2.刪除這個列表 ROB(config)#no access-list 101 ROB(config)#int s0/0 ROB(config-if)#no ip access-group 101 ROB#sh access-list [root@PCA root]#ping 10.74.1.1(通)由于沒有任何限制,再加上路由器間的尋址,所以可以PING通, 從PCA到SWB的F0/0-S0/1到SWA的S0/0-S0/1到SWC的S0/0-F0/1到PCD 3.阻止10.65.0.0網絡訪問 10.74.1.1計算機(PCD)。 ROA(config)#access-list 102 deny ip 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0 ROA(config)#access-list 102 permit ip any any ROA(config)#interface s0/1 ROA(config-if)#ip access-group 102(默認為out) [root@PCA root]#ping 10.74.1.1(不通)PCA的IP屬于 DENY IP 10.65.1.1 0.0.0.0 10.74.1.1 0.0.0.0 被限制訪問,所以不通 [root@PCC root]#ping 10.74.1.1(通)由于PCC和PCA在同一個路由器下,所以能通過路由器尋址進行PING通, 從PCC到SWC的F0/0-F0/1到PCD [root@PCD root]#ping 10.65.1.1(通)由于ROA的S0/0為輸出控制,所以對輸入沒有任何要求,所以對輸出控制列表設置無效,PCD訪問PCA不受限制, 從PCD到SWC的F0/1-S0/0到SWA的S0/0-S0/0到SWB的S0/1-F0/0到PCA 心得體會 從實驗三中學會了如何規劃ip地址,設置vlan,將連接兩個交換機的接口設置成trunk等,知道了寫代碼時一定得仔細,否則打錯了下面就不能ping通了。 從實驗六中,我學會了設置計算機和交換機的IP和網關,設置路由器的接口的ip地址等。 從實驗七中,我學會了設置交換機,增加一個vlan,設置路由器的子接口,了解了isl協議,isl協議:交換鏈路內協議(ISL),是思科私有協議,主要用于維護交換機和路由器間的通信流量等 VLAN 信息。ISL 主要用于實現交換機、路由器以及各節點(如服務器所使用的網絡接口卡)之間的連接操作。為支持 ISL 功能特征,每臺連接設備都必須采用 ISL 配置。ISL 所配置的路由器支持 VLAN 內通信服務。非 ISL 配置的設備,則用于接收由 ISL 封裝的以太幀(Ethernet Frames),通常情況下,非 ISL 配置的設備將這些接收的幀及其大小歸因于協議差錯。 從實驗九中,我學會了設置靜態路由。 從實驗十中,我學會了用動態路由實現網絡的連通。從實驗十一中,我學會了基本訪問控制列表的使用。從實驗十二中,我學會了如何擴展訪問控制列表。 最后,謝謝老師這幾天的指導,真的讓我學到了很多很多。 計算機網絡課程設計——IP數據報流量統計 摘 要 本課程設計主要是編制程序,監控網絡,捕獲一段時間內網絡上的IP數據包,按IP數據包的源地址統計出該源地址在該時間段內發出的IP包的個數,將其寫入日志文件中或用圖形表示出來。程序中會用到Winpcap,它主要功能在于獨立于主機協議發送和接收原始數據報。本次課程設計中用VC++實現基于Winpcap的網絡數據包的捕獲和統計,基于Winpcap的應用程序將根據獲取網絡設備列表;選擇網卡并打開;設置過濾器;捕獲數據包或者發送數據包;列出網卡列表,讓用戶選擇可用的網卡的步驟進行編寫,同時對于TCP/IP協議以及IP數據抱的格式有了進一步的了解和掌握。通過編寫程序從而實現對網絡中IP數據包流量的統計。 關鍵詞: IP數據包;流量統計;Winpcap;VC++ 1 引 言 隨著Internet技術的發展,基于IP協議的應用成為網絡技術研究與軟件開發的一個重要基礎,因此學習網絡層以基本概念,了解IP協議的基本內容,對于掌握TCP/IP協議的主要內容和網絡課程的學習是十分重要的,通過本次課程設計,有助于熟悉IP數據包格式并加深對IP協議的理解。 1.1 課程設計目的 本次課程設計主要是通過用VC++編程實現對網絡中IP數據包流量的統計,實際上是編制程序,監控網絡,捕獲一段時間內網絡上的IP數據包,按IP數據包的源地址統計出該源地址在該時間段內發出的IP包的個數,同時應用Winpcap,Winpcap提供了很好的捕獲網絡數據包的方法,通過本次課程設計可以將VC++知識與Winpcap結合起來實現在一段時間內對IP數據包的流量進行統計。加深了對Winpcap的理解和運用能力,同時也增長了知識,開闊了視野,對于以后的學習有很大的幫助。 1.2 課程設計的要求 (1)理解運用VC++軟件實現對網絡中的IP數據抱流量的統計方法和步驟。(2)鍛煉獨立編程和查閱文獻資料解決問題的能力。 (3)通過課程設計培養嚴謹的科學態度,認真的工作作風。 1.3 設計平臺 Microsoft Visual C++ 6.0 2 設計原理 IP是ICP/IP協議體系中的網絡層協議,TCP、UDP、ICMP和IGMP等其他協議都是以IP協議為基礎的。程序中用到的Winpcap是 Windows packetcapture的縮寫,這是UNIX下的lipbcap移植到Windows下的產物,是Win32環境下數據包捕獲的開放代碼函數庫。 Winpcap由內核級的數據包過濾器,底層動態鏈接庫(packet.dll)和一個高層的獨立于系統的庫(wpcap.dll)組成。 2.1 IP協議 IP是TCP/IP模型中的網絡層協議,又稱為互聯網協議,是支持網間互連的數據報協議,它與TCP協議一起構成了TCP/IP協議族的核心。它提供網間連接的完善功能,包括IP數據報規定互聯網范圍內的IP地址格式。在因特網中IP協議是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守IP協議就可以與因特網互連互通。IP地址具有唯一性,根據用戶性質的不同,可以分為不同的類別。 IP協議的特點如下: IP協議是一種不可靠、無連接的數據報傳送協議。IP協議是點對點的網絡層通信協議。IP協議向通信層隱藏了物理網絡的差異。 IP協議以一種數據報的形式傳輸數據,每個數據報獨立傳輸,可能通過不同路徑傳輸,因此可能不按順序到達目的地,或者出現重復。 2.2 關于Winpcap庫 Winpcap(windows packet capture)是windows平臺下一個開源的、公共的基于windows的網絡接口API庫。主要為win32應用程序提供訪問網絡底層的能力。Winpcap的主要功能在于獨立于主機協議(如TCP/IP)發送和接收原始數據報。也就是說,Winpcap不能阻塞、過濾或控制其他應用程序數據報的收發,它只是監聽共享網絡上傳送的數據報。 其功能有:捕獲原始數據包,包括在共享網絡上各主機發送接收的以及相互之間交換的數據包;在數據包發往應用程序之前,按照自定義的規則將某些特殊的數據包過濾掉;在網絡上發送原始數據包;收集網絡通信過程中的統計信息。Winpcap是針對win32平臺上的抓包和網絡分析的一個架構,它包括一個核心態的包過濾器,一個底層的動態鏈接庫(packet.dll)和一個高層的不依賴于系統的庫(wpcap.dll)。它由Packet、NPF(Netgroup Packet Filter)、packet.dll、wpcap.dll、Application組成,首先,抓包系統必須繞過操作系統的協議來訪問在網絡上傳輸的原始數據包,這就要求一部分運行在操作系統核心內部,直接與網絡接口驅動交互。這個部分是系統依賴的,在Winpcap的解決方案里它被認為是一個設備驅動,稱作NPF。其次,抓包系統必須有用戶級的程序接口,通過這些接口,用戶程序可以利用內核驅動提供的高級特性。Winpcap提供了兩個不同的庫:packet.dll和wpcap.dll。前者提供了一個底層API,伴隨著一個獨立于Microsoft操作系統的編程接口,這些API可以直接用來訪問驅動的函數;后者導出了一組更強大的與libpcap一致的高層抓包函數庫。這些函數使得數據包的捕獲以一種與網絡硬件和操作系統無關的方式進行。3 程序代碼設計步驟 根據流量設計程序的主要功能,相應的算法如下: 取得當前網絡設備列表; 將用戶選擇的網卡以混雜模式打開,以接收到所有的數據包; 設置過濾器; 捕獲IP數據包的源地址進行統計(用鏈表結構進行實現)。 獲取網卡列表是為了得到網卡的相關信息,以便于用戶進行選擇,選取Ethermet網卡是用戶所選擇的網卡類型,編譯設置過濾器是為了編譯并設置過濾器是為了只捕獲網絡數據流的某些數據,打開網卡既將網卡設置為混雜(統計)模式是為了接受所有經過網卡的數據包,包括不是發給本機的數據包,開始主循環以是否超時為判斷條件,循環體內主要有捕獲IP數據包、將IP包的源地址加入鏈表、條件判斷,循環結束后輸出鏈表內容,程序至此結束。 現將其每一步的具體步驟簡述如下: 3.1取得網絡適配器列表 //取得網絡適配器列表步驟中,alldevs是pcap_if_it指針,指向鏈表頭,errbuf是char類型數組,存儲錯誤信息。 pcap_findalldevs(&alldevs,errbuf); cout<<”網絡適配器列表:”<<’n’; for(d=alldevs;d;d=d->next) { cout<<++i<<“:” if(d->description) cout<<“" else cout<<”No description available!“<<'n'; } 3.2 指定要監聽的網絡適配器并打開 cout<<”輸入要監聽的網絡適配器號:” for(d=alldevs,i=0;inext,i++); fp=pcap_open_live(d->name,65536,1,1000,errbuf);3.3 編譯并設置過濾器 //編譯過濾器,fp指向打開的網絡適配器,fcode為編譯完成后的過濾器存儲地址,“tcp“給出了過濾條件,下一個參數表示是否被優化(0為false,1為true),最后一個參數給出了子網掩碼。 pcap_compile(fp,&fcode,”tcp”,1,netmask) pcap_setfilter(fp,&fcode)3.4 設置網絡適配器為統計模式 if(pcap_setmode(fp,MODE_STAT)<0) { cout<<”n設置網絡適配器模式錯誤!n”; pcap_close(fp); } 3.5 開始主循環,調用回調函數顯示網絡流量統計信息 //pcap_loop由Winpcap庫定義,對每個采集來的數據包都用ProcessPacket函數進行處理,fp指向打開的網絡適配器 pcap_loop(fp,0,dispatcher_handler,(PUCHAR)&st_ts); pcap_close(fp);3.6 回調函數的實現 //對于捕獲到的每一個數據包應用此回調函數 void dispatcher_handler(u_char *state,const struct pcap_pkthdr *header,const u_char *pkt_data) { struct timeval *old_ts=(struct timeval *)state; u_int delay; LARGE_INTEGER Bps,Pps; struct tm *ltime; char timestr[16]; time_t local_tv_sec; //計算距上一個數據包的時間延遲,以ms為單位 //這個值是從與一個數據包相關的時間戳中截獲的delay=(header->ts.tv_sec-old_ts->tv_sec)*1000000-old_ts->tv_usec+header->ts.tv_usec; //獲得每秒的比特數 Bps.QuadPart=(((*(LONGLONG*)(pkt_data+8))*8*1000000)/(delay)); //獲得每秒的數據包數 Pps.QuadPart=(((*(LONGLONG*)(pkt_data))*1000000)/(delay)); //將時間戳轉變位可讀的標準格式 ltime=localtime(&header->ts.tv_sec); strftime(timestr,sizeof timestr,”%H:%M:%S“,ltime); //Print timestamp printf(”%s“,timestr); //Print the samples printf(”BPS=%I64u“,Bps.QuadPart); printf(”PPS=%I64un",Pps.QuadPart); //store current timestamp old_ts->tv_sec=header->ts.tv_sec; old_ts->tv_usec=header->ts.tv_usec; };4 結果及分析 安裝好WinPcap軟件,在VC++界面上點擊工具->選項->目錄。添加Include文件夾下的所有文件和Lib下的所有內容,調試完程序無誤后,點擊開始—>運行“cmd”進入目標文件夾Debug下運行EXE文件。此時程序會檢測電腦系統中的網卡,等待程序的運行結果.圖 捕獲的IP地址和數據包的信息 常見問題及解決方法 在剛開始做此課程設計的時候我只編寫了主程序代碼,并沒有建立工程,后來通過查找資料及文獻才知道要建立一個C++應用工程,而且程序中用到的Winpcap庫文件C++中并沒有,需要自己下載WinPcap_4_1_1.exe和WpdPack_4_1_1.zip,前者是Winpcap的開發程序,后者是inlude文件和lib文件,這些都是需要自己手動添加的,這里include和lib文件夾里的東西VC++6.0里面沒有,出現error: Cannot open include file:’pcap.h’:No such file or directory這個問題,就需要添加。具體步驟如下: 第一步: 點菜單欄上的“工具“,再點擊下拉菜單中的”選項“對話框把winpcap開發包里面的lib文件添加進去。 第二步: 點擊菜單欄里的工程——設置,選擇連接在對象/庫模塊中輸入wpcap.lib和packet.lib,再點C/C++ 在“預處理程序定義”下輸入WPCAP和HAVE_REMOTE,要用逗號隔開。 至此,Winpcap環境已部署好了不會再出錯了。 接下來出錯的是程序中的一些函數的參數,比如說int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str,int optimize, bpf_u_int32 netmask),int pcap_setfilter(pcap_t *p, struct bpf_program *fp)函數的參數在程序編譯的時候會報錯,通過搜集資料及與同學交流初步更正了錯誤,但是程序并不是很順利地運行出來。 目錄 一﹑實驗室概述...............................................................................................................................2 二、設計需求分析總括...................................................................................................................2 2.1、教學的具體需求......................................................................................................2 2.2、實驗室的總體構思..................................................................................................3 三、實驗室的總體結構規劃...........................................................................................................3 3.1、網絡實驗室總體結構規劃......................................................................................................3 3.2、一般實驗室總體結構規劃......................................................................................................5 2.2.1 核心機房..............................................................................................................................7 3.3、實訓實驗室總體結構規劃......................................................................................................7 3.1. 1、實驗環境............................................................................................................7 四、綜合布線...................................................................................................................................8 4.1 設計范圍及要求........................................................................................................................8 4.2.3 布線要求.................................................................................................................9 五、課程設計總結...........................................................................................................................9 經管類實驗室網絡結構設計 一﹑實驗室概述 隨著計算機網絡技術的迅猛發展,人們對于信息的需求日益增強。顯而易見當今的世界正從工業化社會向信息化社會轉變。一方面,社會經濟已由基于資源的經濟逐漸轉向基于知識的經濟,人們對信息的需求越來越迫切,信息在經濟的發展中起著越來越重要的作用,信息的交流成為發展經濟最重要的因素。另一方面,隨著計算機、網絡和多媒體等信息技術的飛速發展,信息的傳遞越來越快捷,信息的處理能力越來越強,信息的表現形式也越來越豐富,對社會經濟和人們的生活產生了深刻的影響。這一切促使通信網絡由傳統的電話網絡向高速多媒體信息網發展。由于Web技術和多媒體技術的出現,近幾年來Internet得到了突飛猛進的發展,聯入網絡的節點和信息資源迅速增長。社會對于網絡人才的需求也日漸增多,新華學院負責人本著學以致用,與實際相結合的原則,大力創建各個實驗室。以期給予學生良好的學習環境。 二、設計需求分析總括 對于學院的實驗室根據課程的需求,需要對于實驗室的軟件和硬件方面都有要求,本次課程設計只針對實驗室的硬件進行分析,軟件方面針對課程需求再做更改。 設計實驗室的目標是能夠滿足學生的實驗課程、現代計算機校園文化為核心,以現代網絡技術為依托、技術先進、擴展性強,鞏固課程學習,最終提升學生的實踐能力,達到教學目的。 下面我們具體分析一下校園網各個方面的需求。 2.1、教學的具體需求 對于經管學院的課程計劃安排,實驗室主要進行的實驗課程有:證券、商務、會計、MIS、網絡、實訓、工業沙盤、程序設計等。 有些課程對于實驗室的硬件設備要求一致,只是軟件不同。因此將實驗室根據硬件設備分為的兩類: <1>、網絡實驗室:能夠滿足計算機網絡課程的所有需求,對硬件設備需求多。<2>、一般實驗室:能夠根據相關軟件完成各種實驗課程,對軟件需求高。 2.2、實驗室的總體構思 (1)內容豐富 實驗室設備能涵蓋局域網、廣域網、無線、網絡安全、VoIP、綜合布線等實用技術功能模塊,在此基礎上實現實踐課程與理論課內容的緊密結合,全方位為學生提供實踐動手的機會。(2)設備完善 同類網絡設備具備多種不同的型號,為學生在實驗中提供廣泛的操作平臺,在對比中學習,學習中對比,進一步拓寬眼界。(3)拓撲靈活 靈活的拓撲設計只需要通過簡單的跳線即可改變拓撲,滿足多種實驗要求,并且可以根據多種需求進行擴展,讓學生在實驗中有機會充分發揮創新能力,根據實驗目的自行完成實驗的設計與配置,并且可實現實驗室內部網絡與校園網的輕松連接。(4)易于維護 緊湊連續的實驗課程安排要求在一個班級完成實驗后能夠迅速恢復實驗設備,以免影響下一個班級的上機使用,這就需要一個易于維護與恢復的實驗環境,包括對網絡設備及終端計算機的恢復。(5)安全可靠 設備系統具備較高的安全性、容錯能力,并且能防止內部網絡受到外部攻擊和感染病毒,保證網絡設備以及終端計算機的安全。(6)環境友好 結合多媒體教學,加強教與學的互動,讓學生邊學邊做,邊做邊學。 三、實驗室的總體結構規劃 3.1、網絡實驗室總體結構規劃 從網絡實驗室建設的總體構思出發,方案主要包括了四大模塊:實驗機柜組、終端實驗 用計算機、無線設備。實驗室總體拓撲見圖1。 拓撲圖1 3.1.1、實驗機柜組 實驗室共有6個分組實驗機柜,每個分組實驗機柜中有6臺設備: 3725路由器1臺, 2620路由器2臺, 3750交換機1臺, 2950交換機2臺。機柜中不同的設備具有不同的特性,能較全面地涵蓋實驗內容,具體拓撲連接方式見圖2。其中Cisco 3725路由器具備多個NM和HDSM插槽,可根據服務需求進行擴展配置,而且語音模塊可實現普通模擬語音與IP語音的對接,與核心機房中的IPCC系統相結合可建立真實的語音通信環境。2620路由器具有高速路由性能,能提供全面的協議和服務,包括虛擬專用網、防火墻保護、加密、WAN優化和經過改進的多媒體支持功能,并且支持多服務語音數據網絡。Catalyst3750交換機可實現高達32Gbps的堆疊互聯,可以使用服務質量(QoS)、速率限制、訪問控制列表和基本的靜態和路由功能,利用2950交換機可以將組內的學生實驗使用的計算機組成局域網。各實驗分組機柜中的設備均上連至本機柜中的3750交換機,匯聚后再通過3750交換機上連至核心功能機柜中的核心交換機6509,如圖2,可將實驗室網絡設備形成星形拓撲的連接方式。分組實驗柜和核心功能柜中的理線架均采用雙排理線架,學生若要進行跳線,只需在理線 架上進行簡單插拔,而不需要對設備的物理端口進行插拔線操作,既方便靈活又可起到保護設備物理端口的作用。 3.1.2、終端實驗用計算機 36臺實驗用終端計算機平均分為6組,每組6臺,各組對應一個分組實驗機柜,每臺終端計算機的COM口通過地板下面的橋架布線與分組實驗機柜中對應設備的Console端口連接,形成一個學生單獨對應一臺設備的環境,可以通過終端軟件登錄設備控制端口進行實驗操作。每組6臺計算機的Eth-ernet口又全部連接至對應分組實驗機柜中的一臺2950交換機,組成一個小型局域網。2950交換機再通過機柜中的3750交換機上連至核心交換機,最終實現實驗室中所有終端計算機的互聯。 3.1.3、無線設備 無線路由器和無線訪問點,可按實驗拓撲要求靈活地連接至實驗組機柜任何一臺設備的RJ45端口,實現多種無線組網方案。每臺計算機均安裝無線網卡,讓學生了解體驗并掌握無線網絡的特點與配置方法。 3.1.4、實驗環境 (1)、終端計算機安裝W indows2003 Server操作系統,運行“超級終端”或其它同類終端軟件,與設備Console端口連接后即可登錄設備進行配置。 (2)、由于學生使用的終端計算機COM口與相應設備的Console端口連接,而Ethernet端口則均上連本組機柜中2950交換機的FastEthernet端口。在實驗過程中既可通過Console端口對設備進行本地配置,也可以通過FastEthernet端口Telnet到其它設備進行配置,有利于學生進行比較學習,全面掌握不同型號設備的配置方法。 (4)在實驗過程中,可采用分組實驗的方式,并事先規定IP地址等實驗參數的分配規則,以避免因學生隨意配置IP地址而導致地址沖突,影響實驗過程。 3.2、一般實驗室總體結構規劃 2.2.1 核心機房 核心機房主要包括了一個核心功能機柜和一個 服務器機柜。連接方式見圖2。 圖2 3.2.2 實驗環境 (1)、終端計算機安裝W indows2003 Server操作系統,運行“超級終端”或其它同類終端軟件,與設備Console端口連接后即可登錄設備進行配置。(2)、教師在授課時若需演示設備配置過程,可 使用多媒體講臺上的計算機Telnet任一分組實驗柜中的任一設備,如圖1所示,再通過講臺前的投影屏幕讓學生清晰地了解實驗步驟,并可與教師同步動手操作。這為教師提供了相當靈活的互動演示環境,也便于對設備進行監控與排錯。 3.3、實訓實驗室總體結構規劃 設計實訓實驗室的目的是讓學生理解掌握計算機的各個部件的組成,學會對計算機的拆卸和組裝。 3.1. 1、實驗環境 舊設備。 四、綜合布線 綜合布線是一種模塊化的、靈活性極高的建筑物內或建筑群之間的信息傳輸通道。通過它可使話音設備、數據設備、圖像設備、交換設備及各種控制設備與其他信息管理系統連接起來,同時也使這些設備與外部通信網絡相連。與傳統的布線相比較,綜合布線有很多優越性,主要表現在兼容性、開放性、靈活性、可靠性、先進性和經濟性等方面。因此采用綜合布線系統。 圖4.1 綜合布線系統結構圖 4.1 設計范圍及要求 4.2.1 設計范圍 經管學院實驗樓計算機實驗室分布在二、三層 包括: 二樓實驗室用于證券、商務、會計、MIS、實訓、工業沙盤等采用一般實驗室設計方法共計3間教室。 三樓實驗室用于網絡、程序設計等網絡實驗室采用網絡實驗室設計方法,程序教室用一般實驗室設計方法共計3間教室。 各層樓間使用光纖連接,樓內千兆到樓層,百兆到桌面,并且各樓分別需要網絡布線以建設樓內局域網。4.2.2 設計規范的確定 綜合布線系統將基于以下目標: (1)符合當前和長遠的信息傳輸要求。 (2)布線系統設計遵從國際(ISO/CEI11801)標準。(3)布線系統采用國際標準建議的星形拓撲結構。(4)基于100Mbps應用需要。 (5)布線系統的信息出口采用國際標準的RJ45插座。(6)布線系統符合綜合業務數據網的要求。(7)布線系統要立足開放原則。 4.2.3 布線要求 校園網絡計算機主機房位于位于講堂群。通過光纜連至主機房,在經管樓內部采用五類4對5類UTP電纜連接到設備間的配線架。 五、課程設計總結 歷時一周的計算機網絡課程設計終于圓滿結束了,通過本次對敦煌中學校園網的規劃與設計使我們對校園網建設工程有了更進一步的了解。校園網絡建設作為一項重要的系統工程,它所用到的各種技術是多方面的,即有網絡技術,其中還包括軟件技術,工程施工技術,也有管理制度等各個方面的知識。網絡技術的發展是永無止境的,在前進的過程中必將有更多的知識需要我去學習與研究,并能將其應用到實際的網絡工程建設之中。 上面是整個校園網的結構,實際上校園網是一個龐大而復雜的工程,要根據具體的環境來組建網絡,涉及的面也比較廣,上面這套方案只是針對大部分校園相同點而設計的,肯定在很多方面都有所不足,所以這只是一個基礎,如果要組建校園網還需要對各個地方進行改進,才能節省校園網絡成本,才能最大限度發揮出校園網的性能。 校園網絡是一種新型的教育工具,它涵蓋學科教育,思想教育,文化教育,美育和體育,在課堂教學,課外學習和校園文化建設,科研和信息交流等方面均發揮著重要作用。校園網正促進著教學內容與方式方法的變革,促進著學校教育與社會教育的發展,改變著學校與社會,理論與實踐,知識與技能的質量。筆者深信,在提供素質教育的九年義務教育的中小學,隨著校園網絡的不斷發展和完善,其不可替代的多功能作用會越來越明顯,更好地建設與管理校園網是每一個計算機工作者不可推卸的責第二篇:計算機網絡課程設計
第三篇:計算機網絡課程設計
第四篇:計算機網絡課程設計
第五篇:計算機網絡課程設計