您的位置:首页 > 理论基础 > 计算机网络

深入理解iputils网络工具-第1篇 简介

2012-08-14 12:55 411 查看

1.1 iputils软件包简介

iputils软件包是linux环境下一些实用的网络工具的集合。一开始由Alexey Kuznetsov维护。
iputils包含以下几个工具:
1. ping。使用 ping可以测试计算机名和计算机的ip地址,验证与远程计算机的连接。ping程序由ping.c ping6.cping_common.c ping.h 文件构成
2. tracepath。与traceroute功能相似,使用tracepath测试IP数据报文从源主机传到目的主机经过的路由。tracepath程序由tracepath.c tracepath6.c traceroute6.c 文件构成。
3. arping。使用arping向目的主机发送ARP报文,通过目的主机的IP获得该主机的硬件地址。arping程序由arping.c文件构成。
4. tftpd。tftpd是简单文件传送协议TFTP的服务端程序。tftpd程序由tftp.h tftpd.c tftpsubs.c文件构成。
5. rarpd。rarpd是逆地址解析协议的服务端程序。rarpd程序由rarpd.c文件构成。
6. clockdiff。使用clockdiff可以测算目的主机和本地主机的系统时间差。clockdiff程序由clockdiff.c文件构成。
7. rdisc。rdisc是路由器发现守护程序。rdisc程序由rdisc.c文件构成。

1.2 本文简介

本文是在对源程序的分析的过程中写的总结文档。本文将依次对软件包中的程序进行介绍。介绍主要按照如下几个方面进行:

1. 在前言中简要介绍程序的基本用途、基本原理等。这是对于软件包中各软件的基本认识的总结。
2. 在程序使用中介绍程序的使用方法、使用选项等。这是对于使用软件包中程序的使用方法的介绍。
3. 在程序流程图中给出程序的基本流程。流程图的优点是比较能直观地给出程序的功能实现的流程,方便对程序有全局的掌握。然而不可避免地,流程图隐去了诸多的实现细节,所以如果要进一步分析程序,还需要进一步深入细节。
4. 介绍全局变量的含义、用途、变化等。全局变量是在程序中任何地方都可以访问的变量,所以分析全局变量有助于理解程序的数据变化流程。
5. 对于重要函数的介绍。一些重要的函数,不仅在程序的实现上占有重要的作用,而且理解起来有一定的难度,我觉得有必要进行分析。
6. 对于牵涉到的网络协议的介绍。阅读iputils源码的目的和好处之一就是帮助进一步理解网络协议。iputils涉及到IP、UDP、 ARP、RARP、ICMP、TFTP等不同层次的网络协议。本文将给出网络协议的基本介绍,主要是给出了网络报文的格式等内容。
7. 对于程序中重要的实现方法的介绍。而在iputils源码分析中,遇到了很多计算机网络方面的概念、思想、策略和机制。结合iputils的具体实现方法,本文将介绍计算机网络方面的相关知识。
8. 对其他知识的介绍,例如基于linux的多线程编程或linux下socket编程的知识。在分析源码的过程中,不可回避地遇到了这些知识的使用。

1.3 附件说明

本文基于的源码版本为iputils-s20071127。源代码可以在http://www.linux-ipv6.org/gitweb/gitweb.cgi?p=gitroot/iputils.git中下载。

在阅读和分析源代码过程中,对代码进行了大量的注释,附件可以在下载http://download.csdn.net/detail/fsdev/4498604。

为了能够编译通过,定义了rdisc.c需要使用但是源代码中没有定义的宏:

#define OPEN_MAX 10

这个宏的意义是程序所能够打开的最大的文件数目。rdisc程序在退到后台之后,需要关闭除了socket文件之外的所有文件,OPEN_MAX宏就是在这里使用的。为了能够输出测试信息,并尽量不修改原程序代码,定义宏:

#define lixiprintf printf

所有添加输出信息的部分都使用lixiprintf宏。除了加入注释和以上两个更改外,没有修改程序其他地方。

本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: