博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP具体解释学习笔记--TCP的超时与重传
阅读量:6280 次
发布时间:2019-06-22

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

1.基本概念

TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据。

2.超时时间的測量

要測超时时间,TCP必须要发送一个特别序号的字节和接收包括该字节的确认之间的RTT,可是,确认本身就是有延时的,所以一般有一种简单的測量超时时间的公式

RTO = RB
当中R为随RTT变化而变化的平滑因子

3.拥塞避免算法

前边的博客有写道,当发送端使用慢启动算法时,因为其发送的数据段呈指数增长,因此也非常easy达到网络通道的极限,此时。网络上的路由就会将部分分组丢失,因此TCP又给发送端设置了一种拥塞算法,此算法就是用来解决分组丢失问题的

拥塞算法假定正常情况下分组的丢失率是非常小的低于(1%)。所以当两方出现大量丢失分组现象,则说明网络出现拥堵

拥塞避免算法和慢启动算法一般结合使用,此时须要给发送端维持俩个变量,一个是拥塞窗体cwnd,和一个慢启动门ssthresh。算法过程详细例如以下

(1)对于一个给定的连接,将初始化cwnd为1,和ssthresh为65535字节
(2)TCP输出的数据不能超过接收方给的通告窗体和拥塞窗体的最小值,拥塞窗体是发送方使用的流量控制。通告窗体是接收仿使用的流量控制
(3)当拥塞发生时(超时或收到反复确认),ssthresh就会被设置为当前窗体的一般。即拥塞和通告窗体的最小值
(4)此时我们先进行慢启动,发送的数据段将呈指数增长,非常快便达到了改动后的ssthresh(窗体的一般)的值。此时慢启动将不在以指数的方式增长发送量了,而是每收到一个确认,则发送量就增长1的线性增长

4.高速重传与高速恢复

当我们收到失序的报文段时。TCP需马上产生一个ACK(一个反复的ACK),这个反复的ACK不应该延迟,该ACK是想让对方知道收到了失序的报文段,并告诉对方希望收到的序号

因为我们并不知道一个反复的ACK是由丢失的报文段引起的还是只由又一次排序所引起的,因此我们就略微等待一下,在做推断。当在又一次排序的报文段被处理并产生一个新的ACK之前只可能收到1-2个反复的ACK,假设收到3个以上的ACK就非常可能是报文段丢失了。于是我们就直接重传丢失的报文段,而无须等待超时定时器的溢出(也就是不须要等到超时时间到了才推断丢了)接下来运行的就是拥塞避免算法。这就是高速恢复。

5.按每条路由进行度量

如今较新的TCP实现的路由表项中维持了很多指标,当一个TCP连接关闭时,假设已经发出了足够多的数据来获得有意义的统计资料。且目的节点的路由表项不是一个默认表项。那么下列信息就保存在在路由表项中使用:平滑的RTT,慢启动门限等

6.又一次分组

当TCP重传时,它不一定要重传相同的报文段。相反TCP同意进行又一次分组。而进行发送一个较大的报文段

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

你可能感兴趣的文章
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>
.net中ashx文件有什么用?功能有那些,一般用在什么情况下?
查看>>
select、poll、epoll之间的区别总结[整理]【转】
查看>>
CSS基础知识(上)
查看>>
PHP中常见的面试题2(附答案)
查看>>
26.Azure备份服务器(下)
查看>>
mybatis学习
查看>>
LCD的接口类型详解
查看>>