《TCP/IP详解 卷1:协议》 读书笔记 第22章 TCP的坚持定时器

TCP的坚持定时器


引言

ACK的传递是不可靠的,TCP不对ACK报文段进行确认,只确认那些包含数据的ACK报文段。
有些通知窗口大小为0,或者打开窗口的ACK是不包含数据的。这种ACK可能丢失,如果打开窗口的ACK丢失,那么可能导致连接终止。
为了防止这种死锁,发送方使用一个坚持定时器(persist timer)来周期性向接收方询查窗口是否已增大。(发出的报文段叫做窗口探查window probe)


坚持定时器

当通告窗口为0之后,引起客户设置其坚持定时器,当定时器溢出时还没有接收到窗口更新的话,它就探查这个空的窗口来判断窗口更新的报文是否丢失了。

  • 如果得知窗口非0了,就可以开始发送数据了
  • 如果窗口还是0,就重新计时,这个过程将会持续到窗口被打开,或者连接被终止(所以叫做“坚持”定时器)
  • 坚持定时器使用了TCP指数退避,但是坚持定时器总是在5~60秒之间。

糊涂窗口综合征症SWS(Silly Window Syndrome)

基于窗口的流量控制,会导致SWS——少量的数据将通过连接进行交换,而不是满长度的报文段。

  • 接收方可以通告一个小窗口,发送方也可以发送少量的数据(不用等到其他数据一起发送一个大的报文段)。
  • 这样会导致在通道中有很多小数据,可能导致拥塞,影响网络利用率。

避免的方法:

  1. 接收方不通告小窗口,除非窗口有了一个满长度的报文段大小,或者有了一半缓存空间。
  2. 发送方有3个条件,必须满足任一条件才发送数据:
    • 可以发送一个满长度的报文段
    • 可以发送至少是接收方通告窗口大小一半的报文段
    • 可以发送任何数据并且不希望接收ACK(就是说没有未被确认的数据)或者该连接上不能使用Nagle算法(连接上只能有一个未被确认的分组,确认后才能发送新的)。(一半会用Nagle来防止这种SWS的情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值