登录
CSNA会员注册
找回密码
搜索
搜索
本版
用户
CSNA网络分析论坛
»
首页
›
流量分析
›
网络分析
›
关于计算TCP重传时间的一些疑问?
返回列表
发帖
查看:
11667
|
回复:
1
关于计算TCP重传时间的一些疑问?
[复制链接]
iejtqy
iejtqy
当前离线
积分
20
发表于 2011-9-29 15:19:53
|
显示全部楼层
|
阅读模式
IP 是丌可靠的传输,TCP 建立在丌可靠的 IP 层之上,TCP 提供可靠传输,
对失序和丢弃的数据包具有排序和重传机制。 TCP重传的出现是网络性能下降的
标志。
TCP的在发送数据时设置一个超时定时器(RTO) ,如果定时器溢出时还没有
收到对方的确认,就会重传数据。本文主要讨论 TCP 是如何确立这个超时定时
器的。
超时定时器(RTO –retransmission timeout) 的时间的确定不 RTT
(round-trip time)有重要的联系。TCP 在发送报文后记录当前时间,在收到
相应的确认时间后,两者之差就为报文往返时间 RTT。TCP保留了一个加权平均
往返时间 RTTS(又称平滑往返时间,smoothed RTT SRTT),该时间是通
过多次RTT的样本多次测量的结果,测量公式为:
新的 RTTS=(1-a)*(旧的 RTTS)+a*(新的RTT 样本)
根据 RFC2988 推荐 a 值为 1/8 ,这样计算的 RTTS 更加平滑。如果是第一次
测量到RTT样本时,RTTS 的值就取为测量的 RTT样本的值。
超时时间的RTO的值要略大于加权计算出的 RTTS, RFC使用如下公式计算:
RTO=RTTS+4*RTTD
RTTD是RTT的偏差加权的平均值,不RTTS不新得到的RTT样本之差有关,
当第一次测量 RTTD 时,RTTD 取值为 RTT 样本值的一半,以后测量使用以下
计算公式:
新的RTTD=(1-B)*(旧的RTTD)+B*| RTTS-新的RTT 样本 |
根据RFC 建议,B 取值为1/4。 如上就是测量 RTO 的公式和参数。但还有一个问题需要说明的是,在计算加
权平均 RTTS 时,只要报文重传了就不采用其往返时间,这样得出的 RTTS 和
RTO就比较准确。而且当出现过重传后,新的 RTO的时间为旧的 RTO的2 倍。
我们以一个实验来说明。在本机抓包,并访问图片新闻较多的网页,然后看到
诊断视图有 TCP 重传数据包后停止。选中诊断事件中的第一个数据包,双击打
开不之相关的TCP 会话。如图:
我们看到TCP三次握手包之后的第一次 get包就已经发生了重传。根据 RTO计
算公式,我们得到三次握手中第一次 RTT 值(也就是 SYN+ack 的数据包绝对
时间减去SYN数据包时间)0.041798。而由于再次发送 get请求的时候发生了
重传,没有计算迚 RTO,因此RTTS=1/2RTT=0.020899
RTTD=1/2RTT=0.020899。所以RTO=RTTS+4*RTTD=0.104495 秒
---------------------------------------------------------------------------
我的问题是:
在发生重传数据包时上面:RTTS=1/2RTT=0.020899 这里的1/2是怎么来的?
上面的例子中在没有发生重传时:RTTS是等于(三次握手中第一次 RTT 值(也就是 SYN+ack 的数据包绝对时间减去SYN数据包时间)0.041798 )RTTD值也是一样
那么RTO=RTTS(0.041798 )+4*RTTD(0.041798 )
现在数据包发生重传了:在计算加权平均 RTTS 时,只要报文重传了就不采用其往返时间:那么采用什么时间? 也就是我要问的为什么RTTS=1/2RTT=0.020899 ?
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
CSNA会员注册
×
评分
1
查看全部评分
孤独的意尹者
回复
使用道具
举报
孤独的意尹者
孤独的意尹者
当前离线
积分
109
发表于 2011-9-29 16:56:26
|
显示全部楼层
楼主问的问题太细致了,难道楼主是做网络相关的研发人员?
在实际网络分析工作过程中,这一块内容属于了解内容,大概了解就可以了,这么细致的研究我只在第一遍看详解卷1的时候干过,不过,很多年过去了,都记不清了,呵呵。
坐等他人回答。
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
CSNA会员注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
快速回复
返回顶部
返回列表