A small Zig tool for crafting datagrams and interacting with networks, based on IETF specifications.
This project is an experiment to learn more about the basics of how network datagrams (Frames, Packets, and Segments/UDP Datagrams) work by coding parts of the IETF spec in Zig. This is a continuation of packt-lib, a similar project written in Kotlin. I've moved to Zig to help myself understand the lower level intricasies of networking and bit/byte manipulation. Optimally, the tool will allow users to manipulate network directly through the library, a DSL (.json, .toml?, and .zon?), or an interactive shell.
- Replicate Basic Networking Headers:
- IP
- ICMP
- UDP
- TCP
- Ethernet
- Replicate Basic Networking Addresses:
- IPv4
- IPv6
- MAC
- Add data to Networking Headers to create Datagrams
- Craft & Send Datagrams on an interface:
Datagram | Layer | Craft | Send |
---|---|---|---|
Ethernet | 2 | Y | Y |
WiFi | 2 | Y | N |
Bluetooth | 2 | N | N |
IP | 3 | Y | Y |
ICMP | 3 | Y | Y |
ARP | 3 | Y | Y |
UDP | 4 | Y | Y |
TCP | 4 | Y | Y |
-
Implement Sending a Stream of Datagrams
-
Implement Receiving Datagrams
-
Implement Basic Connection Protocol Handling
- ICMP
- ARP
- TCP
-
Network Scanning tools
-
File Transfer tools