陈天 · Rust 编程第一课
陈天
Tubi TV 研发副总裁
23195 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
基础篇 (21讲)
陈天 · Rust 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

29|网络开发(下):如何使用Rust处理网络请求?

P2P聊天应用示例
使用libp2p库
P2P协议连接安全性
P2P网络构建复杂性
解决网络连通性
中心化
Yamux协议
HTTP/2
FTP
HTTP/1.x
TCP/WebSocket
使用TLS构建安全网络
应对网络开发中的问题
Rust网络生态丰富
3. 尝试替换floodsub
2. 阅读libp2p文档
1. 运行libp2p示例代码
Rust处理P2P网络
构建P2P网络
客户端/服务器模型
控制平面/数据平面分离
请求响应
双向通讯
网络是非常不安全的
带宽是有限的
网络的延迟可能会非常大
网络是不可靠的
总结
思考题
P2P网络
网络通讯模型
网络开发中的问题
网络开发(下):如何使用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
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 罗杰
    虽然一直做的后端,控制平台/平台数据分离 我都没了解过,P2P 也只是知道个概念而已。

    作者回复: 这是架构中一个非常重要的思想,不光用在网络协议中。比如 Kubernetes 把工作也分成了控制平面/数据平面。

    2021-11-03
    2
    9
  • 杨学者
    在 *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/abc70764587405a8a0fa5be30c46886c
    2022-09-17归属地:广东
  • Lucifer
    不错,谢谢
    2022-03-28
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部