当前位置:文档之家› tcpdump的中文man帮助

tcpdump的中文man帮助

tcpdump的中文man帮助
tcpdump的中文man帮助

名称 (NAME)

tcpdump - 转储网络上的数据流

总览 (SYNOPSIS)

tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ]

[ -i interface ] [ -r file ] [ -s snaplen ]

[ -T type ] [ -w file ] [ expression ]

描述 (DESCRIPTION)

Tcpdump打印出在某个网络界面上, 匹配布尔表达式expression的报头.

对于 SunOS 的 nit 或 bpf 界面:要运行tcpdump ,你必须有/dev/nit或

/dev/bpf*的读访问权限.

对于 Solaris 的 dlpi:你必须有网络仿真设备 (network pseudo device), 如/dev/le 的读访问权限.

对于 HP-UX 的 dlpi:你必须是 root, 或者把它安装成 root 的设置uid 程序. 对于 IRIX 的 snoop:你必须是 root, 或者把它安装成 root 的设置uid 程序. 对于Linux:你必须是 root, 或者把它安装成 root 的设置uid 程序.

对于 Ultrix 和 Digital UNIX:一旦超级用户使用pfconfig(8) 开放了 promiscuous 操作模式 (promiscuous-mode), 任何用户都可以运行tcpdump.

对于 BSD:你必须有/dev/bpf*的读访问权限.

选项 (OPTIONS)

-a

试着把网络和广播地址转换成名称.

-c

当收到count报文后退出.

-d

把编译好的报文匹配模板 (packet-matching code) 翻译成可读形式, 传往标准

输出, 然后退出.

-dd

把报文匹配模板 (packet-matching code) 以C程序片断的形式输出.

-ddd

把报文匹配模板 (packet-matching code) 以十进制数形式输出 (前面加上总

数).

-e

每行都显示链路层报头.

-f

用数字形式显示 '外部的' 互联网地址, 而不是字符形式 (这个选项用来绕开

脑壳坏光的 SUN 黄页服务器的问题 --- 一般说来它翻译外部网络数字地址的

时候会长期挂起).

-F

把file的内容用作过滤表达式. 忽略命令行上的表达式.

-i

监听interface. 如果不指定接口, tcpdump在系统的接口清单中, 寻找号

码最小, 已经配置好的接口 (loopback 除外). 选中的时候会中断连接.

-l

行缓冲标准输出. 可用于捕捉数据的同时查看数据. 例如,

``tcpdump -l | tee dat'' or ``tcpdump -l > dat & tail -f dat''. -n

别把地址转换成名字 (就是说, 主机地址, 端口号等)

-N

不显示主机名字中的域名部分. 例如, 如果使用这个选项, tcpdump只显示

``nic'', 而不是 ``https://www.doczj.com/doc/027220633.html,''.

-O

禁止运行报文匹配模板的优化器. 只有当你怀疑优化器有 bug 时才有用.

-p

禁止把接口置成 promiscuous 模式. 注意, 接口有可能因其他原因而处于

promiscuous 模式; 因此, '-p' 不能作为 `ether host 或 ether broadcast' 的

简写.

-q

快速输出. 显示较少的协议信息, 输出行会短一点点.

-r

从file中读入数据报 (文件是用 -w 选项创建的). 如果file是 ``-'', 就

读标准输入.

-s

从每个报文中截取snaplen字节的数据, 而不是缺省的 68 (如果是 SunOS 的

NIT, 最小值是 96). 68 个字节适用于 IP, ICMP, TCP 和 UDP, 但是有可能截掉

名字服务器和 NFS 报文的协议信息 (见下面). 输出时如果指定 ``[|proto]'', tcpdump 可以指出那些捕捉量过小的数据报, 这里的proto是截断发生处的

协议层名称. 注意, 采用更大的捕捉范围既增加了处理报文的时间, 又相

应的减少了报文的缓冲数量, 可能导致报文的丢失. 你应该把snaplen设的

尽量小, 只要能够容纳你需要的协议信息就可以了.

-T

把通过 "expression" 挑选出来的报文解释成指定的type. 目前已知的类型

有: rpc (远程过程调用 Remote Procedure Call), rtp (实时应用协议 Real-Time

Applications protocol), rtcp (实时应用控制协议 Real-Time Applications

control protocol), vat (可视音频工具 Visual Audio Tool), 和wb (分布式白板

distributed White Board).

-S

显示绝对的, 而不是相对的 TCP 序列号.

-t

禁止显示时戳标志.

-tt

显示未格式化的时戳标志.

-v

(稍微多一点) 繁琐的输出. 例如, 显示 IP 数据报中的生存周期和服务类型.

-vv

更繁琐的输出. 例如, 显示 NFS 应答报文的附加域.

-w

把原始报文存进file, 而不是分析和显示. 它们可以以后用 -r 选项显示.

如果file是 ``-'', 就写往标准输出.

-x

以 16 进制数形式显示每一个报文 (去掉链路层报头后) . 可以显示较小的

完整报文, 否则只显示snaplen个字节 .

expression

用来选择要转储的数据报. 如果没有指定expression , 就转储网络的全

部报文. 否则, 只转储相对expression为 `true' 的数据报.

expression一个或多个原语 (primitive) 组成. 原语通常由一个标识(id,

名称或数字), 和标识前面的一个或多个修饰子(qualifier) 组成. 修饰子有

三种不同的类型:

type

类型修饰子指出标识名称或标识数字代表什么类型的东西. 可以使用的类型

有host, net和port. 例如, `host foo', `net 128.3', `port 20'. 如果不指定类型修饰子, 就使用缺省的host .

dir

方向修饰子指出相对于标识的传输方向 (数据是传入还是传出标识). 可以使

用的方向有src, dst, src or dst和src and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 如果不指定方向修饰子, 就使用缺省的

src or dst .对于 `null' 链路层 (就是说象 slip 之类的点到点协议), 用

inbound和outbound修饰子指定所需的传输方向.

proto

协议修饰子要求匹配指定的协议. 可以使用的协议有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp和udp. 例如, `ether src foo', `arp net 128.3', `tcp port 21'. 如果不指定协议修饰子, 就使用所有符合类型的协议. 例如, `src foo' 指 `(ip 或 arp 或 rarp) src foo' (注意后者不符合语法), `net bar' 指 `(ip 或 arp 或 rarp) net bar', `port 53' 指 `(tcp 或 udp) port 53'.

[`fddi' 实际上是 `ether' 的别名; 分析器把它们视为 ``用在指定网络接

口上的数据链路层.'' FDDI 报头包含类似于以太协议的源目地址, 而且通常包含类似于以太协议的报文类型, 因此你可以过滤 FDDI 域, 就象分析以太协议一样. FDDI 报头也包含其他域, 但是你不能在过滤器表达式里显式描述.]

作为上述的补充, 有一些特殊的 `原语' 关键字, 它们不同于上面的模式: gateway, broadcast, less, greater和数学表达式. 这些在后面有叙述.

更复杂的过滤器表达式可以通过and, or和not连接原语来组建. 例如,

`host foo and not port ftp and not port ftp-data'. 为了少敲点键, 可以忽略相同的修饰子. 例如, `tcp dst port ftp or ftp-data or domain' 实际上就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.

允许的原语有:

dst host host

如果报文中 IP 的目的地址域是host, 则逻辑为真. host既可以是地址, 也可以是主机名.

src host host

如果报文中 IP 的源地址域是host, 则逻辑为真.

host host

如果报文中 IP 的源地址域或者目的地址域是host, 则逻辑为真. 上面所有的 host 表达式都可以加上ip, arp, 或rarp关键字做前缀, 就象:

ip host host

它等价于:

ether proto \ip and host host

如果host是拥有多个 IP 地址的主机名, 它的每个地址都会被查验. ether dst ehost

如果报文的以太目的地址是ehost, 则逻辑为真. Ehost既可以是名字

(/etc/ethers 里有), 也可以是数字 (有关数字格式另见ethers(3N) ).

ether src ehost

