10 breaking releases
0.18.0 | Jul 7, 2024 |
---|---|
0.14.0 | Jun 9, 2024 |
0.7.0 | Feb 25, 2024 |
#2095 in Network programming
Used in 6 crates
(via nex)
310KB
7K
SLoC
nex
Cross-platform low-level networking library in Rust
Overview
nex
is a Rust library that provides cross-platform low-level networking capabilities.
It includes a set of modules, each with a specific focus:
datalink
: Datalink layer networking.packet
: Low-level packet parsing and building.packet-builder
: High-level packet building.socket
: Socket-related functionality.
Upcoming Features
The project has plans to enhance nex with the following features:
- More Protocol Support: Expanding protocol support to include additional network protocols and standards.
- Performance Improvements: Continuously working on performance enhancements for faster network operations.
Usage
To use nex
, add it as a dependency in your Cargo.toml
:
[dependencies]
nex = "0.18"
Using Specific Sub-crates
You can also directly use specific sub-crates by importing them individually.
nex-datalink
nex-packet
nex-packet-builder
nex-socket
If you want to focus on network interfaces, you can use the netdev.
Privileges
nex-datalink
uses a raw socket which may require elevated privileges depending on your system's configuration.
Execute with administrator privileges if necessary.
for Windows Users
Please note that in order to send and receive raw packets using nex-datalink
on Windows, Npcap is required.
-
Install Npcap, making sure to check Install Npcap in WinPcap API-compatible Mode during the installation.
-
Download the Npcap SDK. Add the SDK's /Lib/x64 (or /Lib) folder to your LIB environment variable.
for macOS Users
On macOS, managing access to the Berkeley Packet Filter (BPF) devices is necessary for send and receive raw packets using nex-datalink
.
You can use chmod-bpf to automatically manage permissions for BPF devices.
Alternatively, of course, you can also use sudo
to temporarily grant the necessary permissions.
Build time requirements for optional feature
The cryptography provider for nex-socket
's optional tls-aws-lc
feature use aws-lc-rs
. Note that this has some implications on build-time tool requirements, such as requiring cmake on all platforms and nasm on Windows.
You can use ring
as the cryptography provider (without additional dependencies) by specifying the tls
feature.
Acknowledgment
This library was heavily inspired by pnet
, which catalyzed my journey into Rust development.
I am grateful to everyone involved in pnet
for their pioneering efforts and significant contributions to networking in Rust.
Additionally, thank you to all contributors and maintainers of the projects nex
depends on for your invaluable work and support.
Dependencies
~3–11MB
~121K SLoC