linux tcpdump 及 windows wireshark 使用整理
来源:互联网 发布:2016陈子豪刷枪软件 编辑:程序博客网 时间:2024/06/13 03:20
本文参考网络中其他博客文章,根据自己使用整理归纳
参考资料网址:http://blog.csdn.net/s_k_yliu/article/details/6665673/
http://blog.csdn.net/hzhsan/article/details/43453251
http://www.360doc.com/content/13/0702/10/1073512_297069771.shtml
一 Linux tcpdump 命令
1 可能常用的参数
-i 指定进行抓包的网口 例如 -i eth0
host 指定IP,不区分源目的IP
src host 指定源IP
dst host 指定目的IP
port 指定端口
port 指定端口,不区分源目的端口
src port 指定源端口
dst port 指定目的端口
-t 不在每一行输出时间戳
-tt 在每一行输出非格式化的时间戳
-ttt 每行输出与上一行的间隔时间
-tttt 每行输出date的时间戳
-vv (两个v) 输出更加详细的报文信息
-nnl 直接以 IP 及 Port Number 显示,而非主机名与服务名称。
-w 将抓包数据写入文件,写成 .pcap格式,拉到windows下,wireshark直接可以读取解析
-e 打印数据链路层的信息 如mac地址
2 用例
# 抓取eth0 网口 源或者目的ip有192.168.8.45的并且port有7795的通信包,并把数据写入package.pcap文件
tcpdump -i eth0 host 192.168.8.45 and port 7795 -nnl -w package.pcap
# 过滤源主机为192.168.8.45 目的ip为192.168.192.0/24的包
tcpdump src host 192.168.8.45 and dst net 192.168.192.0/24
二 wireshark 过滤规则
1 过滤协议,在wireshark filter栏中输入过滤内容
arp tcp udp ftp icmp http
2 过滤ip
ip.addr eq 192.168.2.192
ip.src eq 192.168.2.192
ip.dst eq 192.168.2.192
ip.host eq x.x.x.xip.src_host eq x.x.x.xip.dst_host eq x.x.x.x
3端口过滤
tcp.port == 7795 或者tcp.port eq 7795
tcp.srcport == 7795
tcp.dstport == 7795
tcp.port > 7788 and tcp.port < 7808 过滤端口范围
4tcp 参数过滤
tcp.flags.reset == 0x02 查看一个reset的包
tcp.flags.res = 0x02 查看重传包
5http 过滤
http.request.method == "GET"
http.request.uri=="/img/logo-edu.gif"
http contains "GET"
// GET包
http.request.method == "GET" && http contains "Host:"
http.request.method == "GET" && http contains "User-Agent:"
// POST包
http.request.method == "POST" && http contains "Host:"
http.request.method == "POST" && http contains "User-Agent:"
// 响应包
http contains "HTTP/1.1 200 OK" && http contains "Content-Type:"
http contains "HTTP/1.0 200 OK" && http contains "Content-Type:"
6 包长度过滤
ip.len tcp.len udp.len
3 wireshark tcp常见的几个问题
1 tcp out-of-order 乱序
多半是网络拥塞,导致顺序包抵达时间不同,延时太长,或者包丢失,
需要重新组合数据单元 因为他们可能是通过不同的路径到达你电脑上面的。
2 tcp segment of a reassembled PDU
1)在连个连接建立的时候,SYN包里面会把彼此TCP最大的报文段长度,
在局域网内一般都是1460.如果发送的包比最大的报文段长度长的话就要分片了,
被分片出来的包,就会被标记了“TCP segment of a reassembled PDU”
TCP在发起连接的第一个报文的TCP头里通过MSS这个可选项告知对方本端能够接收的最大报文
tcp的MSS一般会设置成1460byte 因为链路层最大的报文一般会设置成1500(系统的MTU),
tcpMSS1460+tcp head 20byte + ip head 20byte == 1500
当出现tcp分片,但是len却小于1460的时候,可以去查一下系统的MTU。
也需要确认一下连接建立的时候,MSS的值
3 Tcp previous segment lost tcp分片丢失
4 Tcpacked lost segment tcp应答丢失
5 Tcp window update tcp窗口更新
6 Tcp window update tcp重复应答
收到出问题的tcp分片包的时候
7 tcp keep alive tcp保持活动
在TCP中有一个Keep-alive的机制可以检测死连接,原理很简单,TCP会在空闲了一定时间后发送数据给对方:
1).如果主机可达,对方就会响应ACK应答,就认为是存活的。
2).如果可达,但应用程序退出,对方就发RST应答,发送TCP撤消连接。
3).如果可达,但应用程序崩溃,对方就发FIN消息。
4).如果对方主机不响应ack, rst,继续发送直到超时,就撤消连接。这个时间就是默认的二个小时。
8 Tcp retransmission tcp重传
作为一个可靠的传输协议,传输控制协议(TCP)在发送主机需要从目标主机收到一个包时确认。
If the sender does not receive that acknowledgment within a certain amount of time,
it acts under the assumption that the packet did not reach its destination and
retransmits the packet.如果发件人没有收到的时间内一定之金额,确认,它的行为假设下,
该数据包没有到达其目的地,以及转发数据包。
9 RST 重置
几种tcp重置的情况分析:
1) 端口未打开,
2) 请求超时,telnet 和 ping都没有发现问题,注意看程序的setsockopt的
SO_RCVTIMEO设置了多少,置了100ms,而网络延时超过了100ms,此时会出问题
3) 提前关闭
tcp是一种可靠的链接,操作系统收到的来自tcp连接的每一个字节,我们都会
让应用程序收到,如果应用程序收不到,就会rst
4) 在一个已经关闭的socket上收到数据
如果某个socket已经关闭,还收到数据,会产生RST
- linux tcpdump 及 windows wireshark 使用整理
- tcpdump+wireshark的使用
- linux网络工具使用tcpdump和使用wireshark进行数据分析
- Linux TcpDump Wireshark文件导出
- tcpdump,wireshark
- TCPdump + wireshark
- Tcpdump&&Wireshark
- Wireshark & tcpdump
- linux tcpdump分析抓包用wireshark分析
- Wireshark与tcpdump介绍与使用
- tcpdump抓包+wireshark分析配合使用
- tcpdump使用与Wireshark抓包分析
- Linux使用tcpdump命令抓包保存pcap文件wireshark分析
- linux平台远程管理工具 ssh 与 vnc的使用 wireshark tcpdump
- Linux使用tcpdump命令抓包保存pcap文件wireshark分析
- windows下使用windump 和 awk,linux 下tcpdump举例
- wireshark windows版数据过滤插件安装及使用
- Linux下tcpdump使用
- iOS中集成ijkplayer视频直播框架
- VS2012debug时报错:应用程序无法正常启动(0xc000007b)
- 你日复一日的生活,就是一场漫长的修行
- 1. 冒泡排序
- wget ftp
- linux tcpdump 及 windows wireshark 使用整理
- MyEclipse下创建的项目 导入eclipse
- tee 命令重定向输出到多个文件
- 算法导论之动态规划(最长公共子序列和最优二叉查找树)
- JAVA Math 常用方法
- Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁
- hdu1728 关于bfs的理解
- 初窥Linux 之 我最常用的20条命令
- CentOS 6.5 下安装 Redis