如果报文的以太源地址是ehost, 则逻辑为真.

ether host ehost

如果报文的以太源地址或以太目的地址是ehost, 则逻辑为真.

gateway host

如果报文把host当做网关, 则逻辑为真. 也就是说, 报文的以太源或目的地址是host, 但是 IP 的源目地址都不是host. host必须是个主机名, 而且

必须存在 /etc/hosts 和 /etc/ethers 中. (一个等价的表达式是

ether host ehost and not host host

对于host / ehost, 它既可以是名字, 也可以是数字.)

dst net net

如果报文的 IP 目的地址属于网络号net, 则逻辑为真. net既可以是名字(存在 /etc/networks 中), 也可以是网络号. (详见networks(4)).

src net net

如果报文的 IP 源地址属于网络号net, 则逻辑为真.

net net

如果报文的 IP 源地址或目的地址属于网络号net, 则逻辑为真.

net net mask mask

如果 IP 地址匹配指定网络掩码(netmask) 的net, 则逻辑为真. 本原语可

以用src或dst修饰.

net net/len

如果 IP 地址匹配指定网络掩码的net, 则逻辑为真, 掩码的有效位宽为len. 本原语可以用src或dst修饰.

dst port port

如果报文是 ip/tcp 或 ip/udp, 并且目的端口是port, 则逻辑为真. port 是一个数字, 也可以是 /etc/services 中说明过的名字 (参看tcp(4P) 和

udp(4P)). 如果使用名字, 则检查端口号和协议. 如果使用数字, 或者有

二义的名字, 则只检查端口号 (例如, dst port 513将显示 tcp/login 的数据和udp/who 的数据, 而port domain将显示 tcp/domain 和 udp/domain 的数据). src port port

如果报文的源端口号是port, 则逻辑为真.

port port

如果报文的源端口或目的端口是port, 则逻辑为真. 上述的任意一个端口表达式都可以用关键字tcp或udp做前缀, 就象:

tcp src port port

它只匹配源端口是port的 TCP 报文.

less length

如果报文的长度小于等于length, 则逻辑为真. 它等同于:

len <= length.

greater length

如果报文的长度大于等于length, 则逻辑为真. 它等同于:

len >= length.

ip proto protocol

如果报文是 IP 数据报(参见ip(4P)),其内容的协议类型是protocol, 则

逻辑为真. Protocol可以是数字, 也可以是下列名称中的一个: icmp, igrp, udp, nd, 或tcp. 注意这些标识符tcp, udp, 和icmp也同样是关键字, 所以

必须用反斜杠(\) 转义, 在 C-shell 中应该是 \ .

ether broadcast

如果报文是以太广播报文, 则逻辑为真. 关键字ether是可选的.

ip broadcast

如果报文是 IP广播报文, 则逻辑为真. Tcpdump 检查全0 和全1 广播约定, 并且检查本地的子网掩码.

ether multicast

如果报文是以太多目传送报文(multicast), 则逻辑为真. 关键字ether是

可选的. 这实际上是 `ether[0] & 1 != 0' 的简写.

ip multicast

如果报文是 IP多目传送报文, 则逻辑为真.

ether proto protocol

如果报文协议属于以太类型的protocol, 则逻辑为真. Protocol可以是数字, 也可以是名字, 如ip, arp, 或rarp. 注意这些标识符也是关键字, 所以

必须用反斜杠(\) 转义. [如果是 FDDI (例如, `fddi protocol arp'), 协议标识来自 802.2 逻辑链路控制(LLC)报头, 它通常位于 FDDI 报头的顶层. 当根据

协议标识过滤报文时, Tcpdump假设所有的 FDDI 报文含有 LLC 报头, 而且

LLC 报头用的是 SNAP 格式.]

decnet src host

如果 DECNET 的源地址是host, 则逻辑为真, 该主机地址的形式可能是

``10.123'', 或者是 DECNET 主机名. [只有配置成运行 DECNET 的 Ultrix 系统

支持 DECNET 主机名.]

decnet dst host

如果 DECNET 的目的地址是host, 则逻辑为真.

decnet host host

如果 DECNET 的源地址或目的地址是host, 则逻辑为真.

ip, arp, rarp, decnet

是:

ether proto p

的简写形式, 其中p为上述协议的一种.

lat, moprc, mopdl

是:

ether proto p

的简写形式, 其中p为上述协议的一种. 注意tcpdump目前不知道如何

分析这些协议.

tcp, udp, icmp

是:

ip proto p

的简写形式, 其中p为上述协议的一种.

expr relop expr

如果这个关系成立, 则逻辑为真, 其中relop是 >, <, >=, <=, =, != 之一, expr是数学表达式, 由常整数(标准C语法形式), 普通的二进制运算符 [+, -, *, /, &, |], 一个长度运算符, 和指定的报文数据访问算符组成. 要访问报文内

的数据, 使用下面的语法:

proto [ expr : size ]

Proto是ether, fddi, ip, arp, rarp, tcp, udp, or icmp之一, 同时也指出了下标操作的协议层. expr给出字节单位的偏移量, 该偏移量相对于指定的

协议层. Size是可选项, 指出感兴趣的字节数; 它可以是 1, 2, 4, 缺省为 1

字节. 由关键字len给出的长度运算符指明报文的长度.

例如, `ether[0] & 1 != 0' 捕捉所有的多目传送报文. 表达式 `ip[0] & 0xf != 5' 捕捉所有带可选域的 IP 报文. 表达式 `ip[6:2] & 0x1fff = 0' 只捕捉未分片和片偏移为0 的数据报. 这种检查隐含在tcp和udp下标操作中. 例如, tcp[0]一定是 TCP 报头的第一个字节, 而不是其中某个 IP片的第一个字

节.

原语可以用下述方法结合使用:

园括弧括起来的原语和操作符 (园括弧在 Shell 中有专用, 所以必须转义).

