tcpdump抓 wireshark分析
目录
- tcpdump
- wireshark
tcpdump
- tcpdump参数详解
网上一搜一大堆。最全的不是用tcpdump -h
而是man tcpdump
来查询手册。
tcpdump -i eth0 -p udp -xx -Xs 0 -w /root/test2.cap
-i 针对eth0网卡的,ifconfig
是查看有几个网卡
-i eth0 表示使用网络接口 eth0。
-p udp 表示只捕获 UDP 协议的数据包。
-xx 表示使用最高位数为 256,用于设置 tcpdump 的选项。
-Xs 0 表示将前 16 个字节的数据作为 UDP 头部,这有助于快速定位 UDP 数据包。
-w /root/test2.cap 表示将捕获的数据包保存到 /root/test2.cap 文件中。
这个命令将捕获从网络接口 eth0 中传输的 UDP 数据包,并将它们保存到 /root/test2.cap 文件中。在保存数据包之前,tcpdump 使用 -Xs 0 选项将前 16 个字节的数据作为 UDP 头部,这有助于快速定位 UDP 数据包。同时,tcpdump 使用 -p udp 选项只捕获 UDP 协议的数据包,这有助于减少捕获的数据包数量。
下面的随便看看吧,用得着再说
tcpdump详细参数
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。
wireshark
1.下载安装wireshark
下载安装教程
1.5 注意要用管理员方式运行
2.从wireshark中导入上面存的test2.cap
序号,时间戳,源地址,目的地址,协议,包长度
3.右键descode as,存成一个RTP
4.
怎么分析?
PT=DynamicRTP-Type-96:属于编码方式
SSRC=xxxx,属于不同的流
Seq = xxx,属于不同的包的需要
看一看seq的数量是不是缺少了一个,缺少了有没有接着给下面的人发送一个含有NACK的RTCP,发了之后有没有接着
分析的目的?
主要看你的程序代码和你抓到的包显现出来是不是一样的
如果有一个RTP包丢失了,服务端会给客户端发一个RTCP,会有很多种情况出现。
举个栗子吧!
丢了一个包
RTCP
我们可以分析如下:
帧号 481:该帧在 Wireshark 中捕获到的帧号为 481。
网络层协议:该帧为 Ethernet II 格式,表明该帧为 IPv4 协议的网络层帧。
源 IP 地址:该帧的源 IP 地址为 172.21.145.154。
目标 IP 地址:该帧的目标 IP 地址为 112.17.79.157。
IP 协议版本:该帧为 IPv4 协议版本 4。
源端口号:该帧的源端口号为 20309。
目标端口号:该帧的目标端口号为 59037。
协议类型:该帧为 User Datagram Protocol(UDP) 协议类型。
RTP 控制协议:该帧中包含 Secure Real-time Transport Control Protocol(RTCP) 协议的控制帧。
NACK:该帧的 RTCP 控制帧中包含一个 NACK(Not All Frames Lost) 消息,表示有一帧数据包丢失。
根据以上分析,我们可以得出以下结论:
该帧为 IPv4 协议的网络层帧,源 IP 地址为 172.21.145.154,目标 IP 地址为 112.17.79.157,源端口号为 20309,目标端口号为 59037,协议类型为 UDP。
该帧中包含 RTCP 协议的控制帧,其中包含一个 NACK 消息,表示有一帧数据包丢失。
NACK 消息的目的是要求发送方重新发送丢失的数据包,以提高数据传输的可靠性。