traceroute程序设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Traceroute程序设计与实现

学生姓名: 莫小锋指导老师:龙计征

摘要本文主要讲述了路由追踪的基本程序设计与实现,并给出了一种基于IP网络的路由追踪命令Tr acert,详细分析了实现路由追踪的基本原理,归纳了路由追踪的基本流程。Tr acert通过ICMP协议和IPheader中TTL(存活时间)利用路由器对数据报存活时间的处理方式来实现路由探测的。首先根据任务书设计好流程图,然后编写程序代码,运行得到Traceroute的命令窗口。提取tracert 的输出,再结合现有IP数据库及自建地名- 坐标数据库对路由中各节点IP进行定位,最终实现了动态显示追踪的详细信息和路径。

关键词: IP 地址,ICMP协议,TTL,Tracert路由追踪

1 引言

Internet,是目前世界上最大的计算机网络,更确切的说是网络中的网络,它由遍布全球的几万局域网和数百万台计算机组成,并通过用于异构网络的TCP/IP协议进行网间通信。互联网中,信息的传送是通过网中许多段的传输介质和设备从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路劲。当然每次数据包由某一同样的出发点到达某一同样的目的地走的路劲可能会不同,但基本上来说大部分时候所走的路由是相同的。随着Internet(国际互联网)的发展,越来越多的服务通过网络提供给大众,与此同时,针对互联网的攻击事件也越来越频繁。所谓路由追踪实际上就是在IP网络上判断从源到达目的所经过的路由器的IP地址,其基本的实现手段都是向目的地发送数据包以获取经过的路由器的IP。由于Internet上的路由协议是动态的,所以每次形成的数据包从同一个出发点到达目的地的路由可能会不一样,但由于路由算法有一定的稳定性,在大部分时侯所走的路由会是相同的。

1.1 课程设计目的

1.这次课程设计,主要为了加深同学们对计算机网络网络的理解和认识

2.了解信息在计算机网络与网络之间的传送和接收

3.进一步加深了解网络与网络之间的协议

4.理解网络中的IP地址以及路由之间的相关命令。

1.2 课程设计内容

1.已知参数:输入:目的节点IP地址或主机名;输出:从控制台屏幕输出IP 报文由本机出发到达目的主机所经过的路由信息。

2.设计要求:通过原始套接字编程,实现Tracert的基本功能

2.1初始化Windows Sockets网络环境;

2.2解析命令行参数,构造目的端socket地址;

2.3定义IP、ICMP报文;

2.4接收ICMP差错报文并进行解析。

1.3课程设计要求

(1)按要求编写课程设计报告书,能正确阐述设计结果。

(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。

(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

2设计原理

raceroute是一个路由跟踪命令,它通过ICMP协议和IPheader中TTL(存活时间)来实现的。具体而言就是:发送方发出一个TTL是1的IP Datagram (事实上每个数据包发送三次,大小为40字节,包括本机的IP 地址,目的主机的IP 地址以及时间戳),当经由第一个路由器时,路由器将该数据包的TTL减1,发现此时的TTL为0,将数据包丢失,同时向源主机发送一个ICMP Time-to-Exceed 报文(包括源主机的IP 地址、路由地址以及路由的相关消息),源主机收到这个数据包后就知道了这个路由器在这条路径上。同理发送第二个、第三个......第n个。源主机将每次IP数据报的TTL+1,直到某个数据报到达了目的地址,此时不知发回一个ICMPTime-to-Exceed,而是发送一个数据报的响应报文。当源主机收到这样一个报文后便知道数据包已经到达了目的地。Traceroute提取发ICMP TTL到期消息设备的IP地址并作域名解析。每次,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及IP地址,三个包每次来回所花时间。Traceroute 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,

Traceroute给TTL记数器加1,继续进行。

2.1ICMP简介和基本原理

ICMP(Internet Control Message Protocol),即Internet控制报文协议,它是TCP/IP协议族的一个子协议,属于网络层面向无连接的协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文被包装成IP数据包传到数据链路层进行传输。通过ICMP协议,主机和路由器可以报告错误并交换相关的状态信息。ICMP对于TCP/IP协议的可靠运行是至关重要的。ICMP报文结构如图1所示:

2.2traceRoute程序的基本原理

路由追踪的主要原理是根据路径上各路由器对数据报的存活时(Time to Live,TTL)做不同的处理,使其产生超时ICMP消息响应,反馈至源主机,从而获得此跳路由器或主机的IP。照此再发送下一个TTL经过自增的数据报,直至获得整个路由中各节点的IP或者接收到错误的消息。详细过程描述如下:

1) 置n = 1。假设该过程中共经过M个路由器。

2) 源主机S向目标主机D发送一个TTL为n的UDP数据报。并设定端口号(一般大于30 000) 。

3) 路由器(或者网关、主机) Rn 对接收到的数据报的TTL 值n做减1处理。

4) 若n = 0,则丢弃UDP数据报,向源主机S发送ICMP超时报文。

5) 若n ≥ 1,继续向目标主机D发送经过处理的数据报。

6) 源主机S分析返回的ICMP报文, 从中提取出发送者Rn的地址IPn并做记录。

7) 若收到“端口不可达”的ICMP报文,则发送方即目标主机D,记录其地址

相关文档
最新文档