Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221036
  • 博文数量: 38
  • 博客积分: 2060
  • 博客等级: 大尉
  • 技术积分: 388
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-17 10:10
文章分类

全部博文(38)

文章存档

2011年(1)

2009年(37)

我的朋友

分类: LINUX

2009-08-24 14:32:36

对每个连接,TCP管理4个不同的定时器。

  • 重传定时器使用于当希望收到另一端的确认。

TCP在发送一份数据后,启动重传定时器,在经过若干时间后如果没有收到ACK,则重传该数据,这个时间间隔通常如下:1s, 3s, 6s, 12s, 24, 48s, 和多个64s。这个指数关系被称为指数退避。TCP会一直尝试重传该数据,在9分钟以后放弃。

  • 坚持定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。

假定有如下情况:接收方接收到一定量的数据,发现本地缓存满了,于是发送一个窗口大小为0的ACK给发送方,发送方在接收到该ACK后停止发送。一段时间后,接收方有空余的窗口,于是发送一个窗口大小非0的ACK以更新窗口,不幸的是该ACK丢失了,于是整个连接被停止。坚持定时器正是为了解决这个问题,它在接收到一个窗口大小为0的ACK以后,启动一个定时器,定时去查询是否窗口已经更新(同样采用指针退避)。

  • 保活定时器可检测到一个空闲连接的另一端何时崩溃或重启。

有如下情况,连接建立好以后,发送方不发送任何数据,这样一直下去(有可能是发送方系统崩溃,或者网络被意外切断),这就导致服务端一直占用该连接,浪费资源。保活定时器通常每两小时发送一个探测请求以查看对方是否存活。

  • 2MSL定时器测量一个连接处于TIME_WAIT状态的时间。

2MSL时间是为了让TCP有时间发送最后一个ACK,防止该ACK丢失。

阅读(4026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~