欢迎来到天天文库
浏览记录
ID:49287475
大小:519.00 KB
页数:15页
时间:2020-02-03
《Visual C++网络编程技术-09.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、IP网络工具授课教师:网络编程——导入ping命令和traceroute命令都是网络管理者经常用到的网络工具。ping命令是测试连接的一个非常有用的工具,可以在各种协议中用来检查同远程主机之间的连接。traceroute同ping命令一样,可以用来测试连接性,它耗费的时间比ping命令长,但它可以提供更多的信息。本章就介绍了这两个网络工具的编程实现技术。本章要点ping工具编程实现路由跟踪工具编程实现ping工具编程ping是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中ping是一个十分好用的TCP/IP工具。主要的功能是用来检测网络
2、的连通情况和分析网络速度。ping实现原理:ping命令的工作原理是向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。ICMP(InternetControlMessageProtocol,网间控制报文协议)是一种用于特殊用途的报文机制,可以使互联网中的路由器或主机报告差错或提供有关意外情况的信息。ICMP报文ICMP报文为两级封装,每个ICMP消息都封装在IP封包中的数据部分,IP数据报则放在帧的数据中进行网络传输ICMP包头ICMP包头包含三个字段
3、:1字节类型域、1字节代码域、2字节校验和。ICMP包头字段的含义类型域表示了该报文的类型,如:回应请求报文,数据报超时报文等代码域表示了该类型的几种不同情况,如:当类型为11(超时报文)时,代码为0表示TTL超时,为1表示片重组超时。在实现ping功能时要发送回应请求报文(类型为8)ping过程源主机向目的主机发送一个类型为8的回应请求报文若目的站点收到回应请求报文则把报文IP包头部中的目的IP与源IP地址交换,将类型8改为回应类型0,计算出新的校验和再发往源主机。若源主机收到了该回应报文,则不但说明了目的主机可达,而且说明目的主机与源主
4、机之间的路由器工作正常,源主机和目的主机的IP、ICMP软件运行正常。ping功能实现流程路由跟踪程序计算机在Internet中传递信息时,必须要经过路由器进行网络路由才能找到目的主机,把信息送到目的主机。路由器中都有一张路由表,表中保存了从本路由器到某一主机的路由信息,路由器就是通过该路由表进行网络寻径的。两台主机之间并没有一条固定的路径(路由表并不固定),该路径随着网络的变动而作相应的变动。要得到本机与网络上某台主机的网络路径就必须要进行路由跟踪。路由跟踪原理Traceroute使用的办法是发送一个UDP封包到目的地址,递加TTL值。初
5、始情况下,TTL的值是1,意味着UDP封包将到达第一个路由器,在这里TTL将终止。这个终止会促使路由器产生一个ICMP超时封包,并发回。然后初始的TTL值再加1,再发送这个UDP封包,这样,UDP封包将到达一个更远的路由器,一个ICMP超时封包再次被发回。收集每个ICMP消息便可以得到封包所经过的路由器。一旦TTL增加得足够大,以至到达了终端,多半会返回一个ICMP端口不可达消息,因为在接收端没有进程等待这个消息。实现方法开始运行后首先创建两个套接字,一个是用于接收ICMP封包的原始套接字sRaw,另一个是用于发送TTL不断增加的UDP封包
6、的套接字sSend。程序进入无限循环,在sSend套接字上发送UDP封包,逐渐增加封包的TTL值,每次TTL超时,一个ICMP消息就会被发送回来,在sRaw套接字上等待这个消息,打印发送此消息的路由器的信息。这样就获得了所有经过的路由器信息。程序界面详细代码见教材ThankYou!
此文档下载收益归作者所有