首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >适用于低延迟、单包消息传递的网络协议

适用于低延迟、单包消息传递的网络协议
EN

Software Engineering用户
提问于 2020-06-30 21:23:12
回答 1查看 584关注 0票数 -1

在低延迟是关键目标的安全支付网络中,哪些是合适的传输和应用层协议?

在这里,“低延迟”意味着在当前网络技术的情况下,尽可能快地完成加密的事务,网络比特所花费的时间要短得多,包括所有往返旅行,但不包括人类活动。假定距离不超过1,000英里(1609公里)。

在这种情况下,消息通常占用1 KB大小的单个数据包。这将是轻微的突发事件,离散的交易将触发短暂的流量,而大多数客户将在大多数时间闲置。

可靠性是很重要的,因为“可靠性”意味着99%的会话在第一次尝试时就成功了。在这个阶段,可靠性并没有提到它在将网络协议描述为“可靠”时的常用用法--我不想通过在传输层走私诸如可靠性之类的实现细节来偏袒这个过程.

在传输层,我知道TCP、UDP、SCTP、可靠的UDP、DCCP,以及一些我还不了解的东西,比如Enet。

在应用层,我知道HTTPS/TLS/HTTP/2和QUIC / HTTP/3 (我认为QUIC可能折叠一些层并简化一些事情,所以它可能也包含传输层)。

你有什么推荐的?你认为在典型的网络环境下,UDP能满足可靠性指标吗?也许UDP封装在应用层的可靠性中,比如QUIC?或者你认为TCP可以达到延迟目标?

如果我们假设一个私有网络,任何协议都可以通过中间框之类的方式获得,那么您的建议会改变吗?我对SCTP很感兴趣-有什么想法吗?

非常感谢。

EN

回答 1

Software Engineering用户

发布于 2020-07-08 10:07:30

为了尽可能低的延迟,您没有机会与服务器进行来回对话。你可以发送一个包裹,就这样。要提高可靠性,您可以发送10或20个数据包,并希望至少有一个不会被丢弃。

其他任何事情都不是低延迟。所有协议--包括QUIC、TCP、SCTP、Enet和您自己的自定义协议--通过超时和重试检测丢弃的数据包。这意味着你需要等待超时。这意味着有额外的延迟。

但是,你说了1秒。1秒实际上不是很低。你可以在1秒内向世界各地发送3次数据包。因此,它归结为设置一个短暂的重试超时和尽量减少往返。

在最坏的情况下,当你的包裹必须周游世界时,额外的往返旅行是非常明显的。它们每只大约需要0.3秒。但你说最大距离大约是1000英里。一个包走1000英里并返回(通常)不需要0.3秒,所以你可以使用一个低超时,比如100毫秒。这将使程序超时并在达到1秒限制之前重新发送数据包几次。服务器需要做好处理重复数据包的准备,当然,如果数据包需要超过100 to才能到达或返回。

请注意,无论您是用TCP、QUIC还是UDP实现这一点,基本原理是相同的。您可能无法使用TCP的唯一原因是操作系统不允许您设置那么低的超时,或者握手的额外往返是不可接受的。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/412210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档