经营一个网站要怎么做,html5软件安装视频,公司网站改版建议,爱客crm手机下载TCP是为流量设计的#xff08;每秒内可以传输多少KB的数据#xff09;#xff0c;讲究的是充分利用带宽。而 KCP是为流速设计的#xff08;单个数据包从一端发送到一端需要多少时间#xff09;#xff0c;以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。TCP信…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为了充分利用带宽延迟发送ACKNODELAY都没用这样超时计算会算出较大 RTT时间延长了丢包时的判断过程。KCP的ACK是否延迟发送可以调节。 延迟ACKTCP为了充分利用带宽在一些情况下接收方可能会收到多个数据段。在延迟发送ACK的情况下接收方可以在一定的小时间窗口内等待或聚合多个数据段的接收从而一次性发送一个ACK确认多个数据段。这可以减少网络中ACK报文的数量从而降低网络拥塞。 UNA vs ACKUNA
ARQ模型响应有两种UNA此编号前所有包已收到如TCP和ACK该编号包已收到光用UNA将导致全部重传光用ACK则丢失成本太高以往协议都是二选其一而 KCP协议中除去单独的 ACK包外所有包都有UNA信息。
非退让流控
KCP正常模式同TCP一样使用公平退让法则即发送窗口大小由发送缓存大小、接收端剩余接收缓存大小、丢包退让及慢启动这四要素决定。但传送及时性要求很高的小数据时可选择通过配置跳过后两步仅用前两项来控制发送频率。以牺牲部分公平性及带宽利用率之代价换取了开着BT都能流畅传输的效果。 抛弃拥塞控制追求极致速度 TCP的拥塞控制机制如慢启动、拥塞避免、快速重传等是为了保证网络公平性和稳定性但这也让TCP在丢包时表现得过于“怂”。KCP直接抛弃了这些机制采用更激进的策略允许用户自定义流控和拥塞控制甚至可以不控制。这种“莽夫”式的方式让KCP在丢包时依然能快速重传保持高吞吐量。 更小的协议头开销
KCP的协议头比TCP更精简减少了额外的开销。虽然这点对性能提升有限但在高频率、小数据包场景下积少成多也能带来一定的优势。
无连接状态轻量级
KCP是无连接的不需要像TCP那样维护复杂的连接状态如三次握手、四次挥手、滑动窗口等。这种轻量级的设计让它更适合高频、短连接场景。