了解ack系统的UDP可靠性

时间:2017-11-22 19:13:03

标签: networking network-programming udp

首先,我想解释一下为什么我要实现UDP协议,我这样做有几个原因:

  • 我正在进行一项正在进行的游戏项目。
  • 我需要一个网络项目来实现。
  • 我想了解它是如何完成的,从而有更多的控制权。

我基于这篇文章:

https://gafferongames.com/post/reliability_ordering_and_congestion_avoidance_over_udp/

但是我在“Acks”部分崩溃了,我无法理解传输可靠数据包的方式。我做的是:

忽略我已经实现的虚拟连接id字段(我忽略了具有不同id的包,因此服务器只接受来自授权客户端的包,并且客户端只接收来自服务器的包,因为它已经有ip来过滤it),到目前为止这是包的标题:

[sequence]
[ack]

客户端和服务器脚本中的差异声明(以-1开头,因此在发送第一条消息时计数从0开始):

var seq_local = -1
var seq_remote = -1

客户端A向服务器B发送消息,然后数据包的头部将具有字段“sequence = 0”和字段“ack = 0”,然后B将接收该数据包并检查if是这样的:

if seq_recvPacket> seq_remote:
    seq_remote = seq_recvPacket

并将向客户端发送“确认”消息,如下所示:

sequence = seq_local_server
ack = seq_remote_server

我无法弄清楚ack的使用位置。如果您检查的是“序列”字段。

0 个答案:

没有答案