13个不稳定版本 (4个破坏性版本)
0.5.0 | 2022年10月25日 |
---|---|
0.4.0 | 2022年4月16日 |
0.3.1 | 2022年4月10日 |
0.2.3 | 2021年12月7日 |
0.2.0 | 2021年11月19日 |
#23 in #minimum
每月24次下载
用于phantun
30KB
590 行
fake-tcp
一个基于TUN接口、用户空间、异步且高性能的TCP协议栈,支持最小开销的基于数据包的隧道传输。
许可证
版权所有2021 Sun Datong [email protected]
许可协议:Apache License, Version 2.0 <LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0> 或 MIT许可证 <LICENSE-MIT 或 https://opensource.org/licenses/MIT>,任选其一。项目中的文件不得复制、修改或分发,除非符合上述条款。
lib.rs
:
一个基于用户空间的最小TCP数据报协议栈
概述
fake-tcp
是一个可复用的库,使用TUN接口在用户空间实现最小TCP协议栈。它允许程序发送数据报,就像它们是TCP连接的一部分一样。 fake-tcp
已测试能够在各种NAT和状态防火墙中通过,同时完全保留某些期望的行为,如乱序交付和无拥塞/流量控制。
核心概念
fake-tcp
库的核心由两个结构组成。 Stack
和 Socket
。
Stack
Stack
代表一个在第三层运行的虚拟TCP协议栈。它负责:
- TCP主动和被动打开以及握手
RST
处理- 与第三层的TUN接口交互
- 将传入的数据报分配给相应的
Socket
Socket
Socket
表示一个TCP连接。它将标识元组 (src_ip, src_port, dest_ip, dest_port)
注册到 Stack
中,以便可以使用通道将传入的数据包分配到正确的 Socket
。这也是客户端用于发送/接收数据报的接口。
示例
依赖项
~9–20MB
~261K SLoC