如何利用wireshark对TCP消息进行分析
2017-09-06 20:43
381 查看
(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头附带的几个标识位:SYN、FIN、RST
4 TCP窗口
(1)存在意义
现实中存在一些限制,如接收方的缓存(接收窗口)可能一下子接受不了这么多数据,而网络的带宽也不一定足够大,一口气发太多会导致丢包事故,TCP的发送窗口就是发送方一口气可以发送的数据量。(2)发送窗口对性能的影响以及发送窗口与拥塞的关系:
(3)如何在包中看出发送窗口的大小
(4)“接收方处理数据的速度”与“接收数据的速度”之间的关系对“接收窗口”的影响:
(5)TCP头中的window size、calculated window size、window size scaling factor这三个参数的含义
(6)关于拥塞窗口的维护
“慢启动”、“拥塞避免”、“临界窗口值”的概念
(7)超时重传
超时重传对性能的影响:
(8)TCP DUP ACK与快速重传
Tcp Dup Ack xxx#y 代表了数据段丢失的TCP状态,xxx代表数据丢失的位置,#后代表第几次丢失文;快速重传的概念
[b]Tcp Dup Ack规定凑满3个时,启动快速重传的原因分析:(目的:避免由于乱序而导致的快速重传)[/b]
(9)快速重传与超时重传的区别
快速重传是对超时重传的优化,当触发3个及以上dup ack包时,会触发重传;但是如果丢了报,且没有触发快速重传,就只能等待超时重传了。下面是丢包对大文件和小文件影响的区别,原因就在于上面一段的描述:
(10)Previous Segment not capured
说明乱序了,前一个包没有收到,收到后面的包了。(2) wireshark分析实例
下面抓包来自于手机利用FTP下载文件速率小的案例。1 TCP重复确认的案例
tcp重复确认:表示该ACK包发生了丢失,导致发送方对包进行了重传,网关测抓包,发现,最严重的一个丢包是,一个包重传了37次:(同一个包的dup ack的时间间隔约10ms,可以以725这个包为例分析,该包重传了37次);2 “连续多个包丢失”的场景
“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消息进行分析
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
- 如何进行需求分析:从消息提示相关的需求场景出发
- ios开发 如何利用 友盟统计 或者 百度统计 进行 错误分析
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
- 实战利用WireShark对Telnet协议进行抓包分析
- 如何利用Ethereal进行协议分析
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优(转)
- 如何利用数据挖掘进行分析的方法
- 如何利用思维导图进行SWOT自我分析[实战详解]
- 【利用Python进行数据分析——经验篇3】如何操作DataFrame中的列的数据格式(转为百分数、保留4位小数)
- 如何利用jconsole观察分析java程序的运行,进行排错调优
- 如何利用季节性数据进行预测分析
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
- 利用WireShark进行DNS协议分析
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
- [Android Pro] 利用tcpdump和wireshark对android网络请求进行分析
- 你爱我吗?如何利用BRAT进行中文情感分析语料标注掌握玩家心声