tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包的头部信息。用户可以指定哪些数据包被监视、哪些控制要显示格式。例如要监视所有Ethernet上来往的通信,执行下述命令:
    #  tcpdump -i eth0
实际上,tcpdump命令的格式为:
tcpdump [ -选项] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
          [ -T 类型 ] [ -w 文件名 ] [表达式 ]
tcpdump命令中的选项参数说明如表4-2所示。Tcpdump命令中的表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
表4-2  tcpdump命令的选项介绍
参数选项    说      明
-a        将网络地址和广播地址转变成名字;
-d        将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd        将匹配信息包的代码以c语言程序段的格式给出;
-ddd        将匹配信息包的代码以十进制的形式给出;
-e        在输出行打印出数据链路层的头部信息;
-f        将外部的Internet地址以数字的形式打印出来;
-l        使标准输出变为缓冲行形式;
-n        不把网络地址转换成名字;
-t        在输出的每一行不打印时间戳;
-v        输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务        类型的信息;
-vv        输出详细的报文信息;
-c        在收到指定的包的数目后,tcpdump就会停止;
-F        从指定的文件中读取表达式,忽略其它的表达式;
-I        指定监听的网络接口;
-r        从指定的文件中读取包(这些包一般通过-w选项产生);
- w        直接将包写入文件中,并不分析和打印出来;
-T        将监听到的包直接解释为指定的类型的报文,常见的类型        有rpc (远程过程调用)和snmp(简单网络管理协议;)
下面我们介绍几种典型的tcpdump命令的输出信息
(1) 数据链路层头信息
        # tcpdump --e host ice
ice 是一台装有linux的主机,其MAC地址是0:90:27:58:AF:1A,H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.
telnet 0:0(0) ack 22535 win 8760 (DF)
(2) ARP包的TCPDUMP输出信息
使用命令
        #tcpdump arp
得到的输出结果是:
  22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
  22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
(3) TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
正则匹配到第一个关键字就停止
(4)UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
  route.port1 > ice.port2: udp lenth
4.3  网络配置文件及程序
4.3.1  网络配置文件   
在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,可以通过编辑这些文件来完成联网工作。系统中重要的有关网络配置文件有:
Ø       1.  网络设置/etc/sysconfig/network
    该文件用来指定服务器上的网络配置信息,包含了控制和网络有关的文件和守护程序的行为的参数。下面是一个例子文件:
        NETWORKING=yes
        HOSTNAME=machine1
G        ATEWAY=210.34.6.2
F        ORWARD_IPV4=yes
G        ATEWAYDEV=   
              其中,NETWORK=yes/no 表示网络是否被配置;HOSTNAME=hostname hostname 表示服务器的主机名;GATEWAY=gw-ip gw-ip 表示网络网关的IP地址;    FORWARD_IPV4=yes/no 是否开启IP转发功能;GAREWAYDEV=gw-dev gw-dw 表示网关的设备名,
2. 主机名/etc/HOSTNAME
该文件包含了系统的主机名称,包括完全的域名,如:
192.168.0.1 lb.whpu.edu
这个文件是在启动时从文件/etc/sysconfig/network中的HOSTNAME行中得到的,用于在启动时设置系统的主机名。
3.  IP地址和主机名的映射/etc/hosts
/etc/hosts文件中包含了IP地址和主机名之间的映射,还包括主机名的别名,IP地址的设计使计算机容易识别,但对于人来说却很难记忆,为了解决这个问题,就创建了/etc/hosts这个文件。下面是一个例子文件:
    127.0.0.1 machine1 localhost.localdomain localhost
    192.168.1.100 machine7
    192.168.1.101 otherpc otheralias
  在这个例子中,本机名是machine1,otherpc还有别名otheralias,它可以指向otheralias。。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效,使用下面的命令来重新启动网络:
    /etc/rc.d/init.d/network restart
4. 端口号和服务器名之间的映射/etc/services
/etc/services中包含了服务名和端口号之间的映射,不少系统程序要使用这个文件
5.  配置名字解析器/f
有两个文件声明系统到哪里寻名字信息来配置UNIX名字解析器的库。文件/f由版本5libc库所使用,而/f由版本6使用(glibc )。问题在于一些程序使用其中一个,而一些使用另一个,所以将两个文件都配置正确是必要的。
/f文件指定如何解析主机名,Linux通过解析器库来获得主机名对应的IP地址。
5. 配置名字解析器/f
//f文件是由Sun公司开发并用于管理系统中多个配置文件查的顺序,它比/f文件提供了更多的功能。/f中的每一行或者是注释(以#号开头)或者是一个关键字后跟冒号和一系列要试用的有顺序的方法。每一个关键字是在/etc/目录可以被/f控制的/etc文件的名字。下面是可以被包含的关键字:
aliases 邮件别名; passwd 系统用户;group 用户组;shadow 隐蔽口令;hosts 主机名和I P地址;networks 网络名和号;protocols 网络协议;services 端口号和服务名称;ethers 以太网号;rpc 远程进程调用的名称和号;netgroup 网内组
6. 配置DNS客户/f
文件/f配置DNS客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件:
        search mydom.edu
        nameserver 210.34.0.14
        nameserver 210.34.0.2
7.  主机地址、子网掩码和网关/etc/init.d/network
不像很多其他的UNIX和Linux操作系统, Red Hat当前并不能自动地通过/etc/hostname和/etc/hosts文件来配置网络。为了改变主机缺省的IP地址,必须直接编辑/etc/init.d/network脚本使其反映正确的网络配置。这个文件包括了声明IP地址、掩码、网络、广播地址和缺省路由器的变量。下面是这个文件中相应的部分:
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    BROADCAST=192.168.1.255
    GATEWAY=192.168.1.1
2.  配置网络属性
进入“Configuer TCP/IP”窗口后,设置相应的网络属性,如IP地址、子网掩码、默认网关和DNS服务器地址,确认配置完成后单击“OK”按钮保存设置。
3.  重新启动网络服务
使用netconfig程序进行网络配置后只是修改了相应的网络配置文件,并没有使用所作的配置在当前系统中生效,需要使用“service network restart”命令重新启动网络服务,才可以使新的配置在当前系统中生效。图4-24显示在终端上重新启动网络服务及响应过程。
4.3.3  测试网络
测试网络的第一步是,确认局域网中的计算机在启动之后能否与其他主机通讯。可以先在每台计算机上输入 reboot 命令。在 Linux 重新启动过程中,要仔细观看屏幕上滚动的测试信息。注意寻下列信息:
  Setting hostname: <hostname you assigned to this computer>
  Bringing up Interface lo: <OK> or <FAILED>
  Bringing up interface eth0 <OK> or <FAILED>
也可以使用 ping 命令来判断计算机能否与其他计算机通讯。在当前主机上打开一个终端窗口,并输入命令 ping <IP address> ping <hostname>。其中,<IP address> <hostname> 是分配给这个计算机的 IP 地址和主机名。需要注意的是,为了让 ping 命令正确工作,就必须输入 IP 地址或者主机名作为参数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。