使用Wireshark分析网络数据
一、
Wireshark中查看TCP的三次握手和四次挥手:
上面的数据发送和接收两部分的info提示都是 [TCP segment of a reassembled PDU],网上的解释是TCP分片的提示,但我只是发送和接收了十几个字节数据,远未超过MSS值。后来换了服务器模式(原来用的是简单阻塞模式的TCP socket服务器模型,现在换成了异步完成端口模型),发现数据发送和接收两部分的info提示变成了[PSH, ACK],如下图,暂时还不知道为什么会有这种区别。
从上图可以看到:
1、刚开始双方数据的序号都为0(seq=0),然后会随着发送数据的增长而增长,因为序号就是本数据报的第一个数据字节在整个发送数据流中的偏移量。而SYN和FIN包虽然一般不携带数据但他们占一个字节的数据流空间,ACK包则不占用数据流空间,所以在发送SYN/FIN/SYN+ACK/FIN+ACK包后seq会加1,而发送ACK包后seq不变。一般情况下报文的确认号(ack)会与下次收到的对方发来数据的序号(seq)相同,除非发生了乱序。
2、ACK包是可以和SYN、PSH、FIN和并发送以节省时间的(TCP帧头中对应标志位置1),比如三次握手中的SYN+ACK,四次挥手中的FIN+ACK,发送数据中的PSH+ACK。注意这里的第三次挥手也为FIN+ACK,而这里我没看出前面有什么数据要进行确认,还有第一次发送数据的时候也是这样,多了一个ACK标志,为PSH+ACK,为什么会这样呢?我个人猜测可能是这样做就不用判断前面还有没有数据要确认:对于数据传输报文和关闭连接报文不管前面有没有要确认的数据都将ACK标志置1,方便快捷,也不会带来什么问题。
PSH强调的是尽快将数据交付给上层,TCP接收方在收到PSH置位的数据报文后会立即将缓冲区中数据发送给上层,而如果TCP接收方收到的是PSH没有置位的报文,则会等待缓冲区满才将缓冲区中数据发送给上层。那么什么时候PSH位会被置1呢?经我测试发现,如果不是分片数据或者是最后一个分片数据,PSH会被置位,标志位为PSH+ACK,如果是分片数据但不是最后一个分片数据,PSH不会被置位,标志位只有ACK。
3、报文信息中的Len表示携带数据的大小;Win是本端"接收窗口"的大小,用来告知对端,从而控制对端"发送窗口"的大小,以达到控制传输流量。
4、MSS称为最大分段大小,在上图中可以看到在双方连接的时候会发送自身MSS值,而这个MSS值是根据本机MTU计算而来的:MSS = MTU - IP报文头的20bytes - TCP报文头的20bytes,TCP协议会选择双方较小的mss作为TCP分片的大小。因为以太网MTU是1500或者大于1500,所以用Wareshark查看TCP三次握手中双方发送的MSS值都为1460。
二、
过滤器分为两种,一种是捕捉过滤器,一种是显示过滤器。下面是Wireshark中一些常用的显示过滤器设置:
过滤IP地址、源IP地址、目的IP地址:ip.addr == 192.168.0.38、ip.src==1.1.1.1、ip.dst==192.168.101.8。
标识过滤:显示包含TCP SYN标志的封包:tcp.flags.syn == 0x02`。
端口过滤、目的端口过滤、源端口过滤:tcp.port==6000、tcp.dstport==6000、tcp.srcport==6000。
协议过滤(直接输入协议名):tcp、http。
使用连接符and(&&)、or(||):ip.src==1.1.1.1 and tcp.port==6000、ip.src==1.1.1.1 or ip.src==2.2.2.2。
http模式过滤,如过滤get方法:http.request.method=="GET";过滤整个URL:http.request.full_uri == "http://www.sac.net.cn/tzgg/";过滤所有http请求:http.request==1;过滤所有http响应:http.response==1;过滤URL中包含指定内容:http.request.full_uri contains "www.sac.net";过滤域名:http.host == "www.sac.net.cn",http.host contains "sac";
三、
Wireshark中TCP常见错误状态:
TCP Previous segment not captured 乱序包
TCP Retransmission 重传包
TCP fast retransmission 快速重传包
TCP Dup ACK 报文丢失ACK
使用Wireshark分析网络数据的更多相关文章
- 用python探索和分析网络数据
Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...
- wireshark分析https数据包解密前后的特点
wireshark分析https数据包解密前后的特点 (一)https解密前 1.协议种类:2种(1)TCP(第四层,传输层)(2)SSL/TLS(第五层,应用层,加解密)2.应用层数据所在数据包特点 ...
- wireshark 分析过滤数据
1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1. ...
- Android 性能优化(6)网络优化( 2) Analyzing Network Traffic Data:分析网络数据
Analyzing Network Traffic Data 1.This lesson teaches you to Analyze App Network Traffic Analyze Netw ...
- 如何用 Python 和 API 收集与分析网络数据?
摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...
- Wireshark分析网络慢
tcp.analysis.retransmission tcp.flags.reset==1
- LINUX下的远端主机登入 校园网络注册 网络数据包转发和捕获
第一部分:LINUX 下的远端主机登入和校园网注册 校园网内目的主机远程管理登入程序 本程序为校园网内远程登入,管理功能,该程序分服务器端和客户端两部分:服务器端为remote_server_udp. ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
随机推荐
- python使用elasticsearch模块操作elasticsearch
1.创建索引 命令如下 from elasticsearch import Elasticsearch es = Elasticsearch([{"host":"10.8 ...
- 使用pyqt写了一个检查大数据环境的gui
通过pyqt做了一个大数据最佳实践检查的gui界面 1.首先是需要用到的模块 from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets ...
- MultiImageSelector 仿微信选择多张图片回调
项目可以去github下载 : https://github.com/lovetuzitong/MultiImageSelector 第0步 把模块 multi-image-selector 作为你的 ...
- go语言中的函数
package main; import "fmt" func main() { a, b, c := A(1, 2, 3); fmt.Println(a, b, c); //调用 ...
- Oracle_高级功能(5) 用户、角色、权限
一.用户(模式)1.定义用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作模式(schema):是某个用户所拥有的对象的集合.具有创建对象权限并创建了对象的用户称为拥有某 ...
- slam14讲证明构成李代数
- IIS7.0上传在大小限制
修改 IIS7的上传文件大小限制的方法: 1.打开IIS管理器,并定位于想要修改限制的网站 2.双击右侧窗口中的asp图标 3.展开最下面那个“限制属性”,将最下面的“最大请求实体主体限制”右边属性框 ...
- andorid EditView
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android=" ...
- hdu 3415(单调队列) Max Sum of Max-K-sub-sequence
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3415 大意是给出一个有n个数字的环状序列,让你求一个和最大的连续子序列.这个连续子序列的长度小于等于k. ...
- How to Solve Lonsdor K518ISE Abnormal Display by Factory Resetting
Here’s the working solution to Lonsdor K518ISE Key Programmer abnormal display after upgrade. Proble ...