29|网络开发(下):如何使用Rust处理网络请求?
陈天
该思维导图由 AI 生成,仅供参考
你好,我是陈天。
上一讲介绍了如何用 Rust 做基于 TCP 的网络开发,通过 TcpListener 监听,使用 TcpStream 连接。在 *nix 操作系统层面,一个 TcpStream 背后就是一个文件描述符。值得注意的是,当我们在处理网络应用的时候,有些问题一定要正视:
网络是不可靠的
网络的延迟可能会非常大
带宽是有限的
网络是非常不安全的
我们可以使用 TCP 以及构建在 TCP 之上的协议应对网络的不可靠;使用队列和超时来应对网络的延时;使用精简的二进制结构、压缩算法以及某些技巧(比如 HTTP 的 304)来减少带宽的使用,以及不必要的网络传输;最后,需要使用 TLS 或者 noise protocol 这样的安全协议来保护传输中的数据。
好今天我们接着看在网络开发中,主要会涉及的网络通讯模型。
双向通讯
上一讲 TCP 服务器的例子里,所做的都是双向通讯。这是最典型的一种通讯方式:
一旦连接建立,服务器和客户端都可以根据需要主动向对方发起传输。整个网络运行在全双工模式下(full duplex)。我们熟悉的 TCP / WebSocket 就运行在这种模型下。
双向通讯这种方式的好处是,数据的流向是没有限制的,一端不必等待另一端才能发送数据,网络可以进行比较实时地处理。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了使用Rust处理P2P网络的关键概念和技术特点。首先,强调了网络应用中需要正视的问题,如不可靠性、延迟、带宽限制和安全性。其次,介绍了网络通讯模型,包括双向通讯、请求响应和控制平面/数据平面分离。此外,还探讨了P2P网络模型及其构建方法,提到了P2P网络的连通性问题,并介绍了构建P2P网络的主流解决方法。最后,指出了P2P协议的连接复杂性和安全性挑战,并提出了P2P网络倾向于使用自己的安全协议或noise protocol来构建安全等级可以媲美TLS 1.3的安全协议。文章内容丰富,涵盖了P2P网络的关键概念和实际应用,对于对网络开发感兴趣的读者具有一定的参考价值。同时,提供了使用Rust处理P2P网络的示例代码,通过实际代码演示了P2P网络的节点发现和消息传播过程,为读者提供了实际操作的参考。整体而言,本文内容丰富,对于想要了解Rust处理网络请求的读者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《陈天 · Rust 编程第一课》,新⼈⾸单¥68
《陈天 · Rust 编程第一课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 罗杰虽然一直做的后端,控制平台/平台数据分离 我都没了解过,P2P 也只是知道个概念而已。
作者回复: 这是架构中一个非常重要的思想,不光用在网络协议中。比如 Kubernetes 把工作也分成了控制平面/数据平面。
2021-11-0329 - 杨学者在 *nix 操作系统层面 怎么回事,敏感字被和谐了?还是说linux/unix?2023-08-21归属地:上海
- RG文章里面提到一个stun,有一个栈是webrtc,是一系列的技术的集合,包括网络、多媒体之类的很多东西,用来点对点的做多媒体传输。同样的也可以用来做文件传输,比如说snapdrop。webrtc的好处在于浏览器可用,可以非常方便的构建基于web的p2p应用2023-02-06归属地:湖北
- 进击的Lancelot思考题:将 floodsub 替换成 gossipsub 的实现: https://gist.github.com/rust-play/abc70764587405a8a0fa5be30c46886c2022-09-17归属地:广东
- Lucifer不错,谢谢2022-03-28
收起评论