好文档 - 专业文书写作范文服务资料分享网站

网络通信程序设计实验二路由跟踪 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

. .. .

实 验 报 告

课程名称

网络通信程序设计

实验仪器 计算机 实验名称 路由跟踪

系 别 __计算机学院_ 专 业

___

班级/学号 _ _

学生

实验日期 2014年4月6日 成 绩 ___________________

指导教师 焦健

. 资料.

. .. .

实验二 路由跟踪实验

一、实验目的

学习分析程序功能结构。

熟悉ICMP协议的工作原理和路由跟踪的原理。 掌握VC6.0下程序调试、运行的基本方法。

二、实验原理

路由跟踪的实现就是巧妙地利用了ICMP报文的TTL超时报文。其实现过程如下:源主机先向目的主机发送一个回应请求报文(类型8),TTL值设为1,第一个路由器收到后将TTL减1,这样TTL变为0,分组被废除。

同时路由器向源主机发送一个TTL超时报文(类型为11),报文的IP中的源IP地址就是第一个路由器的地址,源主机就可以通过对该报文进行分析,得到第一个路由器的地址。接着发送TTL等于2的报文得到第二个路由器地址,再发TTL等于3的报文。

如此下去直到收到目的主机的回应应答报文(类型为0)或目的不可达报文(类型为3),或者到了最大跳数(要检测路由器个数的最大值)。可以看到,对TTL的设置是实现跟踪的关键,使用函数setsockopt(m_Sock, IPPROTO_IP, IP_TTL,(LPSTR)&TTL,sizeof(int)) 可以对其进行设置,m_Sock是所创建的套接字,IP_TTL说明是进行TTL设置,

. 资料.

. .. .

TTL即是要设置的TTL值,为一个整形数值 。

其实现流程如图1所示:

图 1路由跟踪流程图

三、实验容

1、按照附录容给RouteTrace程序添加代码,增加注释,调试程序通过。

源代码:RouteTrace.cpp

// RouteTrace.cpp : Defines the class behaviors for the application.

#include \#include \#include \#ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

. 资料.

. .. .

static char THIS_FILE[] = __FILE__; #endif

/////////////////////////////////////////////////////////////////////////////

// CRouteTraceApp

BEGIN_MESSAGE_MAP(CRouteTraceApp, CWinApp) //{{AFX_MSG_MAP(CRouteTraceApp)

// NOTE - the ClassWizard will add and remove mapping

macros here.

// DO NOT EDIT what you see in these blocks of

generated code!

//}}AFX_MSG

ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CRouteTraceApp construction

CRouteTraceApp::CRouteTraceApp() {

// TODO: add construction code here,

// Place all significant initialization in InitInstance

. 资料.

. .. .

}

/////////////////////////////////////////////////////////////////////////////

// The one and only CRouteTraceApp object

CRouteTraceApp theApp;

/////////////////////////////////////////////////////////////////////////////

// CRouteTraceApp initialization

BOOL CRouteTraceApp::InitInstance() {

AfxEnableControlContainer();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need.

#ifdef _AFXDLL Enable3dControls();

// Call this when using MFC in a

. 资料.

网络通信程序设计实验二路由跟踪 - 图文 

....实验报告课程名称网络通信程序设计实验仪器计算机实验名称路由跟踪
推荐度:
点击下载文档文档为doc格式
3hz2168gj28mpoj7ocb09o8y29wtcx00z1z
领取福利

微信扫码领取福利

微信扫码分享