Skip to content
/ zing Public

A small Zig tool & library to craft and interact with basic network datagrams based on IETF specifications.

License

Notifications You must be signed in to change notification settings

00JCIV00/zing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zing

A small Zig tool for crafting datagrams and interacting with networks, based on IETF specifications.

Overview

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.

Goals

  • 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

Resources

About

A small Zig tool & library to craft and interact with basic network datagrams based on IETF specifications.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages