互聯網實驗報告_第1頁
互聯網實驗報告_第2頁
互聯網實驗報告_第3頁
互聯網實驗報告_第4頁
互聯網實驗報告_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、互聯網高級技術 綜合實驗題 目: RIP路由選擇模擬 姓 名: 李 龍 學 院: 計算機與通信工程學院 專業班級: 網絡運維13-01 學 號: 541307110120 指導老師: 張 啟 坤 目錄實驗:RIP路由選擇模擬3一、實驗要求3二、實驗環境3三、實驗目的3四、實驗原理3五、界面設計4六、運行結果41.點擊啟動開啟路由器42.在轉發框中設置需要到達的目的網絡53.點擊計算路由表,程序會自動按照Bellman-Ford算法,54.點擊轉發可顯示到達目的網絡的最短路徑65.點擊更改拓撲圖,可更換網絡拓撲,66.第一種拓撲圖:6七、總結9八、附錄:9九、參考文獻30 實驗:RIP路由選擇模

2、擬一、 實驗要求1. 實現基于RIP路由協議的程序2. 程序需設計運行界面3. 界面美觀,整潔二、 實驗環境本程序在Windows操作系統環境下,運用visual C+編寫而成,可在任何Windows環境下運行。三、 實驗目的通過本次實驗學習路由協議的工作原理,掌握路由協議的程序編寫,以達到能夠實現路由協議的水平。四、 實驗原理本程序基于路由信息協議RIP(Routing Information Protocol),是內部網關協議IGP中最先得到廣泛使用的協議。RIP是一種分布式的基于距離矢量的路由選擇協議,是因特網的標準協議,RIP路由協議最大優點就是實現簡單,開銷較小。它可以通過不斷地交換

3、信息讓路由器動態的適應網絡連接的變化,這些信息包括每個路由器可以到達那些網絡,這些網絡有多遠等,IGP是應用層協議,并使用UDP作為傳輸協議。RIP協議具有以下特點:(1) RIP是自制系統內部使用的協議及內部網關協議,使用的是距離矢量算法。(2) RIP使用UDP協議的520端口進行RIP進程之間的通信。(3) RIP主要有兩個版本:RIPv1和RIPv2。RIPv1協議的具體描述在RFC 1058中,RIPv2是對RIPv1協議的改進,其協議的具體描述在RFC2453中(4) RIP協議以跳數作為網絡度量值。(5) RIP協議采用廣播或組播進行路由更新,其中RIPv1使用廣播,RIPv2使

4、用組播(224.0.0.9)(6) RIP協議支持主機被動模式,即RIP協議允許主機只接受和更新路由信息而不發送路由信息。(7) RIP協議支持默認路由傳播(8) RIP協議的網絡直徑不超過15跳,適合于中小型網絡,16跳時認為網絡不可達。(9) RIPv1是有類路由協議,RIPv2是無類路由協議,即RIPv2的報文中含有掩碼信息。RIP所使用的路由算法是Bellman-Ford算法。RIP是由“網關消息協議”發展過來的,網關消息協議是RIP的最早的版本。五、 界面設計六、 運行結果1. 點擊啟動開啟路由器2. 在轉發框中設置需要到達的目的網絡3. 點擊計算路由表,程序會自動按照Bellman

5、-Ford算法,計算到達目的網絡的最短路徑,并更新路由表。4. 點擊轉發可顯示到達目的網絡的最短路徑5. 點擊更改拓撲圖,可更換網絡拓撲,本程序共有五種網絡拓撲圖可供選擇。6. 第一種拓撲圖:第二種拓撲圖:第三種拓撲圖:第四種拓撲圖:第五種拓撲圖:七、 總結本程序能夠實現更新路由表,計算最短路徑,轉發路徑信息,更換網絡拓撲,四種功能。八、 附錄:部分源代碼:/ RouteRIPDlg.cpp : implementation file/#include stdafx.h#include RouteRIP.h#include RouteRIPDlg.h#include SetTopology.h

