天天看点

UDP可靠传输协议QUIC

1.如何做到可靠性传输

a.ACK机制(应答机制)(延迟ACK和非延迟ACK,和ARQ中的累积确认是一回事吗?)

b.重传机制 重传策略

c.序号机制 3 2 1→ 2 3 1

d.重排机制 2 3 1→ 3 2 1

e.窗口机制(流量控制)

①窗口探测(当接收方缓存已满,发送方启动一个定时器,每隔一段时间发送窗口探测去询问接收方有没有缓存空间,打听是否可以发送数据,如果可以,接收方就告诉它此时的接收窗口大小,如果接收窗口大小还是为0,则发送方再次刷新启动定时器)

②当接收方处理好数据,接收窗口win>0,接收方发送通知报文通知发送方可以继续发送数据

2.UDP与TCP,我们如何选择

3.UDP如何可靠,KCP协议在哪些方面有优势(以10%-20%带宽浪费的代价换取了比TCP快30%-40%的传输速度)

  • 延迟ACK vs 非延迟ACK(TCP 为了充分利用带宽,延迟发送ACK(NODELAY都没有),这样超时计算会算出较大RTT时间,延长了丢包时的判断过程。KCP的ACK是否延迟发送可以调节)
  • UNA vs ACK+UNA(在KCP协议中,除去单独的ACK包外,所有包都有UNA信息)
  • 非退让流控(可以配置→udp可控),发送窗口大小由:发送缓存大小、接收端剩余接收缓存大小、丢包退让及慢启动这四要素决定。但传送及时性要求很高的数据时,可选择通过配置跳过后两项,仅用前两项来控制发送频率。以牺牲部分公平性及贷款利用率的代价,换取开着BT都能流畅传输的效果。

UDP-KCP实时性 > TCP实时性

KCP的带宽效率能否比TCP更好?

  • 非退让流控不断尝试发送数据时,有效包不多(拥塞的情况下)
  • 每个包都应答,也占用一定的带宽

所以KCP的带宽效率没有TCP的高

4.kCP协议精讲(重点讲解)

kcp名词

UDP可靠传输协议QUIC
UDP可靠传输协议QUIC

kcp会话请求机制

5.QUIC(快速UDP传输)时代是否已经到来

DNS查询目的:采用UDP,发送域名,返回域名ip,为什么不用TCP:①考虑实时性(tcp还需三次握手,四次挥手),②考虑资源

UDP可靠传输协议QUIC

udp和tcp比较,tcp有序列号字段,udp没有

ARQ(Automatic Retransmission reQuest 自动重传请求)协议

  1. 停等协议(stop and wait)
  2. 回退n帧(go-back-n GBN)协议(①检查发送窗口是否已满②累积确认③超时重传已发送但未被确认的分组)
  3. 选择重传(selective-repeat)(与GBN不同,SR的每个分组都有独立的计时器)

TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。

RTO(Retransmission TimeOut)即重传超时时间

RTT(Round-Trip Time)往返时延

RTO >= RTT*1.5倍以上

UDP可靠传输协议QUIC

RTT = T1+T2+T3

继续阅读