TCP如何实现可靠传输、UDP实现可靠传输之KCP协议

本文深入探讨了TCP实现可靠传输的机制,包括ACK、序号、重发、重排、窗口和流量控制以及连接管理和拥塞控制。同时,介绍了KCP如何利用UDP实现高效可靠传输,如不翻倍的RTO、选择性重传、快速重传、非延迟ACK、UNA+ACK和非退让流控制。KCP通过这些策略在带宽浪费10%-20%的情况下,达到比TCP快30%-40%的传输速度。
摘要由CSDN通过智能技术生成

TCP如何实现可靠传输

1. ACK机制

每发送一帧TCP报文,发送方都会收到接收方的ACK应答包,告知发送方接收方已经收到完整的报文。ACK信息存储在TCP报文中。

2. 序号机制

每一帧报文中都含有序号,TCP三次握手时发送同步包时会将服务端和客户端的序号进行同步。

3. 重发机制GBN

接收方会以累积响应的方式,来确认收到了那些序号的TCP报文,并向接收方发送对应序号的ACK应答包。如果发送方没有收到接收方返回来的ACK应答包,并且超过了超时时间RTO,发送方会选择序号最小的TCP报文开始重发,后面的报文也会重发,这是GBN(GO BACK N)重发机制。并且超时时间RTO会随着丢包次数成倍增加,RTO = RTO * 2。

4.重排机制

TCP采用的的时GBN模式发送数据,即一次性发送一组TCP序列,一组序列包含多个TCP报文,一组一组发送的TCP报文在网络上并不能按次序从发送方到达接收方,于是出现了重排,即到达接收方会自动按顺序对TCP报文进行排序

5.窗口机制

发送方和接收方都会维护一个数据帧的序列发送方的窗口大小由接收方所确定,数据从发送方到达接收方时处于第一个位置就是窗口,窗口可以控制发送速度,以免接收方的缓冲区不够大,同时控制流量避免拥塞
发送方会根据应答报文中接收方的接收窗口大小来调整发送窗口(拥塞窗口)的大小,而接收窗口的大小并不是固定的,是根据动态算法调整的。通常接收窗口>=发送窗口。

6.流量机制

发送方和接收方的速率不一定相同,所以可能会导致接收方接收缓存区数据满了,会将发送来的数据扔弃。所以接收方每次收到数据之后会将自己剩余窗口大小通知给发送方,发送方会根据对方的窗口大小来判断是否发送数据。如果发送方得知对方窗口大小为0时,会开启一个定时器,当定时到达时会再次发送数据。

7.连接管理

参考https://blog.csdn.net/u010853261/article/details/82085738

8.拥塞控制

涉及到拥塞控制算法:慢启动和快恢复。纵坐标表示发送窗口,横坐标表示发送次数。
在这里插入图片描述

KCP如何利用UDP来实现可靠传输

UDP协议报文格式UDPKCP以10%-20%的带宽浪费换取比TCP快30%-40%的传输速度。

1. RTO不翻倍

在前面说到接收方超过超时等待时间之后,会将超时等待时间RTO进行翻倍,当出现多次丢包会将等待时间延长非常快,降低传输速率,所以KCP快速模式下将第二次RTO乘1.5,即RTO = RTO*1.5。

2. 选择性重传

在TCP下,当一组数据中的某个序号丢包之后,接收方会让发送方会将该序号以及后面序号的TCP报文全部重新发送,即全部重传。而KCP则会选择性重传,只重传丢失的TCP报文。

3. 快速重传

当某个序号包n在接收时被跳过了两次,即收到了第n+1、第n+2个包,但第n个包未收到,就会马上通知发送方马上重传第n个包,改善了重传速度。

4. 非延迟ACK

在TCP中使用的时延迟ACK,即发送一序列包后,再返回ACK,增大了频带利用率,但降低了速度。所以在KCP中可以选择是否延迟发送ACK应答包

5. UNA + ACK

ARQ模式下有两种响应方式1.UNA:此前所有的包都已经收到;2.ACK该编号的包已经收到。光用UNA会导致重传,光用ACK则丢包成本高,TCP是二选一。而KCP使用的是,单独的包使用ACK外,其余的用UNA

6. 非退让流控制

KCP正常模式同TCP一样使用公平退让法则,即发送窗口大小由:发送缓存大小接收端剩余接收缓存大小、丢包退让及慢启动这四要素决定。但传送及时性要求很高的小数据时,可选择通过配置跳过后两步,仅用前两项来控制发送频率以牺牲部分公平性及带宽利用率之代价,换取了开着BT都能流畅传输的效果。

KCP源码框架

源码框架

源码git clone

git clone https://github.com/skywind3000/kcp

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fallsom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值