6、#include#include#include Help.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated vir

7、tual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid C

8、AboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CRouteRIPDlg dialogCRouteRIPDlg:CRouteRIPDlg(CWnd* pParent /*=NULL*/): CDialog(C

9、RouteRIPDlg:IDD, pParent)/AFX_DATA_INIT(CRouteRIPDlg)m_sendgoal0 = 3;m_sendgoal1 = 4;m_sendgoal2 = 5;m_sendgoal3 = 0;m_sendgoal4 = 1;m_sendgoal5 = 2;m_0and4 = 1;m_0and3 = 1;m_0and1 = 1;m_0and2 = 1;m_0and5 = 1;m_1and2 = 1;m_1and3 = 1;m_1and4 = 1;m_1and5 = 1;m_2and3 = 1;m_2and4 = 1;m_2and5 = 1;m_3and5

10、 = 1;m_3and4 = 1;m_4and5 = 1;m_cycle = 1;/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME); /表格m_list0=&m_list0;m_list1=&m_list1;m_list2=&m_list2;m_list3=&m_list3;m_list4=&m_list4;m_list5=&m_list5; /路由所在坐標position0.x=60

11、;position0.y=310;position1.x=330;position1.y=100;position2.x=620;position2.y=100;position3.x=890;position3.y=310;position4.x=620;position4.y=470;position5.x=330;position5.y=470;for (int i=0;i15;i+)connectrouti=FALSE; connectrout0=TRUE;connectrout4=TRUE;connectrout5=TRUE;connectrout8=TRUE;connectrout

12、9=TRUE;connectrout10=TRUE;connectrout12=TRUE;connectrout14=TRUE;Delayarray01=&m_0and1;Delayarray02=&m_0and2;Delayarray03=&m_0and3;Delayarray04=&m_0and4;Delayarray05=&m_0and5;Delayarray10=&m_0and1;Delayarray12=&m_1and2;Delayarray13=&m_1and3;Delayarray14=&m_1and4;Delayarray15=&m_1and5;Delayarray20=&m_

13、0and2;Delayarray21=&m_1and2;Delayarray23=&m_2and3;Delayarray24=&m_2and4;Delayarray25=&m_2and5;Delayarray30=&m_0and3;Delayarray31=&m_1and3;Delayarray32=&m_2and3;Delayarray34=&m_3and4;Delayarray35=&m_3and5;Delayarray40=&m_0and4;Delayarray41=&m_1and4;Delayarray42=&m_2and4;Delayarray43=&m_3and4;Delayarr

14、ay45=&m_4and5;Delayarray50=&m_0and5;Delayarray51=&m_1and5;Delayarray52=&m_2and5;Delayarray53=&m_3and5;Delayarray54=&m_4and5; ConnectPoint01=&connectrout0;ConnectPoint02=&connectrout1;ConnectPoint03=&connectrout2;ConnectPoint04=&connectrout3;ConnectPoint05=&connectrout4;ConnectPoint10=&connectrout0;C

15、onnectPoint12=&connectrout5;ConnectPoint13=&connectrout6;ConnectPoint14=&connectrout7;ConnectPoint15=&connectrout8;ConnectPoint20=&connectrout1;ConnectPoint21=&connectrout5;ConnectPoint23=&connectrout9;ConnectPoint24=&connectrout10;ConnectPoint25=&connectrout11;ConnectPoint30=&connectrout2;ConnectPo

16、int31=&connectrout6;ConnectPoint32=&connectrout9;ConnectPoint34=&connectrout12;ConnectPoint35=&connectrout13;ConnectPoint40=&connectrout3;ConnectPoint41=&connectrout7;ConnectPoint42=&connectrout10;ConnectPoint43=&connectrout12;ConnectPoint45=&connectrout14;ConnectPoint50=&connectrout4;ConnectPoint51

