【TCP保持可靠性的措施】

一、序列号、确认应答、超时重传

数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据帧,并且确认序号会说明它下一次需要接收的数据序列号。如果发送方迟迟未收到接收方的确认应答,那么可能发送的数据帧丢失,也可能是确认应答丢失,会触发发送方的超时重传机制。

二、窗口控制与高速重发控制/快速重传(重复确认应答)

TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内,不用一定等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值,如果不使用窗口控制,每一个没收到确认的数据都需要重传。
使用窗口控制,如果数据段1001-2000丢失,后面数据每次传输,确认应答都会不停地发送序号为1001的应答,表示我要接收1001开始的数据,发送端如果收到3次相同应答,就会立刻进行重发;但还有种情况就是数据收到了,但是有的应答丢失了,这种情况不会进行重发,因为发送端知道,如果是数据段丢失,接收端会不停地发送提醒。

三、拥塞机制

如果把窗口定得很大,发送端连续发送大量的数据,可能会造成网络的拥堵,甚至造成网络的瘫痪,所以TCP为了防止这种情况,设置了拥塞机制。

慢启动:定义拥塞窗口,一开始将窗口大小设为1,之后每次收到确认应答(经过一个RTT),将拥塞窗口*2;

拥塞避免:设置慢启动阈值,一般开始都设为65536.拥塞避免是指当拥塞窗口大小达到这个阈值,拥塞窗口的大小不再指数上升,而是以加法上升,即每次收到一个确认应答,拥塞窗口就+1,以此来避免拥塞;

将报文段的超时看作拥塞,则一旦发生报文段超时,我们就需要将阈值设为当前窗口的一半,并将窗口设为初值1,然后重新进入慢启动过程;

快速重传:在遇到3次重复确认应答(高速重发控制)时,代表收到了3个报文段,但是这之前的1个段丢失了,便对它立即进行重传。然后先将窗口阈值设为当前窗口的一半,将窗口大小设为慢启动阈值+3的大小。这样可以实现:在TCP通信时,网络吞吐量呈现逐渐的上升,并且随着拥堵来降低吞吐量,再进入缓慢上升的过程,网络不会轻易发生瘫痪。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值