#协议 #数据包 #网络 #HTTP #数据包 #辅助

packeteer

尝试创建一个 Rust 库,用于程序化分析、服务和处理接收到的协议数据包。

17 个版本

0.5.3 2024 年 7 月 10 日
0.5.2 2024 年 1 月 15 日
0.5.1 2023 年 7 月 17 日
0.4.3 2022 年 4 月 13 日
0.1.4 2022 年 3 月 12 日

#1502网络编程

EUPL-1.2

41KB
775

Packeteer

Packeteer 是一个库,可以程序化地处理协议数据包的结构,以及根据协议生成、构造和解包。

支持的协议

  • HTTP/1.x
  • Gemini
  • FTP
  • DNS

Packeteer 不是什么

  • 一个 TCP/UDP 流处理库
  • 一个服务器
  • 一个协议客户端
  • 可能唯一的办法

lib.rs:

一个数据包操作、生成、解包和构造站。

严肃地说,packeteer 是一个用于帮助程序化分析、服务和处理接收到的协议数据包的 crate。这对于服务器、客户端、代理以及数据包嗅探器、捕获器和分析器都很好。Packeteer 不实现发送或接收请求/响应的能力,也不为您处理流或线程,而是应该在应用程序中使用,以构建数据包,并根据 packeteer 模块定义执行自动化操作。

要将 packeteer 包含到您的项目中,您需要启用所需的模块。例如,如果您需要使用 http1 模块,您需要在您的 Cargo.toml 文件中添加以下内容:

packeteer = { version = "0.4", features = ["http1"] }

可以使用不包含错误修复号的模糊版本号,因为新功能或破坏性更改将导致次要版本号或未来可能的重大版本号的增加。

Packeteer 旨在使用尽可能少的依赖项。Packeteer 使用的依赖项越少,您的项目使用的存储空间就越少。在依赖项方面保持谨慎还可以使编译无限期地加快速度。

使用 http1 模块生成请求的示例

use packeteer::http1::*;

fn main() {
	// generate_request(method, host, location, body)
	// GET requests don't really require bodies.
	let request = generate_request("GET", "example.service", "/api/example_endpoint", "");
	let req_raw = unpack_request(request);

	// Now to send req_raw through a stream to your client!
}

无运行时依赖

功能