17、=&connectrout8;ConnectPoint52=&connectrout11;ConnectPoint53=&connectrout13;ConnectPoint54=&connectrout14; /初始化的值Delay=99;Nextrout=-1;m_bPause=TRUE; /初始化不開啟定時器m_font.CreatePointFont(250,楷體);m_font1.CreatePointFont(130,宋體);void CRouteRIPDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX)

18、;/AFX_DATA_MAP(CRouteRIPDlg)DDX_Control(pDX, IDC_LIST5, m_list5);DDX_Control(pDX, IDC_LIST4, m_list4);DDX_Control(pDX, IDC_LIST3, m_list3);DDX_Control(pDX, IDC_LIST2, m_list2);DDX_Control(pDX, IDC_LIST1, m_list1);DDX_Control(pDX, IDC_LIST0, m_list0);DDX_Text(pDX, IDC_EDIT03, m_sendgoal0);DDX_Text(pD

19、X, IDC_EDIT13, m_sendgoal1);DDX_Text(pDX, IDC_EDIT23, m_sendgoal2);DDX_Text(pDX, IDC_EDIT33, m_sendgoal3);DDX_Text(pDX, IDC_EDIT43, m_sendgoal4);DDX_Text(pDX, IDC_EDIT53, m_sendgoal5);DDX_Text(pDX, IDC_EDIT004, m_0and4);DDX_Text(pDX, IDC_EDIT003, m_0and3);DDX_Text(pDX, IDC_EDIT001, m_0and1);DDX_Text

20、(pDX, IDC_EDIT002, m_0and2);DDX_Text(pDX, IDC_EDIT005, m_0and5);DDX_Text(pDX, IDC_EDIT112, m_1and2);DDX_Text(pDX, IDC_EDIT113, m_1and3);DDX_Text(pDX, IDC_EDIT114, m_1and4);DDX_Text(pDX, IDC_EDIT115, m_1and5);DDX_Text(pDX, IDC_EDIT223, m_2and3);DDX_Text(pDX, IDC_EDIT224, m_2and4);DDX_Text(pDX, IDC_ED

21、IT225, m_2and5);DDX_Text(pDX, IDC_EDIT335, m_3and5);DDX_Text(pDX, IDC_EDIT443, m_3and4);DDX_Text(pDX, IDC_EDIT554, m_4and5);DDX_Text(pDX, IDC_EDITCYCLE, m_cycle);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CRouteRIPDlg, CDialog)/AFX_MSG_MAP(CRouteRIPDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_C

22、LICKED(IDC_SETTOPO, OnSettopo)ON_BN_CLICKED(IDC_BUTTONHELP, OnButtonhelp)ON_WM_CTLCOLOR()ON_BN_CLICKED(IDC_BUTTONDELAY1, OnButtondelay1)ON_BN_CLICKED(IDC_BUTTON11, OnButton11)ON_BN_CLICKED(IDC_BUTTON21, OnButton21)ON_BN_CLICKED(IDC_BUTTON31, OnButton31)ON_BN_CLICKED(IDC_BUTTON41, OnButton41)ON_BN_CL

23、ICKED(IDC_BUTTON51, OnButton51)ON_BN_CLICKED(IDC_BUTTON01, OnButton01)ON_BN_CLICKED(IDC_BUTTON22, OnButton22)ON_BN_CLICKED(IDC_BUTTON32, OnButton32)ON_BN_CLICKED(IDC_BUTTON42, OnButton42)ON_BN_CLICKED(IDC_BUTTON52, OnButton52)ON_BN_CLICKED(IDC_BUTTON02, OnButton02)ON_BN_CLICKED(IDC_BUTTON12, OnButto

24、n12)ON_BN_CLICKED(IDC_BUTTONCALCHART, OnButtoncalchart)ON_BN_CLICKED(IDC_BUTTONSAVE, OnButtonsave)ON_BN_CLICKED(IDC_BUTTONIMPORT, OnButtonimport)ON_BN_CLICKED(IDC_BUTTONSTART, OnButtonstart)ON_WM_TIMER()/AFX_MSG_MAPEND_MESSAGE_MAP()/ CRouteRIPDlg message handlersBOOL CRouteRIPDlg:OnInitDialog()CDial

25、og:OnInitDialog(); SetWindowText(RIP路由選擇模擬);/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon fo

26、r this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconm_tt.Create(this);m_tt.Activate(TRUE);m_tt.AddTool(GetDlgItem(IDC_SPINCYCLE),秒);m_tt.SetTipTextColor(RGB(255,0,0);m_tt.S

27、etTipBkColor(RGB(255,255,0);int i,j; /設置進度條的控制范圍0-15(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN04)-SetRange(0, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN14)-SetRange(0, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN24)-SetRange(0, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN34)-SetRange(0, 15);(CSpinButtonCtrl

28、 *)GetDlgItem(IDC_SPIN44)-SetRange(0, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN54)-SetRange(0, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN001)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN002)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN003)-SetRange(1, 15);(CSpinButtonCtrl *)GetD

29、lgItem(IDC_SPIN004)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN005)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN112)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN113)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN114)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgIte

