tcpdump 基本概念

1. 软件功能

tcpdump用来截获网络接口卡上的IP分组,主要用于分析网络层数据的发送与应答过程!

2. 实现原理

2.1 前置条件

  1. t c p d u m p通过将网络接口卡设置为混杂模式( promiscuous mode)来截获经过网络接口的每一个分组。正常情况下,用于诸如以太网媒体的接口卡只截获送往特定接口地址或广播地址的链路层的帧
  2. 底层的操作系统必须允许将一个接口设置成混杂模式,并且允许一个用户进程截获帧。下列的操作系统可以支持t c p d u m p,或者可以加入对t c p d u m p的支持: 4 . 4 B S D、B S D / 3 8 6、S u n O S、U l t r i x和H P - U X

2.2 具体实现

2.2.1 BSD 分组过滤器

当前由B S D演变而来的U n i x内核提供了BSD 分组过滤器BPF (BSD Packet Filter)

功能点

  1. t c p d u m p用它来截获和过滤来自一个网络接口卡的分组。
  2. B P F也可以工作在点对点的链路上,如S L I P,不需要什么特别的处理就可以
  3. 截获所有通过接口的分组。B P F还可以工作在环回接口上

前置条件

  1. B P F将以太网设备驱动程序设置为混杂模式,然后从驱动程序那里接收每一个收到的分组和传输的分组。
  2. 这些分组要通过一个用户指明的过滤器,使得只有那些用户进程感兴趣的分组才会传递给用户进程
  3. 多个进程可以同时监视一个接口,每个进程指明了一个自己的过滤器。下图显示了t c p d u m p的两个实例进程和一个R A R P守护进程监视同样的以太网接口。。t c p d u m p的每个实例指明了一个自己的过滤器。t c p d u m p的过滤器可以由用户在命令行指明,而r a r p d总是使用只截获R A R P请求的过滤器
  4. 除了指明一个过滤器, B P F的每个用户还指明了一个超时定时器的值。因为网络的数据传输率可以很容易地超过C P U的处理能力,而且一个用户进程从内核中只读小块数据的代价昂贵,因此, B P F试图将多个帧装载进一个读缓存,只有缓存满了或者用户指明的超时到期才将读缓存保存的帧返回。t c p d u m p将超时定时器置为1秒,因为它一般从B P F收到很多数据。而R A R P守护进程收到的帧很少,所以r a r p d将超时置为0(收到一个帧就返回)
    在这里插入图片描述

使用方法
在这里插入图片描述

2.2.2 SunOS的网络接口分接头

历史

SunOS 4.1.x提供了一个S T R E A M S伪设备驱动程序(pseudo-device driver),称为网络接口分接头(Network Interface Ta p )或者N I T([Rago 1993] 包含了流设备驱动程序的其他细节。我们把这种特征叫作“流”)。N I T类似于B S D分组过滤器,但不如后者功能强大和效率高

限制

B P F可以截获网络接口收到的和传送的分组,而N I T只能截获接口收到的分组。将t c p d u m p与N I T结合起来意味着我们只能看见由网络中其他主机发送来的分组—即根本不可能看见我们自己主机发送的
分组

用法
在这里插入图片描述

  1. 当设备/ d e v / n i t被打开时,流驱动程序n i t i f就会被打开。既然N I T是使用流来构造的,处理模块可以放在n i t i f驱动程序之上。t c p d u m p将模块n i t b u f放在S T R E A M之上。这个模块将多个网络帧聚集在一个读缓存中,允许用户进程指明一个超时的值。这种情况类似于我们在B P F中所描述的。R A R P守护进程没有把这个模块放在它的流之上,因为它只处理了一小部分分组。
  2. 用户指明的过滤由流模块n i t p f处理。我们注意到这个模块被R A R P守护进程所用,但没有被t c p d u m p使用。在S u n O S操作系统中,t c p d u m p代之以在用户进程中完成自己的过滤操作。这么做的理由是n i t p f使用的假想机器的指令与B P F所支持的指令不同(不如B P F所支持的功能强大)。这就意味着当用户对t c p d u m p指明了一个过滤表达式时,与B P F相比较,使用N I T就会有更多的数据在内核与用户进程之间交换。

3. tcpdump 输出

  1. 首先,它总是输出它正在监听的网络接口的名字
  2. t c p d u m p输出的时间戳在一个微秒精度的系统中采用如同0 9 : 11 : 2 2 . 6 4 2 0 0 8的格式,在一个1 0 m s时钟精度的系统中则如同0 9 : 11 : 2 2 . 6 4一样
  3. t c p d u m p总是打印发送主机的名字,接着一个大于号,然后是目的主机的名字。

4. 安全性考率

安全问题

很明显,截获网络中传输的数据流使我们可以看到很多不应该看到的东西。例如,T e l n e t和F T P用户输入的口令在网络中传输的内容和用户输入的一样(与口令的加密表示相比,这称为口令的明文表示。在U n i x口令文件中,一般是/ e t c / p a s s w d或/ e t c / s h a d o w,
存储的是加密的表示)。

学习目的

很多时候一个网络管理员需要使用一个类似于t c p d u m p的工具来分析网络中出现的问题。我们是把t c p d u m p作为一个学习的工具,用来查看网络中实际传输的东西。对t c p d u m p以及其他厂商提供的类似工具的访问权限依赖于具体系统。

保护措施

例如,在S u n O S,对N I T设备的访问只限于超级用户。B S D的分组过滤器使用了一种不同的技术:通过对/ d e v / b p f X X设备的授权来控制访问。一般来说,只有属主才能读写这些设备(属主应该是超级用户),对于同组用户是可读的(经常是系统管理组)。这就是说如果系统管理员不对程序设置用户的I D,一般的用户是不能运行类似于t c p d u m p的程序的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值