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