This repository has been archived on 2020-12-30. You can view files and clone it, but cannot push or open issues or pull requests.
NetworkProtocolDictionary/README.md

51 lines
1.9 KiB
Markdown
Raw Normal View History

2015-01-04 12:21:42 +01:00
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.
2015-01-04 16:30:26 +01:00
- What this dictionary should be:
2015-01-04 16:31:12 +01:00
- A complete **machine readable** *structure definition* dictionary for all binary based network protocols
2015-01-04 16:30:26 +01:00
- 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.
2015-01-04 16:35:28 +01:00
- A replacement for reading RFCs: Dependencies and constraints are **NOT** defined in this dictionary
2015-01-04 16:30:26 +01:00
- A source for implementing network stacks
2015-01-04 12:21:42 +01:00
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?
2015-01-04 12:21:42 +01:00
How to add a new protocol
----
Requirements:
- Python 3.5
- jsonschema
- PyYaml
- (the old kwalify schemas are still present, but deprecated.)
Howto:
- Clone.
2015-01-04 16:40:40 +01:00
- 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'
2015-01-04 17:48:56 +01:00
- Set up a merge request.
2015-01-04 16:40:40 +01:00
- Be happy.
2015-01-04 12:21:42 +01:00
How to use this dictionary
----
2015-01-04 16:40:40 +01:00
Currently not recommended, because the project lacks deeper tests than just schema validation. ;)
- Clone.
2015-02-24 19:53:21 +01:00
- 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.
2015-01-04 16:40:40 +01:00
- Use resulting data structures to build protocol packet structures.
2015-01-04 12:21:42 +01:00
2015-02-24 19:53:21 +01:00
This repository will provide examples or useable code snippets for specific programming languages in the future...