原文:https://www.cnblogs.com/studyofadeerlet/p/7485298.html

如何利用wireshark对TCP消息进行分析

 

(1) 几个概念介绍

1 seq:数据段的序号,计算方法或者增长方式:seq2=seq1+len1(len仅仅是数据段的长度,不包括TCP头)(同一个发送方的tcp报文序号的计算方法)

2 ACK:确认号的计算方法,接收方的ACK号与发送方的SEQ和LEN之间的关系:

甲:发送“seq:x,len:y”给乙;

乙:回复的确认号,x+y,表示它收到了x+y之前的所有字节;

小结:

综合上面SEQ和ACK的计算,可以发现:

(1)理论上,接收方回复的Ack恰好就等于发送方的下一个seq号;

(2)TCP的确认是可以累积的;

(3)这几个参数的意义:

包乱序时,接收方只要根据Seq号从小到大重新排好就行了,保证了TCP的有序性;

有包丢失时,接收方判断丢了哪些包的方法:通过前一个Seq+Len的值与下一个Seq的差,保证了TCP的可靠性;

3 TCP头附带的几个标识位:SYNFINRST

4 TCP窗口

1)存在意义

现实中存在一些限制,如接收方的缓存(接收窗口)可能一下子接受不了这么多数据,而网络的带宽也不一定足够大,一口气发太多会导致丢包事故,TCP的发送窗口就是发送方一口气可以发送的数据量。

2发送窗口对性能的影响以及发送窗口与拥塞的关系:

3)如何在包中看出发送窗口的大小

4“接收方处理数据的速度”与“接收数据的速度”之间的关系对“接收窗口”的影响:

5TCP头中的window sizecalculated window sizewindow size scaling factor这三个参数的含义

6关于拥塞窗口的维护

 “慢启动拥塞避免临界窗口值的概念

7)超时重传

超时重传对性能的影响:

8TCP DUP ACK与快速重传

Tcp Dup Ack xxx#y 代表了数据段丢失的TCP状态,xxx代表数据丢失的位置,#后代表第几次丢失文;

快速重传的概念

Tcp Dup Ack规定凑满3个时,启动快速重传的原因分析:(目的:避免由于乱序而导致的快速重传)

9)快速重传与超时重传的区别

快速重传是对超时重传的优化,当触发3个及以上dup ack包时,会触发重传;但是如果丢了报,且没有触发快速重传,就只能等待超时重传了。

下面是丢包对大文件和小文件影响的区别,原因就在于上面一段的描述:

10Previous Segment not capured

说明乱序了,前一个包没有收到,收到后面的包了。

2 wireshark分析实例

下面抓包来自于手机利用FTP下载文件速率小的案例。

1 TCP重复确认的案例

tcp重复确认:表示该ACK包发生了丢失,导致发送方对包进行了重传,网关测抓包,发现,最严重的一个丢包是,一个包重传了37次:(同一个包的dup ack的时间间隔约10ms,可以以725这个包为例分析,该包重传了37次);

“连续多个包丢失”的场景

“SACK方案”

同样对网关测抓包TCP头中的sack信息进行分析:

一个dup ack包,725#3,是725号包的第三次重传ack,内容如下:

分析:

SACK=32121~33581和35041~37961,而ACK=29201,这样,FTP server就会知道:

32121~33581和35041~37961都已经收到了,而前面的29201~32120之间的2920个字节没有收到;

故:

如何利用wireshark对TCP消息进行分析的更多相关文章

  1. Wireshark lua dissector 对TCP消息包合并分析

    应用程序发送的数据报都是流式的,IP不保证同一个一个应用数据包会被抓包后在同一个IP数据包中,因此对于使用自制dissector的时候需要考虑这种情况. Lua Dissector相关资料可以见:ht ...

  2. 利用Wireshark抓取并分析OpenFlow协议报文

    OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网 ...

  3. 哈工大 计算机网络 实验四 利用 Wireshark 进行协议分析

    计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 利用 Wireshark 进行协议分析 实验目的: 本次实验的主要目的. 熟悉并掌握Wireshark的基本操作,了解网络协议实 ...

  4. TCP头部格式详解,附Wireshark对TCP头部抓包分析

    TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...

  5. 使用WireShark进行网络流量安全分析

    WireShark的过滤规则 伯克利包过滤(BPF)(应用在wireshark的捕获过滤器上) ** 伯克利包过滤中的限定符有下面的三种:** Type:这种限定符表示指代的对象,例如IP地址,子网或 ...

  6. 计算机网络协议,TCP数据报的分析

    一.TCP协议的特点 TCP是面向连接的运输层协议:即应用程序在使用TCP协议通信之前,要先建立TCP连接,通信结束后必须释放已建立的TCP连接 每一条TCP连接只能有两个端点:即TCP是点对点(一对 ...

  7. php 利用activeMq+stomp实现消息队列

    php 利用activeMq+stomp实现消息队列 一.activeMq概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J ...

  8. Wireshark和TcpDump抓包分析心得

    Wireshark和 TcpDump抓包分析心得  1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...

  9. 转 Wireshark和TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

随机推荐

  1. TestNG测试带参构造函数的类

    今天被同事问到一个问题,问题描述如下: 一个测试类,只有一个带参构造函数.在带参构造函数上加@Test,同时加@Parameters注解从testng.xml中传递参数.为保证测试函数在带参构造函数之 ...

  2. 根据WSDL文件生成代理类

    D:\Program Files\Microsoft Visual Studio 10.0\VC>wsdl  /l:c#  /n:cmsserver  /out:E:\ospsoft\Trave ...

  3. ssh登陆不上

    用ssh key登陆不上某台机A的某个账号xy1,查看A的/var/log/messages,看到有这么句: User xy1 not allowed because account is locke ...

  4. getLastSql()用法

    getLastSql()用法 $User = M("User"); // 实例化User对象 $User->find(1); echo $User->getLastSq ...

  5. webpack 编译html模板文件

    1.项目结构 安装loader: npm i html-loader --save-dev npm i ejs-loader --save-dev 2.模板文件layer.html <div c ...

  6. Linux下的编译器(转)

    转自:http://ju.outofmemory.cn/entry/2051 简单的说,编译器就是一个可执行程序,它专门用于将程序员易于编写的高级语言 (如 C 语言) 翻译为机器可以识别的低级语言. ...

  7. D3js-对柱状图的增,删,排序

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  8. [Done]ibatis/mybatis: java.lang.NoSuchMethodException

    异常描述: Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating interface cn. ...

  9. 公用的css

    /*公共开始*/ body, ol, ul, h1, h2, h3, h4, h5, h6, p, th, td, dl, dd, form, fieldset, legend, input, tex ...

  10. 系统学习NIO

    概述 适用于有一定编程基础的朋友,想系统学习NIO这块知识的朋友.知识点大体分3块:1:>概念了解(各类IO) 2>NIO的核心(缓存区,通道等) 3>网络IO 详细 代码下载:ht ...