TCP可靠传输

TCP是可靠的传输协议,主要通过确认机制和超时重传机制来实现可靠传输

确认机制

TCP将要传送的整个应用层报文(这可能要嵌在多个TCP报文段中发送)看成是一个个字节组成的数据流,然后对每一个字节编一个序号。在建立连接时,双方要商定初始序号。TCP就将每一次所要传送的报文段中的第一个数据字节的序号,放在TCP首部的序号字段中
TCP的确认是对接受到的数据的最高序号(即收到的数据流中的最后一个字节的序号)表示确认,但返回的是已收到的数据的最高序号加1.也就是说,确认序号表示期望下次收到的第一个数据字节的序号。

超时重传机制

1.RTT(往返时延)的计算

超时重传机制最关键的因素是重传定时器的定时设置,但是确定合适的往返时延RTT是相当困难的事,因为TCP的下层是一个网际互联网环境,发送的报文段可能经过一个高速率的局域网,但也有可能经过多个低速率的广域网
TCP采用了一种自适应算法。算法思想描述如下:记录每一个报文段发出的时间,以及收到相应的确认报文段的时间,这两个时间之差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT,RTT的计算如下:

  • RTT新值=RTT样本(第一次测量)
  • RTT新值=α×RTT旧值+(1-α)×新的RTT样本(第二次以后的测量)

在上式中,典型的α的值为7/8

2.RTTD(RTT的偏差加权平均值)的计算

计算方法如下:

  • RTTD新值=RTT样本/2(第一次测量)
  • RTTD新值=γ×RTTD旧值+(1-γ)×|RTT新值-RTT样本|(第二次测量之后)

在上式中,典型的γ值为3/4
最后,超时重传时间RTO=RTT新值+4×RTTD新值

3.超时重传机制中的定时器
  1. 重传定时器:发送方发送数据后,将发送的数据放到缓存中,同时设定重传定时器,如果超时重传时间RTO之内没有收到来自接收方的确认报文段,则将缓存数据重发
  2. 持续定时器:接受方由于缓存满,就会给发送方发送一个窗口字段0的报文段,当接收方有了空闲时候,会发送窗口更新报文段发送给发送方。持续定时器就是为了防止窗口更新报文段丢失了,但此时接收方有了缓存空间,等待发送方发送数据;而发送方没有收到窗口更新报文段,不能发送数据,也处于等待状态,从而进入死锁状态
  3. 保活定时器:当一个连接双方空闲了比较长时间后,该定时器即使超时,从而发送一个报文段来查看通信的另一方是否依然存在。如果对方无应答,则连接中止
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值