TCPdump抓包及分析方法1 - 图文 联系客服

发布时间 : 星期日 文章TCPdump抓包及分析方法1 - 图文更新完毕开始阅读61726d67ddccda38376baf5d

1 关键字

Tcpdump, 丢包, 抓包

2 Tcpdump抓包的作用

Tcpdump是linux系统自带的抓包工具,功能: >抓进出Linux服务器的IP包

>抓下的IP包,可由WireShark等工具,解码为UDP和RTP包。 >抓下的IP包,可由WireShark等工具分析丢包情况

3 Tcpdump常用方法

Tcpdump是linux系统自带的抓包工具, 需要root权限才能运行。

3.1 指定网卡 tcpdump -i eth2 //抓网卡eth2上所有进出的数据包,如果没有数据包,则通常会抓到广播包

3.2 指定保存抓包结果的文件 tcpdump -i eth2 –w mstu2ether2.cap 3.3 抓完整的RTP包 tcpdump -i eth2 –w mstu2ether2.cap –s 0 “-s 0”指定抓的是完整的数据包,否则以64字节截断。对于MSTU上的RTP抓包,这个参数会保留所有TS数据包,故重要。

3.4 指定入向端口

设入向端口为11866,转换为十六进制,即是0x2e5a,所以:

tcpdump -i eth2 ether[36]=0x2e and ether[37]=0x5a -w mstu2eth2_2e5a_head.cap 其中, ether[36]和ether[37]为接收端口的16进制表示。

3.5 指定出向端口

设出向端口为11866,转换为十六进制,即是0x2e5a,所以: tcpdump -i eth2 ether[34]=0x2e and ether[35]=0x5a -w mstu2eth2_2e5a_head.cap 其中, Ether[34]和ether[35]为发送端口的16进制表示。

3.6 长时间抓包

在抓包命令后加“-C 100”,它会满100M后写到下一个新的文件。直到磁盘满。

3.7 后台执行

在抓包命令最后面再加一个&,这样可以后台一直抓。这样的话,登录窗口可以关掉。你想停止抓包,则得用PS把进程杀死。

4 抓包分析快进快退

4.1 找关键帧

RTP包是否为关键帧的标识保存在RTP扩展位中。WireShark查看RTP包是否为关键帧。

00或者10: 普通帧 20或者30: 关键帧首包 40或者50: 关键帧中间包 80或者90: 关键帧尾包

注:以上判断之所以有“或者”,是因为关键帧位只占了3比特。

4.2 判断时戳

如果抓包为32倍速,要判断时戳是否正常,则可以用抓包里的: (最大时戳-最小时戳)/90000/倍速=倍速播放时常

例如:

(709506270-490114260)/90000/32=76.17(秒)

然后可以查看每二列的Time是否约等于76秒。如果是,则是正常的。

5 抓包分析是否丢包

注意,不同版本的WireShark操作有所区别,下文中所用版本为1.3.0

5.1 主要步骤

>确定端口号并转换为16进制。 >确定抓包的网口

>抓包并保存结果到文件

>解码:用WireShark打开结果文件并解码为IP,然后再解码为RTP >用WireShark查看是否丢包

5.2 详细步骤

5.2.1 确定端口号并转换为16进制

例如入向端口为11866,转换为十六进制,即是0x2e5a

5.2.2 确定抓包的网口

MSTU收发直播码流是通过网口eth2或者eth3.

不指定保存结果的文件,直接在屏幕上看输出,这种方法可确定是哪个网口收码流

5.2.3 抓包并保存结果到文件 tcpdump -i eth2 ether[12]=0xff and ether[13]=0x09 and ether[36]=0x2e and ether[37]=0x5a -w mstu2eth2_2e5a_head.cap –s 0

其中:

-i eth2指定抓哪个网口

ether[KK]是指IP数据包的第KK个字节。

ether[12]=0xff and ether[13]=0x09表示只抓来自MDU的数据包。 Ether[34]和ether[35]为发送端口的16进制表示。 Ether[36]和ether[37]为接收端口的16进制表示。 -s表示抓下完整的RTP包,这样可以分析TS流.

mstu2eth2_2e5a_head.cap为保存抓包结果的文件,会生成在当前目录下。

5.2.4 解码

用WireShark打开结果文件并解码为IP,然后再解码为RTP。方法如下: 随意右键一个数据包: