如何利用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个字节没有收到;

故:

时间: 09-05

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

利用Wireshark截取数据包,并对数据包进行解析

利用Wireshark截取ICMP数据包,并对数据包进行解析 wireshark安装文件下载地址:http://yunpan.cn/QiHGK5sPtWRyN (提取码:0bbc) 安装步骤: 解压文件之后,在\wireshark-win32-1.4.9中文版\文件夹中找到安装文件,双击即可安装. 安装完成之后,双击wireshark图标即可启动,界面如下: 抓包步骤: 1.点击开始按钮列出可以抓包的接口: 2.点击选项可以配置抓包参数: 3.配置完成点击开始,即可开始抓包: 4.点击停止完成抓

利用wireshark抓取Telnet的用户名和密码

使用wireshark抓取Telnet   目标ip地址(telnet  192.168.88.1 ) 1,首先打开wireshark,然后选择网卡,点击开始. 2,为了在filter中输入telnet 或者输入(ip.dst == 目标ip地址 and  tcp.port== 23). 3,看下面的数据包,找到telnet  并且能够看到data:\r\n:如下图 4,接下来再看下面的数据包,就能看到明文用户名和密码了.如下图 这时候你就可以看到明文用户名的首字母x了,继续看下去你可以找到后面

IP协议和TCP协议的分析

一,TCP/IP协议栈的概述 TCP/IP协议栈是由美国国防部(DoD)在20世纪60年代创建的(比OSI模型还早),是一种具体实现标准. 分为4层:网络接入层(链路层),Internet层(网络层),主机到主机层(传输层),应用层 由于TCP/IP协议栈涉及的知识点很多,而其中最主要的协议是IP协议和TCP协议,故本文主要是针对IP和TCP协议来分析,其他的知识点后续补上. 二,IP协议 IP(Internet Protocol,网际协议)是TCP/IP协议栈中最重要的协议(位于网络层),用于

C++ 利用socket实现TCP,UDP网络通讯

学习孙鑫老师的vc++深入浅出,有一段时间了,第一次接触socket说实话有点儿看不懂,第一次基本上是看他说一句我写一句完成的,第二次在看SOCKET多少有点儿感觉了,接下来我把利用SOCKET完成TCP和UDP两种通讯模式的流程和代码分享一下,希望对大家多少能有点儿帮助,有什么说的不对的欢迎各位大神指正. TCP TCP是点对点的通讯模式,数据传输质量高,对于传输数据完整性要求高的情况一般用TCP,具体到vc++中,一般选用的是服务器/客户端模式,socket实现TCP通讯在服务器端一般分为以

[转]易语言消息机制分析(消息拦截原理)

标 题: [原创]易语言消息机制分析(消息拦截原理)作 者: 红绡枫叶时 间: 2014-12-17,12:41:44链 接: http://bbs.pediy.com/showthread.php?t=195626 我自己做了个易语言的sig签名,方便分析的时候用.易语言例子是静态编译的.版本 5.11易语言其实是基于mfc的,它依然需要mfc的消息派发机制,只不过,自己当了系统与用户间的代理人.所有的消息都要经它转发而已.我在MFC的消息派发函数_AfxDispatchCmdMsg下断点,总

从Wireshark看TCP连接的建立与断开

TCP是一种面向连接.可靠的协议.TCP连接的建立与断开,都是需要经过通信双方的协商.用一句话概括就是:三次握手say hello(建立连接):四次握手say goodbye(断开连接).要了解TCP连接的建立与断开,就不得不需要了解TCP头的内容.然而,TCP头及其复杂,概括而言,我们需要了解以下内容: Sequence Number(Seq):序号.表示一个TCP片段,用于保证数据没有丢失 Acknowledgment Number(Ack):确认号.用于表示希望从对方得到的下一个数据包的序

利用Wireshark抓包登录博客园

1,打开WireShark,选择本地网卡. 2,在filter中输入过滤条件Http. 3,找到http包中的get 和post的包,这时你可以找到你登录的用户名和密码了,这个用户名和密码通过表单进行验证. 利用Wireshark抓包登录博客园,布布扣,bubuko.com

如何更好地利用Pmd、Findbugs和CheckStyle分析结果

这里列出了很多Java静态分析工具,每一种工具关注一个特定的能发挥自己特长的领域,我们可以列举一下: Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可能的bug--空的try/catch/finally/switch块.– 无用代码(Dead code):无用的本地变量,方法参数和私有方法.– 空的if/while语句.– 过度复杂的表达式--不必要的if语句,本来可以用while循环但是却用了for循环.– 可优化的代码:浪费性能的String/Strin

tcprstat源码分析之tcp数据包分析

tcprstat是percona用来监测mysql响应时间的.不过对于任何运行在TCP协议上的响应时间,都可以用. tcprstat和tcpdump一样,使用libpcap库进行抓包,然后再通过程序对抓取的tcp包进行分析. 1.通过分析来源ip和目标ip,看那个ip是本地ip,来判断是进来的包(请求包)还是出去的包(响应包).2.如果包的数据大小为0,那么就跳过,不再处理.数据大小为0的视为tcp控制包.3.如果数据包为进来的包(请求包),则插入一条记录到哈希表.4.如果数据包为出去的包(响应