您的位置:首页 > 教育 > 培训 > 日照seo优化公司_淮安设计网站_seo网站排名优化软件_实时热点新闻事件

日照seo优化公司_淮安设计网站_seo网站排名优化软件_实时热点新闻事件

2025/3/19 5:04:59 来源:https://blog.csdn.net/m0_63011748/article/details/146313231  浏览:    关键词:日照seo优化公司_淮安设计网站_seo网站排名优化软件_实时热点新闻事件
日照seo优化公司_淮安设计网站_seo网站排名优化软件_实时热点新闻事件

TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而 KCP是为流速设计的(单个数据包从一端发送到一端需要多少时间),以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。TCP信道是一条流速很慢,但每秒流量很大的大运河,而KCP是水流湍急的小激流。KCP有正常模式和快速模式两种,通过以下策略达到提高流速的结果:

RTO翻倍vs不翻倍:

TCP超时计算是RTOx2,这样连续丢三次包就变成RTOx8了,十分恐怖,而KCP启动快速模式后不x2,只是x1.5(实验证明1.5这个值相对比较好),提高了传输速度。

选择性重传 vs 全部重传:

TCP丢包时会全部重传从丢的那个包开始以后的数据,KCP是选择性重传,只重传真正丢失的数据包。

SACK机制,每次ACK时还返回一组标记,告知发送方哪些Segment已经发送了

快速重传:

发送端发送了1,2,3,4,5几个包,然后收到远端的ACK: 1, 3, 4, 5,当收到ACK3时,KCP知道2被跳过1次,收到ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直接重传2号包,大大改善了丢包时的传输速度。

延迟ACK vs 非延迟ACK:

TCP为了充分利用带宽,延迟发送ACK(NODELAY都没用),这样超时计算会算出较大 RTT时间,延长了丢包时的判断过程。KCP的ACK是否延迟发送可以调节。

延迟ACK:TCP为了充分利用带宽,在一些情况下,接收方可能会收到多个数据段。在延迟发送ACK的情况下,接收方可以在一定的小时间窗口内等待或聚合多个数据段的接收,从而一次性发送一个ACK确认多个数据段。这可以减少网络中ACK报文的数量,从而降低网络拥塞。

UNA vs ACK+UNA:

ARQ模型响应有两种,UNA(此编号前所有包已收到,如TCP)和ACK(该编号包已收到),光用UNA将导致全部重传,光用ACK则丢失成本太高,以往协议都是二选其一,而 KCP协议中,除去单独的 ACK包外,所有包都有UNA信息。

非退让流控:

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

抛弃拥塞控制,追求极致速度

TCP的拥塞控制机制(如慢启动、拥塞避免、快速重传等)是为了保证网络公平性和稳定性,但这也让TCP在丢包时表现得过于“怂”。KCP直接抛弃了这些机制,采用更激进的策略,允许用户自定义流控和拥塞控制,甚至可以不控制。这种“莽夫”式的方式让KCP在丢包时依然能快速重传,保持高吞吐量。

更小的协议头开销:

KCP的协议头比TCP更精简,减少了额外的开销。虽然这点对性能提升有限,但在高频率、小数据包场景下,积少成多也能带来一定的优势。

无连接状态,轻量级:

KCP是无连接的,不需要像TCP那样维护复杂的连接状态(如三次握手、四次挥手、滑动窗口等)。这种轻量级的设计让它更适合高频、短连接场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com