《traceroute实验报告》由会员分享,可在线阅读,更多相关《traceroute实验报告(20页珍藏版)》请在金锄头文库上搜索。
1、信息工程学院盐 城 师 范 学 院 毕业论文(设计) 基于ICMP的MyTraceRoute探测程序及其应用学生姓名 沈晓玲 学 院 信息科学与技术学院专 业 网络工程班 级 网络工程13(2)学 号 13263408指导教师 曹莹莹 2016年 6月30日基于ICMP的MyTraceRoute探测程序及其应用摘要traceroute程序是进行网络测量的常用工具之一,通过用于异构网络的TCP/IP协议进行网间通信。程序利用增加存活时间(TTL)值来实现其功能的。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并传送一个ICMP TTL数据包给原数据包的发出者
2、。原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。原始套接字是,它实现于系统核心,普通的套接字无法处理icmp,igmp等网络报文,而原始套接字可以。Traceroute程序是进行测量的常用工具之一,Traceroute功能可以通过很多协议实现,其原理是借助ICMP的超时差错报文来反馈路径信息。【关键词】traceroute 网络通信 原始套接字 ICMP的超市差错报文 MyTraceRoute detection program based on ICMP and its
3、 applicationabstractTraceroute program is one of the commonly used tools for network measurement, through the TCP/IP protocol for heterogeneous network network communication.The program uses an increased survival time (TTL) value to achieve its function. When the packet passes through a router, its
4、survival time will be reduced by 1. When the survival time is 0, the host will cancel the packet, and send a TTL ICMP packet to the sender of the original data packets. The original socket can read and write the kernel without processing the IP packet, and the stream socket can only read the data of
5、 the TCP protocol, the data packet socket can only read the data of UDP protocol. Therefore, if you want to access other protocols to send data must use the original socket. Original socket is, it is realized in the system core, ordinary sockets can not handle ICMP, IGMP and other network packets, a
6、nd the original socket can be.Traceroute program is one of the commonly used tools for measurement, Traceroute function can be achieved through a lot of protocols, the principle is to use the ICMP timeout error messages to feedback path information.【Key words】 traceroute network communication origin
7、al socket ICMP supermarket error message目 录1traceroute的概念原理以及软件环境.4 1.1traceroute的概念.4 1.2traceroute的概念及原理.4 1.3设计的软件环境.42设计过程和内容.4 2.1实现原理.4 2.2实验要求.4 2.3实验内容.53实验分析.54实验中用到的函数总结.6 4.1原始网络套接字网络功能框架.6 4.2本试验中用到的函数,及函数的功能.65在实验中用到的函数代码.76实验结果截图.117实验遇到的问题.14总结.18收获.18 题目:基于ICMP的MyTraceRoute探测程序及其应用1t
8、raceroute的概念原理以及软件环境1.1traceroute的概念 traceroute程序是进行网络测量的常用工具之一,通过用于异构网络的TCP/IP协议进行网间通信。1.2traceroute的概念及原理 原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。原始套接字是,它实现于系统核心,普通的套接字无法处理icmp,igmp等网络报文,而原始套接字可以。1.3设计的软件环境: Windows7、vs2008、2设计过程和内容: 2.1实现原理 在IP首部有一个ttl
9、字段记录该数据包的在网络上的存活时间,(经过路由器的跳数),每当分组经过路由器,其存活时间TTL值就会减小,当TTL值减为1时,路由器会取消分组,并传送一个ICMP超时差错报文给发送端,而当请求包到达主机是,目的方会返回一个正常的ICMP响应。这样通过有策略的构造TTL值递增的探测报文,就能借助路由器的反馈的ICMP超时差错和ICMP ECHO响应来收集探测源到目标路径上的路由器信息。2.2实验要求本实验是程序设计类实验,要求使用原始套接字编程,实现基于icmp的traceroute探测程序。具体要求如下:(1)构造ICMPECHO请求包。 (2)有序更改IP首部TTL值。 (3)有序更改IP
10、首部TTL值。 (4)完成taceroute的程序框架。 (5)获取并显示从探测器源到探测目标路径上的路由器IP地址和往返延迟。2.3实验内容为了满足traceroute的基本功能,本实验需要构建一个traceroute的探测框架,具有ICMP ECHO请求的构造和发送功能,能够接受ICMP协议承载差错报文和ECHO响应,能够对不同类型的反馈作出正确的解析。基于此,该框架设置最大的TTL探测值,对用户输入的目标域名进行地址转换,将TTL值逐渐从1 开始递增,针对每个TTL值进行三次探测,接受路由器返回的ICMP超时出错应答,获得探测包往返的时间延迟,直到获得目的地址的ICMPECHO响应或到达
11、最大跳数为止。步骤如下: (1)引用头文件。 (2)处理命令行参数。 (3)创建原始套接字。 (4)对目标主机名或域名进行IP地址转换。 (5)构造ICMP ECHO 请求,IP首部的TTL值从1开始递增。 (6)发送ICMP ECHO 请求。 (7)接收ICMP协议的超时差错响应或ECHO响应。 (8)对接收到的数据进行解析,将结果打印到命令行。 (9)回到步骤5。 (10)如果达到终止条件,关闭套接字,释放资源,终止程序。3实验分析在本实验中,我们尝试从IP首部开始构造基于ICMP协议承载的ECHO请求,并设置IP首部的TTL值为从1 递增到指定的最大值,为了达到这一目的,需要对IP首部的
12、ip _TTL选项进行设置;由于原始套接字是在网络层上进行的数据处理,这种处理是无连接的,应用程序可能接收到各类协议数据,为了限制接收到的数据类型,在套接字创建时,指定使用IPPROTO_ICMP协议,并在数据接收时对接收到的ICMP协议的消息类型进行判断;考虑到单次探测包有可能在网络传输中被丢弃,模仿操作系统中对mytraceroute的实现,在每个TTL值的探测上也尝试使用三次重复的请求发送与接收。基于以上考虑将mytraceroute的代码实现划分为:主函数main()、请求构造与发送函数SendEchoRequest()、消息接受函RecvEchoReply()和消息解析解析函数DecodeIcmpResponse()四个主要的函数实现。4实验中用到的函数总结4.1原始网络套接字网络功能框架 原始网络套接字网络功能框架具备的基本功能有: 1.Windows Sockets DDL初始化功能 2.Windows Sockets DDL释放功能 3.地址转换功能 4.套接字初始化功能 5.套接字配置功能