取反操作 (`!' or `not').

连结操作 (`&&' or `and').

或操作 (`||' or `or').

取反操作有最高优先级. 或操作和连结操作有相同的优先级, 运算时从左到

右结合. 注意连结操作需要显式的and算符, 而不是并列放置.

如果给出标识符, 但没给关键字, 那么暗指最近使用的关键字. 例如,

not host vs and ace

作为

not host vs and host ace

的简写形式, 不应该和

not ( host vs or ace )

混淆.

表达式参数可以作为单个参数传给 tcpdump, 也可以作为复合参数, 后者更

方便一些. 一般说来, 如果表达式包含 Shell 元字符(metacharacter), 传递单

个括起来的参数要容易一些. 复合参数在被解析前用空格联接一起.

示例 (EXAMPLES)

显示所有进出sundown的报文:

tcpdump host sundown

显示helios和主机hot, ace之间的报文传送:

tcpdump host helios and \( hot or ace \)

显示ace和除了helios以外的所有主机的 IP报文:

tcpdump ip host ace and not helios

显示本地的主机和 Berkeley的主机之间的网络数据:

tcpdump net ucb-ether

显示所有通过网关snup的 ftp 报文 (注意这个表达式被单引号括起, 防止

shell 解释园括弧):

tcpdump 'gateway snup and (port ftp or ftp-data)'

显示既不是来自本地主机, 也不是传往本地主机的网络数据 (如果你把网关通往某个其他网络, 这个做法将不会把数据发往你的本地网络).

tcpdump ip and not net localnet

显示每个 TCP会话的起始和结束报文 (SYN 和 FIN 报文), 而且会话方中有一个远程主机.

tcpdump 'tcp[13] & 3 != 0 and not src and dst net localnet'

显示经过网关snup中大于 576 字节的 IP 数据报:

tcpdump 'gateway snup and ip[2:2] > 576'

显示 IP 广播或多目传送的数据报, 这些报文不是通过以太网的广播或多目传送形式传送的:

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

显示所有不是回响请求/应答的 ICMP 报文 (也就是说, 不是 ping 报文):

tcpdump 'icmp[0] != 8 and icmp[0] != 0"

输出格式 (OUTPUT FORMAT)

tcpdump的输出格式取决于协议. 下面的描述给出大多数格式的简要说明和范例.

链路层报头 (Link Level Headers)

如果给出 '-e' 选项就显示链路层报头. 在以太网上, 显示报文的源目地址, 协议和报文长度.

在 FDDI 网络上, '-e' 选项导致tcpdump显示出 `帧控制(frame control)' 域, 源目地址和报文长度. (`帧控制' 域负责解释其余的报文. 普通报文 (比如说载有 IP数据报) 是 `异步' 报文, 优先级介于 0 到 7; 例如, `async4'. 这些被认为载有 802.2 逻辑链路控制(LLC) 报文; 如果它们不是 ISO 数据报或者所谓的 SNAP 报文, 就显示出 LLC 报头.

(注意: 以下描述中假设你熟悉 RFC-1144 中说明的 SLIP 压缩算法.)

在 SLIP 链路上, tcpdump显示出方向指示 (``I'' 指 inbound, ``O'' 指 outbound), 报文类型和压缩信息. 首先显示的是报文类型. 有三种类型ip, utcp和ctcp. 对于ip报文不再显示更多的链路信息. 对于 TCP 报文, 在类型后面显示连接标识.

如果报文是压缩过的, 就显示出编码的报头. 特殊情形以 *S+n和 *SA+n的形式

显示, 这里的n是顺序号 (或顺序号及其确认) 发生的改变总和. 如果不是特殊情形, 就显示 0 或多少个改变. 改变由 U (urgent pointer), W (window), A (ack), S (sequence number) 和 I (packet ID) 指明, 后跟一个变化量(+n or -n), 或另一个值(=n). 最后显示报文中的数据总和, 以及压缩报头的长度.

例如, 下面一行显示了一个传出的压缩的 TCP 报文, 有一个隐含的连接标识; 确认(ack)的变化量是 6, 顺序号是 49, 报文ID 是 6; 有三个字节的数据和六个字节的

压缩报头:

O ctcp * A+6 S+49 I+6 3 (6)

ARP/RARP 报文

Arp/rarp 报文的输出显示请求类型及其参数. 输出格式倾向于能够自我解释.

这里是一个简单的例子, 来自主机rtsg到主机csam的 'rlogin' 开始部分:

arp who-has csam tell rtsg

arp reply csam is-at CSAM

第一行说明 rtsg 发出一个 arp 报文询问 internet 主机 csam 的以太网地址. Csam 用它的以太地址作应答 (这个例子中, 以太地址是大写的, internet 地址为小写).

如果用 tcpdump -n 看上去要清楚一些:

arp who-has 128.3.254.6 tell 128.3.254.68

arp reply 128.3.254.6 is-at 02:07:01:00:01:c4

如果用 tcpdump -e, 可以看到实际上第一个报文是广播, 第二个报文是点到点的:

RTSG Broadcast 0806 64: arp who-has csam tell rtsg

CSAM RTSG 0806 64: arp reply csam is-at CSAM

这里第一个报文指出以太网源地址是 RTSG, 目的地址是以太网广播地址, 类型域

为 16进制数 0806 (类型 ETHER_ARP), 报文全长 64 字节.

TCP 报文

(注意: 以下的描述中假设你熟悉 RFC-793 中说明的 TCP 协议, 如果你不了解这个协议, 无论是本文还是 tcpdump 都对你用处不大)

一般说来 tcp 协议的输出格式是:

src > dst: flags data-seqno ack window urgent options

Src和dst是源目IP地址和端口. Flags是 S (SYN), F (FIN), P (PUSH) 或 R (RST) 或单独的 `.'(无标志), 或者是它们的组合. Data-seqno说明了本报文中的数据在流序号中的位置 (见下例). Ack是在这条连接上信源机希望下一个接收的字节的流序号 (sequence number). Window是在这条连接上信源机接收缓冲区的字节大小. Urg 表明报文内是 `紧急(urgent)' 数据. Options是 tcp 可选报头, 用尖括号括起 (例如, ).

Src, dst和flags肯定存在. 其他域依据报文的 tcp 报头内容, 只输出有必要的部分.

下面是从主机rtsg rlogin 到主机csam的开始部分.

rtsg.1023 > csam.login: S 768512:768512(0) win 4096

csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096

rtsg.1023 > csam.login: . ack 1 win 4096

rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096

csam.login > rtsg.1023: . ack 2 win 4096

rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096

csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077

csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1

csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1

第一行是说从 rtsg 的 tcp 端口 1023 向 csam 的login端口发送报文. S 标志表明设置了SYN标志. 报文的流序号是 768512, 没有数据. (这个写成

`first:last(nbytes)', 意思是 `从流序号first到last, 不包括last, 有nbytes

字节的用户数据'.) 此时没有捎带确认(piggy-backed ack), 有效的接收窗口是 4096 字节, 有一个最大段大小(max-segment-size) 的选项, 请求设置 mss 为 1024 字节.

Csam 用类似的形式应答, 只是增加了一个对 rtsg SYN 的捎带确认. 然后 Rtsg 确认 csam 的 SYN. `.' 意味着没有设置标志. 这个报文不包含数据, 因此也就没有数据的流序号. 注意这个确认流序号是一个小整数(1). 当 tcpdump 第一次发现一个tcp 会话时, 它显示报文携带的流序号. 在随后收到的报文里, 它显示当前报文

和最初那个报文的流序号之差. 这意味着从第一个报文开始, 以后的流序号可以理解成数据流中的相对位移 as relative byte positions in the conversation's data stream (with the first data byte each direction being `1'). `-S' 选项能够改变这个特性, 直接显示原始的流序号.

在第六行, rtsg 传给 csam 19 个字节的数据 (字节 2 到 20). 报文中设置了 PUSH 标志. 第七行 csam 表明它收到了 rtsg 的数据, 字节序号是 21, 但不包括第21个

字节. 显然大多数数据在 socket 的缓冲区内, 因为 csam 的接收窗口收到的数据小于 19 个字节. 同时 csam 向 rtsg 发送了一个字节的数据. 第八和第九行显示csam 发送了两个字节的紧急数据到 rtsg.

如果捕捉区设置的过小, 以至于 tcpdump 不能捕捉到完整的 TCP 报头, tcpdump 会尽可能的翻译已捕获的部分, 然后显示 ``[|tcp]'', 表明无法翻译其余部分. 如果报头包含一个伪造的选项 (one with a length that's either too small or beyond the end of the header), tcpdump 显示 ``[bad opt]'' 并且不再翻译其他选项部分(因为它不可能判断出从哪儿开始). 如果报头长度表明存在选项, 但是 IP 数据

报长度不够, 不可能真的保存选项, tcpdump 就显示 ``[bad hdr length]''.

UDP 报文

UDP 格式就象这个 rwho 报文显示的:

actinide.who > broadcast.who: udp 84

就是说把一个 udp 数据报从主机actinide的who端口发送到broadcast, Internet 广播地址的who端口. 报文包含 84字节的用户数据.

某些 UDP 服务能够识别出来(从源目端口号上), 因而显示出更高层的协议信息.

特别是域名服务请求(RFC-1034/1035) 和 NFS 的 RPC 调用(RFC-1050).

UDP 域名服务请求 (Name Server Requests)

(注意: 以下的描述中假设你熟悉 RFC-1035 说明的域名服务协议. 如果你不熟悉这个协议, 下面的内容就象是天书.)

域名服务请求的格式是

src > dst: id op? flags qtype qclass name (len)

h2opolo.1538 > helios.domain: 3+ A? https://www.doczj.com/doc/027220633.html,. (37)

主机h2opolo访问helios上的域名服务, 询问和https://www.doczj.com/doc/027220633.html,.关联的地址

记录(qtype=A). 查询号是 `3'. `+' 表明设置了递归请求标志. 查询长度是 37 字节, 不包括 UDP 和 IP 头. 查询操作是普通的Query操作, 因此 op 域可以忽略. 如果

op 设置成其他什么东西, 它应该显示在 `3' 和 `+' 之间. 类似的, qclass 是普通的

C_IN类型, 也被忽略了. 其他类型的 qclass 应该在 `A' 后面显示.

Tcpdump 会检查一些不规则情况, 相应的结果作为补充域放在方括号内: 如果某

个查询包含回答, 名字服务或管理机构部分, 就把ancount, nscount, 或arcount

显示成 `[n a]', `[n n]' 或 `[n au]', 这里的n代表相应的数量. 如果在第二和第三

字节中, 任何一个回答位(AA, RA 或 rcode) 或任何一个 `必须为零' 的位被置位,

就显示 `[b2&3=x]', 这里的x是报头第二和第三字节的 16进制数.

UDP 名字服务回答

名字服务回答的格式是

src > dst: id op rcode flags a/n/au type class data (len)

helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)

helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)

第一个例子里, helios回答了h2opolo发出的标识为3 的询问, 一共是 3 个回答记录, 3 个名字服务记录和 7 个管理结构记录. 第一个回答纪录的类型是 A (地址), 数据

是 internet 地址 128.32.137.3. 回答的全长为 273 字节, 不包括 UDP 和 IP 报头.

作为 A 记录的 class(C_IN) 可以忽略 op (询问) 和 rcode (NoError).

在第二个例子里, helios对标识为2 的询问作出域名不存在 (NXDomain) 的回答, 没有回答记录, 一个名字服务记录, 而且没有管理结构.

`*' 表明设置了权威回答(authoritative answer). 由于没有回答记录, 这里就不

显示 type, class 和 data.

其他标志字符可以显示为 `-' (没有设置递归有效(RA)) 和 `|' (设置消息截短(TC)). 如果 `问题' 部分没有有效的内容, 就显示 `[n q]'.

注意名字服务的询问和回答一般说来比较大, 68 字节的snaplen可能无法捕捉到足够的报文内容. 如果你的确在研究名字服务的情况, 可以使用 -s 选项增大捕

捉缓冲区. `-s 128' 应该效果不错了.

NFS 请求和响应

Sun NFS (网络文件系统) 的请求和响应显示格式是:

src.xid > dst.nfs: len op args

src.nfs > dst.xid: reply stat len op results

sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165

wrl.nfs > sushi.6709: reply ok 40 readlink "../var"

sushi.201b > wrl.nfs:

144 lookup fh 9,74/4096.6878 "xcolors"

wrl.nfs > sushi.201b:

reply ok 128 lookup fh 9,74/4134.3150

在第一行, 主机sushi向wrl发送号码为6709的交易会话 (注意源主机后面的数字是交易号, 不是端口). 这项请求长 112 字节, 不包括 UDP 和 IP 报头. 在文件句柄 (fh) 21,24/10.731657119 上执行readlink (读取符号连接) 操作. (如果运气不错, 就象这种情况, 文件句柄可以依次翻译成主次设备号, i 节点号, 和事件号(generation number). ) Wrl回答 `ok' 和连接的内容.

在第三行, sushi请求wrl在目录文件 9,74/4096.6878 中查找 `xcolors'. 注意数据的打印格式取决于操作类型. 格式应该是可以自我说明的.

给出 -v (verbose) 选项可以显示附加信息. 例如:

sushi.1372a > wrl.nfs:

148 read fh 21,11/12.195 8192 bytes @ 24576

wrl.nfs > sushi.1372a:

reply ok 1472 read REG 100664 ids 417/0 sz 29388

(-v 同时使它显示 IP 报头的 TTL, ID, 和分片域, 在这个例子里把它们省略了.) 在第一行, sushi请求wrl从文件 21,11/12.195 的偏移位置 24576 开始, 读取 8192 字节. Wrl回答 `ok'; 第二行显示的报文是应答的第一个分片, 因此只有 1472 字节(其余数据在后续的分片中传过来, 但由于这些分片里没有 NFS 甚至 UDP 报头, 因此根据所使用的过滤器表达式, 有可能不显示). -v 选项还会显示一些文件属性(它们作为文件数据的附带部分传回来): 文件类型 (普通文件 ``REG''), 存取模式(八进制数), uid 和 gid, 以及文件大小.

如果再给一个 -v 选项 (-vv), 还能显示更多的细节.

注意 NFS 请求的数据量非常大, 除非增加snaplen, 否则很多细节无法显示. 试一试 `-s 192' 选项.

NFS 应答报文没有明确标明 RPC 操作. 因此tcpdump保留有 ``近来的'' 请求记录, 根据交易号匹配应答报文. 如果应答报文没有相应的请求报文, 它就无法分析. KIP Appletalk (UDP 上的 DDP)

Appletalk DDP 报文封装在 UDP 数据报中, 解包后按 DDP 报文转储 (也就是说, 忽略所有的 UDP 报头信息). 文件/etc/https://www.doczj.com/doc/027220633.html,s用来把 appletalk 网络和节点号翻

译成名字. 这个文件的行格式是

number name

1.254 ether

16.1 icsd-net

1.254.110 ace

前两行给出了 appletalk 的网络名称. 第三行给出某个主机的名字 (主机和网络

依据第三组数字区分 - 网络号一定是两组数字, 主机号一定是三组数字.) 号

码和名字用空白符(空格或tab) 隔开. /etc/https://www.doczj.com/doc/027220633.html,s文件可以包含空行或注释行(以`#'开始的行).

Appletalk 地址按这个格式显示

net.host.port

144.1.209.2 > icsd-net.112.220

office.2 > icsd-net.112.220

jssmag.149.235 > icsd-net.2

(如果不存在/etc/https://www.doczj.com/doc/027220633.html,s ,或者里面缺少有效项目, 就以数字形式显示地址.) 第一个例子里, 网络 144.1 的 209 节点的 NBP (DDP 端口 2) 向网络 icsd 的 112 节点的 220 端口发送数据. 第二行和上面一样, 只是知道了源节点的全称

(`office'). 第三行是从网络 jssmag 的 149 节点的 235 端口向 icsd-net 的 NBP 端口广播 (注意广播地址 (255) 隐含在无主机号的网络名字中 - 所以在

/etc/https://www.doczj.com/doc/027220633.html,s 中区分节点名和网络名是个好主意).

Tcpdump 可以翻译 NBP (名字联结协议) 和 ATP (Appletalk 交互协议) 的报文内容. 其他协议只转储协议名称 (或号码, 如果还没给这个协议注册名称) 和报文大小.

NBP 报文的输出格式就象下面的例子:

icsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"

jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250 techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186

第一行是网络 icsd 的 112 主机在网络 jssmag 上的广播, 对名字 laserwriter

做名字查询请求. 名字查询请求的 nbp 标识号是 190. 第二行显示的是对这个请求的回答 (注意它们有同样的标识号), 主机 jssmag.209 表示在它的 250 端口注册了一个 laserwriter 的资源, 名字是 "RM1140". 第三行是这个请求的其他回答,

主机 techpit 的 186 端口有 laserwriter 注册的 "techpit".

ATP 报文格式如下例所示:

jssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001

helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000

jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001

helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000

helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000

jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001

jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002

Jssmag.209 向主机 helios 发起 12266 号交易, 请求 8 个报文(`<0-7>'). 行尾的

十六进制数是请求中 `userdata' 域的值.

Helios 用 8 个 512字节的报文应答. 跟在交易号后面的 `:digit' 给出了交易过程中报文的序列号, 括弧内的数字是报文的数据量, 不包括 atp 报头. 报文 7 的`*' 表明设置了 EOM 位.

然后 Jssmag.209 请求重传第 3 & 5 报文. Helios 做了重传后 jssmag.209 结束这次交易. 最后, jssmag.209 发起下一次交易请求. 请求中的 `*' 表明没有设置 XO (只有一次) 位.

IP 分片

分片的 Internet 数据报显示为

(frag id:size@offset+)

(frag id:size@offset)

(第一种形式表明还有更多的分片. 第二种形式表明这是最后一片.)

Id是分片标识号. Size是分片大小 (字节), 不包括 IP 报头. Offset是该分片在原数据报中的偏移 (单位是字节).

每一个分片的信息都可以打印出来. 第一个分片包含了高层协议报头, 显示协议信息后显示分片的信息. 第一个分片以后的分片不再含有高层协议报头, 所以在源目地址后面只显示分片信息. 例如, 下面是从 https://www.doczj.com/doc/027220633.html, 到

lbl-rtsg.arpa 的一部分 ftp 传输, 途经的 CSNET 看上去处理不了 576 字节的数据报:

arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+) arizona > rtsg: (frag 595a:204@328)

rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560

这里有几点需要注意: 首先, 第二行的地址不包括端口号. 这是因为 TCP 协议信息全部装到了第一个分片内, 所以显示后续分片的时候不可能知道端口或流序号. 其次, 第一行的 tcp 流序号部分看上去有 308 字节的用户数据, 实际上是 512 字节(第一个分片的 308 和第二个分片的 204 字节). 如果你正在寻找流序号中的空洞, 或者试图匹配报文的确认(ack), 那你上当了.

如果报文的 IP 标有不要分片标志, 显示时在尾部加上 (DF).

时戳

缺省情况下, 所有输出行的前面都有时戳. 时戳就是当前时间, 显示格式为

hh:mm:ss.frac

精度和内核时钟一样. 时戳反映了内核收到报文的时间. 从以太接口收到报文到内核响应 '报文就绪' 中断有一个滞后, 该滞后不被考虑.

pcap使用手册

让我们从看看这篇文章写给谁开始。显而易见的,需要一些C语言基础知识,除非你只想了解基本的理论。你不必是一个编码专家,因为这个领域只有经验丰富的程序员涉足,而我将尽可能详细的描述这些概念。另外,考虑到这是有关一个包嗅探器的,所以对网络基础知识的理解是有帮助的。所有在此出现的代码示例都已在FreeBSD 4.3平台上测试通过。 开始:pcap应用程序的格式 我们所要理解的第一件事情是一个基于pcap的嗅探器程序的总体布局。流程如下: 1.我们从决定用哪一个接口进行嗅探开始。在Linux中,这可能是eth0,而在BSD系统中则可能是xl1等等。我们也可以用一个字符串来定义这个设备,或者采用pcap提供的接口名来工作。 2.初始化pcap。在这里我们要告诉pcap对什么设备进行嗅探。假如愿意的话,我们还可以嗅探多个设备。怎样区分它们呢?使用文件句柄。就像打开一个文件进行读写一样,必须命名我们的嗅探“会话”,以此使它们各自区别开来。 3.如果我们只想嗅探特定的传输(如TCP/IP包,发往端口23的包等等),我们必须创建一个规则集合,编译并且使用它。这个过程分为三个相互紧密关联的阶段。规则集合被置于一个字符串内,并且被转换成能被pcap读的格式(因此编译它)。编译实际上就是在我们的程序里调用一个不被外部程序使用的函数。接下来我们要告诉pcap使用它来过滤出我们想要的那一个会话。 4.最后,我们告诉pcap进入它的主体执行循环。在这个阶段内pcap一直工作到它接收了所有我们想要的包为止。每当它收到一个包就调用另一个已经定义好的函数,这个函数可以做我们想要的任何工作,它可以剖析所部获的包并给用户打印出结果,它可以将结果保存为一个文件,或者什么也不作。 5.在嗅探到所需的数据后,我们要关闭会话并结束。 这是实际上一个很简单的过程。一共五个步骤,其中一个(第3个)是可选的。我们为什么不看一看是怎样实现每一个步骤呢? 设置设备 这是很简单的。有两种方法设置想要嗅探的设备。 第一种,我们可以简单的让用户告诉我们。考察下面的程序: #include #include int main(int argc, char *argv[]) { char *dev = argv[1]; printf("Device: %s", dev); return(0); }

TCPDUMP中文手册最详细的手册

tcpdump的使用 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -a d e f l n N O p q S t v x] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ] 描述(DESCRIPTION) Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头. 对于SunOS的nit或bpf界面:要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限. 对于Solaris的dlpi:你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限. 对于HP-UX的dlpi:你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:你必须是root,或者把它安装成root的设置uid程序.对于Linux:你必须是root,或者把它安装成root的设置uid程序. 对于Ultrix和DigitalUNIX:一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump. 对于BSD:你必须有/dev/bpf*的读访问权限. 1. tcpdump的选项介绍

2. tcpdump的表达式介绍 表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。 在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。 第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。 其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。 除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast, less, greater ,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算是'or' ,'||'; 这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。 (1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包: #tcpdump host 210.27.48.1 (2)想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(。在命 令行中使用括号时,一定要 #tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) (3)如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令: #tcpdump ip host 210.27.48.1 and ! 210.27.48.2 (4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令: #tcpdump tcp port 23 host 210.27.48.1 3. tcpdump 的输出结果介绍 下面我们介绍几种典型的tcpdump命令的输出信息 (1)数据链路层头信息 #tcpdump -e host ice ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A

snort中文手册

<< Back to https://www.doczj.com/doc/027220633.html, Snort 中文手册 摘要 snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。(2003-12-11 16:39:12) Snort 用户手册 第一章 snort简介 snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。 嗅探器 所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的 控制台上。首先,我们从最基本的用法入手。如果你只要把TCP/IP包头信息打印在屏幕上,只需要输入下面的命令: ./snort -v 使用这个命令将使snort只输出IP和TCP/UDP/ICMP的包头信息。如

./snort -vd 这条命令使snort在输出包头信息的同时显示包的数据信息。如果你还要显示数据链路层的信息,就使用下面的命令: ./snort -vde 注意这些选项开关还可以分开写或者任意结合在一块。例如:下面的命令就和上面最后的一条命令等价: ./snort -d -v –e 数据包记录器 如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort 就会自动记录数据包: ./snort -dev -l ./log 当然,./log目录必须存在,否则snort就会报告错误信息并退出。当snort在这种模式下运行,它会记录所有看到的包将其放到一个目录中,这个目录以数据包目的主机的IP地址命名,例如:192.168.10.1 如果你只指定了-l命令开关,而没有设置目录名,snort有时会使用远程主机的IP地址作为目录,有时会使用本地主机IP地址作为目录名。为了只对本地网络进行日志,你需要给出本地网络: ./snort -dev -l ./log -h 192.168.1.0/24 这个命令告诉snort把进入C类网络192.168.1的所有包的数据链路、TCP/IP以及应用层的数据记录到目录./log中。 如果你的网络速度很快,或者你想使日志更加紧凑以便以后的分析,那么应该使用二进制的日志文件格式。所谓的二进制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包记录到一个单一的二进制文件中:

Greenplum安装部署参考手册

Greenplum安装部署参考手册 V1.0 2016年3月

目录 第一章硬件环境部署 (2) 1.1 服务器与机柜 (2) 1.2 网络部署 (2) 1.2.1服务器网络连接 (2) 1.2.2网卡绑定(bond)推荐模式 (3) 1.3 raid及文件系统规划 (3) 1.3.1 Master服务器配置 (3) 1.3.2 Segment服务器配置 (4) 第二章 GP软件环境部署 (5) 2.1 操作系统环境安装部署 (5) 2.2.1 BIOS设置开启超线程 (5) 2.2.2 安装操作系统基础包 (5) 2.2.3 安装系统语言 (5) 2.2.4 安装系统工具包 (6) 2.2.5 开发语言连接驱动 (8) 2.2.6 时区配置 (8) 2.2.7 文件系统和分区配置 (9) 2.2.8 网卡配置 (10) 2.2.9 操作系统安全配置 (11) 2.2.10 操作系统用户组和用户 (13) 2.2.11 网络IP配置 (14) 2.2.12 对外服务VIP设置 (15) 2.2.13 集群NTP服务时钟同步配置 (15) 2.2.14 ssh服务参数调整 (15) 2.2 操作系统参数设置 (15) 2.3 数据库系统安装部署 (18) Greenplum软件安装 (18) 数据库初始化 (21) 2.4 数据库参数设置 (23) 2.5 基准性能测试 (24) 2.6 后续工作 (24)

第一章硬件环境部署 1.1服务器与机柜 服务器器与机柜的摆放应需要充分考虑机器散热的问题,不建议每个机柜都完全放满。 1.2网络部署 1.2.1服务器网络连接 Greenplum集群内部各节点服务器通过独立的万兆以太网交换机连接,交换机为集群内部私有,配置两台,两台交换机直连,以双活方式工作。 每台集群内部服务器需配置两个万兆网口,每个网口连接一个交换机,同时两个万兆网口以mode4 方式邦定,配置一个IP。 如下图所示,每台服务器的第一张网卡都连接到一台交换机上,同理另一张网卡都连接到另一台交换机上。 每台服务器的第一张网卡 统一连接到一台交换机上 两台交换机之间也需要互联,双活方式工作。示意图如下:

NS3中文教程

一、简介 1. 什么是NS-3? NS是一个离散事件驱动网络模拟器。官方定义:(from https://www.doczj.com/doc/027220633.html,/) ns-3 is a discrete-event network simulator for Internet system s, targeted primarily for research and educational use. ns-3 is free software, licensed under the GNU GPLv2 license, and is publicly available for research, development, and use. ns-3 is intended as an eventual replacem ent for the popular ns-2 simulator. The project acronym “nsnam” derives historically from the concatenation of ns (network simulator) and nam (network animator). 2. NS-3 vs NS-2 NS-3虽然冠以一个“3”,但事实上跟它广泛流行的前任NS-2并非一脉相承,或者从使用角度上说,仅仅继承了一个名称而已。NS-3基本上是一个新的模拟器,不支持NS-2的API。NS-3是完全用C++编写的(也有可选的Python接口),而NS-2一部分模块使用C++而另一部分使用OTcl。因而NS-3最大的特点就是脚本可以C++或Python语言,而在NS-2中,我们使用的是OTcl。 NS-3的功能仍旧在开发中,因此它远没有NS-2完善(当然NS-2的维护也在进行中)。NS-3并不包含目前所有NS-2的功能,但它具有某些新的特性:正确的多网卡处理、IP寻址策略的使用、更详细的802.11模块等等。 Latest stable release: ns-3.2.1 (November 20, 2008) 4. NS-3的一些名词解释 POSIX:Portable Operating System Interface 一组操作系统API的协议/标准族,最开始为了Unix系统上的可移植性而开发的,也适用于其他操作系统。 Doxygen:Docum entation Generator 支持C++、C、Java、Objective-C、Python、IDL、Fortran、VHDL、PHP、C#等各种语言的文档生成器,用于从源代码中生成说明文档。(类似于我之前使用过的Sandcastle,貌似更加强大些,有必要得学习一下。)

wireshark—报文分析工具培训

报文分析工具培训 一、wireshark介绍(功能、基本使用方法、帮助) wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。 1. wireshark功能: ?支持UNIX和Windows平台 ?在接口实时捕捉包 ?能详细显示包的详细协议信息 ?可以打开/保存捕捉的包 ?可以导入导出其他捕捉程序支持的包数据格式 ?可以通过多种方式过滤包 ?多种方式查找包 ?通过过滤以多种色彩显示包 ?创建多种统计分析 ?… 2. wireshark基本使用方法: (1)、双击“桌面图标”或执行文件“wireshark.exe” (2)、进入wireshark主界面后,点击左上角图标

(3)、在弹出的“抓包网卡选项”中,选择自己机器的物理网卡,并点击“Start”,开始抓包录制工作。(此处,我抓包使用的物理网卡为:192.168.100.61) 此时,软件抓包显示区域内数据不断变化

(4)、点击wireshark停止键,结束抓包过程 (5)、点击wireshark软件左上角“File”后,选择“Save”选项,在弹出的对话框中,输入存档文件名后,点击“保存”,完成数据包存储工作。 3. wireshark帮助 选择主菜单中的“Help”项,出现帮助菜单。

帮助菜单包含以下几项: Contents:打开一个基本的帮助系统。 Manual Pages:使用手册(HTML网页) Supported Protocols:Wireshark支持的协议清单 About Wireshark:弹出信息窗口显示Wireshark的一些相关信息,如插件,目录等二、wireshark抓取报文高级使用 在开始抓包前,点击“Filter”

(参考)tcpreplay使用手册

tcpreplay使用手册 2013年4月27日星期六 陈海敏简介 Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite和tcpprep 等工具,这也是Tcpreplay的第一个字母大写的原因。它用来在Unix系统或类Unix系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据包。正因为Tcpreplay有重放数据包的功能,所以它常被用来模拟IDS攻击等测试环境,被广泛地用来测试防火墙和IDS工具的安全性。 一、tcpreplay使用方法 1 基本用法 将抓取到的pcap包通过eth0网口进行回放,当存在多网卡时,可以选择通过哪个口进行发送,一般一台机子只有一个网卡eth0 # tcpreplay --intf1=eth0 sample.pcap 或者缩写 #tcpreplay -i eth0 sample.pcap 关于缩写,一般都是全称的首字母,不再给出特别说明,自己可以通过tcpreplay –h 命令进行查看,附录部分也给出了部分常用的,可以参考。 2 以不同的速度回放 1)以尽可能大的速度回放

#tcpreplay --topspeed --intf1=eth0 sample.pcap 2)以10Mbps速率回放 # tcpreplay --mbps=10.0 --intf1=eth0 sample.pcap 3)以原速度的7.3倍速率回放 #tcpreplay --multiplier=7.3 --intf1=eth0 sample.pcap 4)以原速度的0.5倍速率回放 #tcpreplay --multiplier=0.5 --intf1=eth0 sample.pcap 5)以每秒回放25个包的速率回放 #tcpreplay --pps=25 --intf1=eth0 sample.pcap 6)以一次一个包的速率发送数据包(debug时很有用) #tcpreplay --oneatatime --verbose --intf1=eth0 sample.pcap 3 循环播放数据包 1)重放10次 #tcpreplay --loop=10 --intf1=eth0 sample.pcap 2)无限循环重放,直到Ctrl+C结束 #tcpreplay --loop=0 --intf1=eth0 sample.pcap 4 两个网口之间重放数据包 1)可以利用tcpprep将数据包通信双方区分为客户端和服务器端,这样在eth0和eth1之间通信就相当于是客户端和服务器。 # tcpreplay --cachefile=sample.prep --intf1=eth0 --intf2=eth1 sample.pcap

运维管理系统需求说明书

1概述 1.1开发背景和意义 随着公司规模的迅速扩大,现行的纯纸质化办公,效率低下、资料保存和查询非常困难、成本高、不利于多人协同办公,成为日常办公的严重制约。尤其是需要审批的事项,如果遇到审批人出差或不在公司,往往需要等待,协调的成本很高,工作决策不能及时进行,大大降低了工作效率。开发审批系统,使得申请人和审批人不受地域和时间限制,审批流程自动流转,相关人可以快键协调。 1.2开发目标 系统在需求设计时要充分考虑了用户的使用习惯、模块间的相互独立性,减少系统间的相互依赖,使其能单独运行,便于开发和维护,也有利于以后的扩充,做到与其他业务系统的高内聚、松耦合。 特别强调系统的用户体验,以及与实际审批业务的贴合性,真正方便用户的申请和审批业务快键开展。 1.3主要内容 系统主要内容包括: (1) 考勤管理:员工的加班、调休、请假、市内外出、出差等的申请、审批、查询和统计。 (2)转正申请:员工完成试用期,进入转正审批环节,完成该环节后,成为正式员工。 (3)物资申请:办公用物资的申请和审批。 1.4用户对象 包括总公司、山西、广西、河南、湖北等办事处、分公司全部员工。

1.5业务数据时间要求 针对用户对数据的要求,业务数据做永久性保存,部分业务数据可转入查询库中作为历史数据供查询使用。 2功能需求 2.1功能框架 2.1.1总体框架 操作系统运行监控: 虚拟机可用性 cpu负载 内存使用 IO情况 空间使用情况 OS日志 进程情况 计划任务情况 时钟偏差 端口使用情况 路由表 一页查看 多操作系统执行命令: 中间件运行监控: 取jmx的一些指标。 数据库运行监控: 主目录 集群状态 实例状态 监听器状态 表空间预警 归档情况 rman备份情况 不良sql 未使用的索引 大表数据量 alert文件报错

linux tcpdump

Linux 网络数据采集分析工具Tcpdump Tcpdump简介: 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer工具来分析原因,找出造成网络阻塞的来源。对于网络程序员来说,通过sniffer工具来调试程序。 用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!Sniffer工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。 Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。所以,今天我们就来看看Linux中强大的网络数据采集分析工具——TcpDump。 用简单的话来定义tcpdump,就是:dump the traffice on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东东之一。 顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限

干扰检测中英文对照外文翻译文献

(文档含英文原文和中文翻译) 中英文对照外文翻译 利用粗糙集分类的干扰检测 简介

干扰检测是用于分类正常与异常的活动,在机器学习方面可以发挥重要的作用。最近,基于机器学习的干扰检测方法(Allen等,2000)受到了广泛的研究,因为他们可以检测出的误用和异常。学习的干扰检测方法包括两个关键步骤:功能前牵引和检测模型生成。Wenke(1999)利用改进的Apriori算法在干扰检测特征提取的研究,获得网络连接级别的功能。此方法是非常有效的。后来,SRINIVAS和Sung(2002)提出了利用支持向量机(SVM)排列这些提取出的特征,但这种方法需要多次迭代,是非常耗时的。在检测模型生成的研究,这是可取的,检测模型可以被解释的,并具有高的检出率,但现有方法无法实现这两个目标。例如,神经网络(James,1998年)可以达到较高的检测率,但生成的检测规则是不能解释的;决策树(Wenke,1999年)可能会产生解释的规则,但检出率较低。 在本文中,我们目前使用干扰检测系统(IDS)功能的排名和干扰检测规则生成的粗糙集分类(RSC)(帕夫拉克,1982)。干扰检测RSC可以得到解释的检测规则和高检出率的一些攻击和IDS是简单而快速的使用RSC功能的排名。 RSC是粗糙集理论(王陶,2003)的重要内容之一。粗糙集学习理论的主要贡献是约简的概念。具有相同属性的对象分类能力的一整套属性约简是一个很小的子集。在本文中,我们提出了一个快速混合遗传算法的粗糙集的约简计算。事实上,简粗糙集计算的对应功能的IDS在RSC 排名。与经典的基于支持向量机的功能排名的方法(SRINIVAS,SUNG,2002年)相比,此功能的排序方法是简单和快速。

tcpdump中文手册

TCPDUMP中文手册 名称(NAME) tcpdump-转储网络上的数据流 总览(SYNOPSIS) tcpdump[-adeflnNOpqStvx][-ccount][-Ffile] [-iinterface][-rfile][-ssnaplen] [-Ttype][-wfile][expression] 描述(DESCRIPTION) Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头. 对于SunOS的nit或bpf界面:要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限. 对于Solaris的dlpi:你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限. 对于HP-UX的dlpi:你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:你必须是root,或者把它安装成root的设置uid程序.对于Linux:你必须是root,或者把它安装成root的设置uid程序. 对于Ultrix和DigitalUNIX:一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump. 对于BSD:你必须有/dev/bpf*的读访问权限. 选项(OPTIONS) -a 试着把网络和广播地址转换成名称. -c 当收到count报文后退出. -d 把编译好的报文匹配模板(packet-matchingcode)翻译成可读形式,传往标准输出,然后退出. -dd 把报文匹配模板(packet-matchingcode)以C程序片断的形式输出. -ddd 把报文匹配模板(packet-matchingcode)以十进制数形式输出(前面加上总数). -e 每行都显示链路层报头. -f 用数字形式显示'外部的'互联网地址,而不是字符形式(这个选项用来绕开脑壳坏光的SUN黄页服务器的问题---一般说来它翻译外部网络数字地址的时候会长期挂起). -F 把file的内容用作过滤表达式.忽略命令行上的表达式. -i 监听interface.如果不指定接口,tcpdump在系统的接口清单中,寻找号码最小,已经配置好的接

Snort中文手册范本

Snort 用户手册 Snail.W 第一章 snort简介 snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。嗅探器所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上。首先,我们从最基本的用法入手。如果你只要把TCP/IP信息打印在屏幕上,只需要输入下面的命令:./snort -v 使用这个命令将使snort只输出IP和TCP/UDP/ICMP的信息。如果你要看到应用层的数据,可以使用:./snort -vd 这条命令使snort在输出信息的同时显示包的数据信息。如果你还要显示数据链路层的信息,就使用下面的命令:./snort -vde 注意这些选项开关还可以分开写或者任意结合在一块。例如:下面的命令就和上面最后的一条命令等价:./snort -d -v –e 数据包记录器如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort就会自动记录数据包:./snort -dev -l ./log 当然,./log目录必须存在,否则snort就会报告错误信息并退出。当snort在这种模式下运行,它会记录所有看到的包将其放到一个目录中,这个目录以数据包目的主机的IP地址命名,例如:192.168.10.1 如果你只指定了-l命令开关,而没有设置目录名,snort有时会使用远程主机的IP地址作为目录,有时会使用本地主机IP地址作为目录名。为了只对本地网络进行日志,你需要给出本地网络:./snort -dev -l ./log -h 192.168.1.0/24 这个命令告诉snort把进入C类网络192.168.1的所有包的数据链路、TCP/IP以及应用层的数据记录到目录./log中。如果你的网络速度很快,或者你想使日志更加紧凑以便以后的分析,那么应该使用二进制的日志文件格式。所谓的二进制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包记录到一个单一的二进制文件中:./snort -l ./log -b 注意此处的命令行和上面的有很大的不同。我们勿需指定本地网络,因为所有的东西都被记录到一个单一的文件。你也不必冗余模式或者使用-d、-e功能选项,因为数据包中的所有容都会被记录到日志文件中。你可以使用任何支持tcpdump二进制格式的嗅探器程序从这个文件中读出数据包,例如:tcpdump或者Ethereal。使用-r功能开关,也能使snort读出包的数据。snort在所有运行模式下都能够处理tcpdump格式的文件。例如:如果你想在嗅探器模式下把一个tcpdump格式的二进制文件中的包打印到屏幕上,可以输入下面的命令:./snort -dv -r packet.log 在日志包和入侵检测模式下,通过BPF(BSD Packet Filter)接口,你可以使用许多方式维护日志文件中的数据。例如,你只想从日志文件中提取ICMP 包,只需要输入下面的命令行:./snort -dvr packet.log icmp 网络入侵检测系统snort最重要的用途还是作为网络入侵检测系统(NIDS),使用下面命令行可以启动这种模式:./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf snort.conf是规则集文件。snort会对每个包和规则集进行匹配,发现这样的包就采取相应的行动。如果你不指定输出目录,snort就输出到/var/log/snort目录。注意:如果你想长期使用snort作为自己的入侵检测系统,最好不要使用-v选项。因为使用这个选项,使snort向屏幕上输出一些信息,会大大降低snort的处理速度,从而在向显示器输出的过程中丢弃一些包。此外,在绝大多数情况下,也没有必要记录数据链路层的,所以-e选项也可以不用:./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf 这是使用snort作为网络入侵检测系统最基本的形式,日志符合规则的包,以ASCII形式保存在有层次的目录结构中。网络入侵检测模式下的输出选项在NIDS模式下,有很多的方式来配置snort的输出。在默认情况下,snort以ASCII格式记录日志,使用full报警机制。如果使用full报警机制,snort会在之后打印报警消息。如果你不需要日志包,可以使用-N选项。 snort有6种报警机制:full、fast、socket、syslog、smb(winpopup)和none。其中有4个可以在命令行

Python面试考题

一,中文单项选择题(30分,每个3分)?1.下列哪个语句在Python中是非法的? A、x = y = z = 1 B、x = (y = z + 1) C、x, y = y, x D、x += y ?2.关于Python内存管理,下列说法错误的是 A、变量不必事先声明 B、变量无须先创建和赋值而直接使用 C、变量无须指定类型 D、可以使用del释放资源 ?3、下面哪个不是Python合法的标识符 A、int32 B、40XL C、self D、name ?4、下列哪种说法是错误的 A、除字典类型外,所有标准对象均可以用于布尔测试 B、空字符串的布尔值是False C、空列表对象的布尔值是False D、值为0的任何数字对象的布尔值是False ?5、下列表达式的值为True的是 A、5+4j > 2-3j B、3>2>2 C、(3,2)< ('a','b') D、’abc’ > ‘xyz’ ?6、Python不支持的数据类型有 A、char B、int C、float D、list ?7、关于Python中的复数,下列说法错误的是 A、表示复数的语法是real + image j B、实部和虚部都是浮点数 C、虚部必须后缀j,且必须是小写 D、方法conjugate返回复数的共轭复数 ?8、关于字符串下列说法错误的是

A、字符应该视为长度为1的字符串 B、字符串以\0标志字符串的结束 C、既可以用单引号,也可以用双引号创建字符串 D、在三引号字符串中可以包含换行回车等特殊字符 ?9、以下不能创建一个字典的语句是 A、dict1 = {} B、dict2 = { 3 : 5 } C、dict3 = {[1,2,3]: “uestc”} D、dict4 = {(1,2,3): “uestc”} ?10、下列Python语句正确的是 A、min = x if x < y = y B、max = x > y ? x : y C、if (x > y) print x D、while True : pass 二,英文单项选择题(30分) ? 1.what gets printed? Assuming python version 2.x() print type(1/2) A. B. C. D. E. ? 2. What gets printed?() nums = set([1,1,2,3,3,3,4]) print len(nums) A.1 B.2 C.4 D.5 E.7 ? 3. What gets printed?() ?counter = 1 ? ?def doLotsOfStuff(): ? ? global counter ? ? for i in (1, 2, 3): ? counter += 1 ? ?doLotsOfStuff() ? ?print counter A.1 B.3 C.4 D.7 E.none of the above ? 4. What gets printed?() print r"\nwoow" A.new line then the string: woow B.the text exactly like this: r"\nwoow" C.the text like exactly like this: \nwoow

linux下wireshark安装和使用

linux下wireshark安装和使用 https://www.doczj.com/doc/027220633.html, 2009-06-26 17:33 涅槃OR尸变https://www.doczj.com/doc/027220633.html, 我要评论(2)?摘要:Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。 ?标签:Wireshark pcap linux ? Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。 与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。Wireshark的优势: - 安装方便。 - 简单易用的界面。 - 提供丰富的功能。 Wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。 系统要求: libpcap库对于Ethereal和Wireshark都非常重要,它们需要使用这个库的功能进行封包捕捉工作。 如果您的系统中没有安装libpcap或者其它必要的组件,当您使用"apt-get"安装Ethereal或Wireshark时,它们都会被自动添加。请参考Wireshark tutorial。 使用如下命令,可以得到Ethereal或Wireshark的详细依赖关系列表。 #apt-cache depends wireshark #apt-cache depends ethereal 这是在我们的系统上得到的结果: # apt-cache depends ethereal ethereal Dépend: libadns1 Dépend: libatk1.0-0 Dépend: libc6 Dépend: libcairo2 Dépend: libcap1 Dépend: libfontconfig1 Dépend: libglib2.0-0 Dépend: libgnutls12 Dépend: libgtk2.0-0 Dépend: libpango1.0-0 Dépend: libpcap0.8 Dépend: libpcre3 Dépend: libx11-6 Dépend: libxcursor1

SecureCRT工具快速入门手册

SecureCRT工具使用说明 一、工具简介: 1.1、Secure CRT是一款支持SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW等协议的终端仿真程序,在我司通用安防产品故障调试过程中,该软件使用最频繁的是SSH2、telnet、serial三种协议。 二、工具获取路径: 2.1、营销资料平台:项目交付/工具下载/软件工具 2.2、自行网上下载:https://www.doczj.com/doc/027220633.html,/softs/45382.html 三、工具使用说明 3.1、SSH2协议使用说明 3.1.1、连接linux配置 打开CRT软件,点击菜单栏中的“快速链接”按钮,弹出以下界面,在“协议”选项下拉框中选择SSH2协议,“主机名”填写需要访问的设备的ip地址,“端口”是SSH2协议定义的22,“防火墙”默认无,“用户名”是登录设备后台的用户名,点击“连接” 跳转到以下界面,“密码”填写登录到后台的密码,后点击“确定”,即可跳转到系统后台界面; 3.1.2、进入linux系统后常用的调试、测试命令 ping---------------测试与其网络通信的设备的网络连通性,如需测试大包的丢包率或稳定性需要加指令-s,例如:ping10.11.9.118–s5000;

ifconfig-------------查询该设备的网络基本信息,网卡ip地址、MAC地址、网卡MTU值等; cd--------------------linux系统中切换目录命令,如cd/mnt/mtd/Config/,意为进入/mnt/mtd/Config/目录。 rm-------------------linux系统中删除文件、文件夹的命令,如rm/mnt/mtd/Config/passwd,意为删除/mnt/mtd/Config/路径下面的passwd文件; mount--------------linux系统中挂载网络NFS设备或设备直插的U盘的命令,一般涉及到解码器底层写录像、NVR挂core查死机、挂载u盘抓包等操作会用到该命令,具体参考相关技术文档; ls---------------------linux系统中罗列当前目录下文件; cat-------------------查看linux系统中文件内容的命令,如cat/usr/data/hardware.lua,意为查看/usr/data/路径下面的hardware.lua文件里面的内容信息; chmod--------------给linux系统文件附加测试需要的权限,如chmod777tcpdump,意为给tcpdump 脚本赋予最高级别的读写权限; top-------------------Linux系统中可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。 ps-------------------查看当前系统进命令,例如ps–ef|grep DMS查看DMS进程以及状态。 ll--------------------查看当前逻辑目录下的文件信息(带权限和文件级别) vi-------------------修改、编辑命令,例如vi CMS.xml修改和编辑CMS.xml文档, 扩展:编辑过程中按下“i”进行修改,按下“Esc退出修改”,输入“:wq”保存当前修改退出,输入“:q!”不保存当前修改退出。 date--------------查看时间命令,举例:可以直接输入date后即可打印当前系统时间,也可以当作修改时间命令来使用,date–s10:15:45将当前时间更改为10时15分45秒,date–s2*******将当前日期更改为2016年11月24日 ethtool ethX-----查看某网卡信息命令,例如ethtool eth0查看服务器1号网卡当前状态,其中主要看Speed(网络接口速率)和Link detected(网络接口连接状态) netstat–lnp------------查看数据连接状态,例如netstat–lnp|grep80查看80端口的连接状态依此可以判断端口是否被占用。 tcpdump-------捕获数据包命令,例如: tcpdump-s0-i eth0-w ABC.pcap–v host192.168.1.10or port9100-----抓取1号网口所有含192.168.1.10IP地址和9100端口号的数据包且保存为ABC.pcap -s:抓取所有大小的包;-i:指定网口号;-w:保存文件名称;-v:实时显示抓包数量;host:指定ip 地址;port:指定端口号。 重启平台命令,例如: reboot全部重启包括硬件与软件(相当于关机重启) init6只重启系统硬件不重启(相当于注销) 3.2、telnet协议使用说明 3.2.1、连接linux配置 打开CRT软件,点击菜单栏中的“快速链接”按钮,弹出以下界面,在“协议”选项下拉框中选择telnet 协议,“主机名”填写需要访问的设备的ip地址,“端口”是telnet协议定义的23,“防火墙”默认,点击“连接”

相关主题
文本预览
相关文档 最新文档