1.基本概念
TCP之所以可以安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据。
2.超时时间的测量
要测超时时间,TCP必须要发送一个特别序号的字节和接收包含该字节的确认之间的RTT,但是,确认本身就是有延时的,所以一般有一种简单的测量超时时间的公式
RTO = RB
其中R为随RTT变化而变化的平滑因子
3.拥塞避免算法
前边的博客有写道,当发送端使用慢启动算法时,由于其发送的数据段呈指数增长,因此也很容易达到网络通道的极限,此时,网络上的路由就会将部分分组丢失,因此TCP又给发送端设置了一种拥塞算法,此算法就是用来解决分组丢失问题的
拥塞算法假定正常情况下分组的丢失率是非常小的低于(1%),所以当双方出现大量丢失分组现象,则说明网络出现拥堵
拥塞避免算法和慢启动算法一般结合使用,此时需要给发送端维持俩个变量,一个是拥塞窗口cwnd,和一个慢启动门ssthresh,算法过程具体如下
(1)对于一个给定的连接,将初始化cwnd为1,和ssthresh为65535字节
(2)TCP输出的数据不能超过接收方给的通告窗口和拥塞窗口的最小值,拥塞窗口是发送方使用的流量控制,通告窗口是接收仿使用的流量控制
(3)当拥塞发生时(超时或收到重复确认),ssthresh就会被设置为当前窗口的一般,即拥塞和通告窗口的最小值
(4)此时我们先进行慢启动,发送的数据段将呈指数增长,很快便达到了修改后的ssthr