查看: 11042|回复: 8

TCP的快速重传机制疑问???

[复制链接]
发表于 2006-11-27 19:24:37 | 显示全部楼层 |阅读模式
用Sniffer或者用科来等网络协议分析软件抓TCP数据包时(比如HTTP协议数据包),通常我们判断在TCP数据传输过程从服务器发送到客户端的数据包中有没有发现丢包现象可以根据两种手段:1,通过对比数据包的序列号是否是按规律增加(即下一数据包的序列号应该=上一个数据包的序列号+data长度),但这个需要一个一个数据包查看比较费时;2,检查客户端给出的ACK中有没有出现重复的ACK,如果出现则说明在数据传输过程中出现了丢包,或者说至少说明了出现了数据包的无序到达的现象。
在TCP原理里面有一个快速重传的机制,意思是说如果服务器端收到了多个重复的ACK(一般是3个),服务器就会认为已经发生了数据包丢失,服务器就会马上重传数据包而不用等待重传超时计时器的超时。
可是,虽然我在抓包的过程中确实发现有这种快速重传的例子,可是仍然有大部分的例子表明快速重传并不是一个人人都要遵守的规则,有的服务器在收到N个重复ACK以后才会重传数据包,而且在重传数据包之前都会等待一段大小不等的时间,而且在这段时间里服务器不会发送任何数据。
所以我想问的是:
1,快速重传是否和具体的操作系统有关,而不是一个必须要遵守的规则
2,究竟要收到多少个重复ACK后,才会出现快速重传而且是马上重传
回复

使用道具 举报

发表于 2006-12-4 09:43:48 | 显示全部楼层

帮我分析下

高手来帮我公析下!谢谢
{AF06D5C4-2E66-4366-B07F-3C9B7C480B33}.JPG
回复

使用道具 举报

发表于 2006-12-4 21:46:34 | 显示全部楼层
是好贴
谢谢
学习
回复

使用道具 举报

发表于 2006-12-4 23:16:20 | 显示全部楼层
是好贴
谢谢
学习
回复

使用道具 举报

发表于 2006-12-22 23:56:23 | 显示全部楼层
等待斑主回复。。
回复

使用道具 举报

发表于 2006-12-30 09:38:01 | 显示全部楼层
关注ing ,等待中
回复

使用道具 举报

发表于 2007-4-4 13:45:17 | 显示全部楼层
等待斑竹 给出相关 信息资料.....
回复

使用道具 举报

发表于 2007-4-7 10:24:59 | 显示全部楼层

抱歉--

重传最关心的是 超时重传。超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。这是数据丢包的情况下给出的一种修补机制。一般来说,重传发生在超时之后,但是如果发送端接受到3个以上的重复ACK的情况下,就应该意识到,数据丢了,需要重新传递。这个机制是不需要等到重传定时器溢出的,所以叫做快速重传,而重新传递以后,因为走的不是慢启动而是拥塞避免算法,所以这又叫做快速恢复算法。流程如下:

当收到第3个重复的ACK时,将ssthresh设置为当前拥塞窗口cwnd的一半。重传丢失的 报文段。设置cwnd为ssthresh加上3倍的报文段大小。
每次收到另一个重复的ACK时, cwnd增加1个报文段大小并发送1个分组(如果新的 cwnd允许发送)。
当下一个确认新数据的ACK到达时,设置cwnd为ssthresh(在第1步中设置的值)。这个 ACK应该是在进行重传后的一个往返时间内对步骤1中重传的确认。另外,这个ACK也应该 是对丢失的分组和收到的第1个重复的ACK之间的所有中间报文段的确认。这一步采用的是拥 塞避免,因为当分组丢失时我们将当前的速率减半。

最近比较忙,真不好意思。以后会经常到……
回复

使用道具 举报

发表于 2007-4-7 10:26:07 | 显示全部楼层

标题

一般来说,跟操作系统没有关系。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表