一、

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分析网络数据的更多相关文章

  1. 用python探索和分析网络数据

    Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...

  2. wireshark分析https数据包解密前后的特点

    wireshark分析https数据包解密前后的特点 (一)https解密前 1.协议种类:2种(1)TCP(第四层,传输层)(2)SSL/TLS(第五层,应用层,加解密)2.应用层数据所在数据包特点 ...

  3. 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. ...

  4. Android 性能优化(6)网络优化( 2) Analyzing Network Traffic Data:分析网络数据

    Analyzing Network Traffic Data 1.This lesson teaches you to Analyze App Network Traffic Analyze Netw ...

  5. 如何用 Python 和 API 收集与分析网络数据?

    摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...

  6. Wireshark分析网络慢

        tcp.analysis.retransmission tcp.flags.reset==1

  7. LINUX下的远端主机登入 校园网络注册 网络数据包转发和捕获

    第一部分:LINUX 下的远端主机登入和校园网注册 校园网内目的主机远程管理登入程序 本程序为校园网内远程登入,管理功能,该程序分服务器端和客户端两部分:服务器端为remote_server_udp. ...

  8. Wireshark数据抓包分析——网络协议篇

                   Wireshark数据抓包分析--网络协议篇     watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...

  9. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

随机推荐

  1. 写了一个兼容IE9的图片放大器(基于vue)

    photoloupe 图片放大器 第一次写vue插件,本人比较喜欢用简单易懂的写法,不喜勿喷. 本插件支持IE9及以上版本,已经过验证. 本插件可根据需要设置放大倍数,最小支持1倍,支持小数 下载地址 ...

  2. TZOJ 3663 最长路径(floyd)

    描述 网络是由很多交换机与网线组成的,网络中的信息可能会在这些网络中不断转发,给定任意两个交换机,我们需要从中找到最快的路径进行转发,我们定义转发过程中所经过的网线条数为两个交换机之间的路径长度.如果 ...

  3. 项目总结08:spring quartz 定时器Demo

    将定时器用到的quartz.jar放在lip文件下 quartz.xml文件(完整) <?xml version="1.0" encoding="UTF-8&quo ...

  4. 大数据分析界的“神兽”Apache Kylin有多牛?【转】

    本文作者:李栋,来自Kyligence公司,也是Apache Kylin Committer & PMC member,在加入Kyligence之前曾就职于eBay.微软. 1.Apache ...

  5. Jedis cluster命令执行流程剖析

    Jedis cluster命令执行流程剖析 在Redis Cluster集群模式下,由于key分布在各个节点上,会造成无法直接实现mget.sInter等功能.因此,无论我们使用什么客户端来操作Red ...

  6. SpringCloud 启动时报No active profile set, falling back to default profiles default

    这在Spring程序启动时没有找到默认的配置文件所引发的错误,默认文件application.yml如下图:  一般在项目中都会有多个,如有正式环境.测试环境等.如下图: 根据上面这种多个配置的只需要 ...

  7. C#字符串长度判断

    string aaa = "你好123"; Label1.Text = aaa.Length.ToString();  //结果5 Label2.Text = System.Tex ...

  8. XML 解析技术

    xml 解析方式有两种: dom 解析和 sax 解析: 针对着两种解析方式,有三种解析器: sun公司的 jaxp dom4j 组织的 dom4j jdom 组织的 jdom dom 解析XML : ...

  9. power designer 从sqlserver数据库获取字段说明&导出rtf文档模板

    具体的操作稍后在修改 附件下载:https://files.cnblogs.com/files/zinan/powerDesigner.rar

  10. 内置函数 hashlib configparser logging 模块 C/S B/S架构

    1.内置函数 # 内置的方法有很多 # 不一定全都在object中 # class Classes: # def __init__(self,name): # self.name = name # s ...