Network Protocol Dictionary === This is a YAML network protocol dictionary for all (binary based) OSI-Layer 1-4 protocols, eg. Ethernet, IP, TCP, UDP, etc. - What this dictionary should be: - A complete **machine readable** *structure definition* dictionary for all binary based network protocols - Addon: some protocol documentation from wikipedia or RFCs for display use. - A reference for building a network packet from scratch in an application, mostly for applications dealing with network packets. - What it is clearly **NOT**: - Currently: complete. - A replacement for reading RFCs: Dependencies and constraints are **NOT** defined in this dictionary - A source for implementing network stacks Why? ---- I have a project where I want to use a non platform dependent source for network protocol structures so I want to avoid using the defined structures in the OS includes which depend on the operating system used at program execution. Simple, isn't it? How to add a new protocol ---- Requirements: - Python 3.5 - jsonschema - PyYaml - (the old kwalify schemas are still present, but deprecated.) Howto: - Clone. - Check structure-schema.yml. - Write protocol file in ./protocols/osi[layer]/[protocolname].yml. - Validate structure with 'python validate.py -f [path/to/protocolname].yml' or all at once with 'python validate.py --all' - Set up a merge request. - Be happy. How to use this dictionary ---- Currently not recommended, because the project lacks deeper tests than just schema validation. ;) - Clone. - Get a YAML library for your program language. Or get a converter for JSON or XML, to use these markup languages. - Load desired protocol files, or all of them. - Use resulting data structures to build protocol packet structures. This repository will provide examples or useable code snippets for specific programming languages in the future...