30、m(IDC_SPIN115)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN223)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN224)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN225)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN335)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC

31、_SPIN443)-SetRange(1, 15);(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN554)-SetRange(1, 15); (CSpinButtonCtrl *)GetDlgItem(IDC_SPINCYCLE)-SetRange(1, 100); for(i=0;i6;i+) /對六個路由分別執行for (j=0;j6;j+) chartij0=Delay; /獲得延遲,即距離 chartij1=Nextrout; /獲得下一跳地址 for(i=0;iSetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_

32、GRIDLINES); m_listi-SetBkColor(RGB(127,255,212);/247,247,255 m_listi-SetTextColor(RGB(0,0,255); m_listi-SetTextBkColor(RGB(127,255,212);/247,247,0 m_listi-InsertColumn(0, 目的網絡, LVCFMT_LEFT,38); m_listi-InsertColumn(1, 距離, LVCFMT_LEFT, 38); m_listi-InsertColumn(2, 下一跳, LVCFMT_LEFT,48); /六個路由 m_listi-

33、InsertItem(0,0); m_listi-InsertItem(1,1); m_listi-InsertItem(2,2); m_listi-InsertItem(3,3); m_listi-InsertItem(4,4); m_listi-InsertItem(5,5);SetchartDate();SetDelay();return TRUE; void CRouteRIPDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoMo

34、dal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CRouteRIPDlg:OnPaint() CPaintDC dc(this); / device

35、context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); int i; /填充表格/返回客戶窗口坐標CRect rect;GetClientRect(&rect);/背景色 dc.FillSolidRect(rect,RGB(0,0,200); /畫筆CPen pen;pen.CreatePen(PS_SOLID,5,RGB(255,0,0);dc.SelectObject(&pen);for (i=0;i15;i+)if(connectrouti=FALSE)continue;if(i5)

36、dc.MoveTo(position0);dc.LineTo(positioni+1);else if (i9)dc.MoveTo(position1);dc.LineTo(positioni-3);else if (i12)dc.MoveTo(position2);dc.LineTo(positioni-6);else if (i14)dc.MoveTo(position3);dc.LineTo(positioni-8);elsedc.MoveTo(position4);dc.LineTo(position5);SetchartDate();SetDelay();void CRouteRIP

37、Dlg:ShoworHide(int editname,int spinname,BOOL Show)if(Show=TRUE):ShowWindow(:GetDlgItem(m_hWnd,editname),SW_SHOW);:ShowWindow(:GetDlgItem(m_hWnd,spinname),SW_SHOW);else:ShowWindow(:GetDlgItem(m_hWnd,editname),SW_HIDE);:ShowWindow(:GetDlgItem(m_hWnd,spinname),SW_HIDE);void CRouteRIPDlg:SetDelay()/設置各

38、個網絡的延時(距離)for (int i=0;i15;i+)switch (i)case 0: ShoworHide(IDC_EDIT001,IDC_SPIN001,connectrouti);break;case 1:ShoworHide(IDC_EDIT002,IDC_SPIN002,connectrouti);break;case 2:ShoworHide(IDC_EDIT003,IDC_SPIN003,connectrouti);break; case 3:ShoworHide(IDC_EDIT004,IDC_SPIN004,connectrouti);break;case 4:Sho

39、worHide(IDC_EDIT005,IDC_SPIN005,connectrouti);break;case 5:ShoworHide(IDC_EDIT112,IDC_SPIN112,connectrouti);break;case 6:ShoworHide(IDC_EDIT113,IDC_SPIN113,connectrouti);break;case 7:ShoworHide(IDC_EDIT114,IDC_SPIN114,connectrouti);break;case 8:ShoworHide(IDC_EDIT115,IDC_SPIN115,connectrouti);break;

40、case 9:ShoworHide(IDC_EDIT223,IDC_SPIN223,connectrouti);break;case 10:ShoworHide(IDC_EDIT224,IDC_SPIN224,connectrouti);break;case 11:ShoworHide(IDC_EDIT225,IDC_SPIN225,connectrouti);break;case 12:ShoworHide(IDC_EDIT443,IDC_SPIN443,connectrouti);break;case 13:ShoworHide(IDC_EDIT335,IDC_SPIN335,connec

41、trouti);break;case 14:ShoworHide(IDC_EDIT554,IDC_SPIN554,connectrouti);break;CString CRouteRIPDlg:IntoStr(int changenum) CString temp; temp.Format(%d,changenum);return temp;/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CRouteRIPDlg:OnQuery

42、DragIcon()return (HCURSOR) m_hIcon;void CRouteRIPDlg:OnSettopo() /設置網絡拓撲圖 SetTopology ToPo;int type;ToPo.m_check01=connectrout0;ToPo.m_check02=connectrout1;ToPo.m_check03=connectrout2;ToPo.m_check04=connectrout3;ToPo.m_check05=connectrout4;ToPo.m_check12=connectrout5;ToPo.m_check13=connectrout6;ToPo

43、.m_check14=connectrout7;ToPo.m_check15=connectrout8;ToPo.m_check23=connectrout9;ToPo.m_check24=connectrout10;ToPo.m_check25=connectrout11;ToPo.m_check34=connectrout12;ToPo.m_check35=connectrout13;ToPo.m_check45=connectrout14;type=ToPo.DoModal();if (type=IDOK)connectrout0=ToPo.m_check01;connectrout1=

44、ToPo.m_check02;connectrout2=ToPo.m_check03;connectrout3=ToPo.m_check04;connectrout4=ToPo.m_check05;connectrout5=ToPo.m_check12;connectrout6=ToPo.m_check13;connectrout7=ToPo.m_check14;connectrout8=ToPo.m_check15;connectrout9=ToPo.m_check23;connectrout10=ToPo.m_check24;connectrout11=ToPo.m_check25;con

45、nectrout12=ToPo.m_check34;connectrout13=ToPo.m_check35;connectrout14=ToPo.m_check45;Invalidate(FALSE); if (type=IDC_BUTTONSETDELAY) Delay=ToPo.m_setalldelay;Nextrout=ToPo.m_setallnext;for(int i=0;i6;i+)for(int j=0;jGetDlgCtrlID()=IDC_STATIC_TXT)pDC-SelectObject(&m_font1);pDC-SetBkColor(RGB(0,0,200);pDC-SetTextColor(RGB(200,200,0);if (pWn

溫馨提示

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

評論

0/150

提交評論