博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP可靠传输
阅读量:2429 次
发布时间:2019-05-10

本文共 1017 字,大约阅读时间需要 3 分钟。

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. 保活定时器:当一个连接双方空闲了比较长时间后,该定时器即使超时,从而发送一个报文段来查看通信的另一方是否依然存在。如果对方无应答,则连接中止

转载地址:http://eljmb.baihongyu.com/

你可能感兴趣的文章
Python数据预处理之---统计学的t检验,卡方检验以及均值,中位数等
查看>>
Python GUI 编程tkinter--画五角星和简单的动画制作
查看>>
Python GUI编程之消息传递机制&用户登录
查看>>
Python GUI编程tkinter之菜单详解
查看>>
笔记︱风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
查看>>
MySQL存储引擎之MyISAM与InnoDB区别
查看>>
Python numpy小练习
查看>>
Linux命令英文解释(按英文字母顺序)
查看>>
秋招面试准备-数据库知识
查看>>
数据分析岗-机器学习相关知识
查看>>
2018研究生数学建模成绩分析
查看>>
2018研究生数学建模心路历程
查看>>
分类模型的效果评估
查看>>
秋招-SQL备战练习1(最后的冲刺)
查看>>
秋招-SQL备战练习2
查看>>
秋招-SQL备战练习3
查看>>
Doing Research Needs Efforts
查看>>
利用百度搜索结果爬取邮箱
查看>>
第三周 day3 python学习笔记
查看>>
天池精准医疗大赛——人工智能辅助糖尿病遗传风险预测
查看>>