https://github.com/adrianosela/rdtp
[WIP] A cross OS transport layer service implemented as a daemon process
https://github.com/adrianosela/rdtp
Last synced: 10 months ago
JSON representation
[WIP] A cross OS transport layer service implemented as a daemon process
- Host: GitHub
- URL: https://github.com/adrianosela/rdtp
- Owner: adrianosela
- License: mpl-2.0
- Created: 2020-01-09T20:47:03.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-08-02T19:06:52.000Z (over 4 years ago)
- Last Synced: 2024-06-20T00:37:42.574Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 1.13 MB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rdtp - Reliable Data Transport Protocol
[](https://goreportcard.com/report/github.com/adrianosela/rdtp)
[](https://godoc.org/github.com/adrianosela/rdtp)
[](https://github.com/adrianosela/rdtp/blob/master/LICENSE)
**[IPPROTO_RDTP = 0x9D]**
Specification of a reliable transport layer protocol to be used over IP networks, along a simplistic and modular implementation in Go.
## To-Dos:
* Reliability
* Polish socket dialer
* Implement socket listener
* Implement selective acknowledgements
* Flow Control
* Receiver window in header
## Based on:
* UDP - User Datagram Protocol [[RFC]](https://tools.ietf.org/html/rfc768)
* TCP - Transmission Control Protocol [[RFC]](https://tools.ietf.org/html/rfc793)
## Header Format
```
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Src. Port | Dst. Port |
+--------+--------+--------+--------+
| Length | Checksum |
+--------+--------+--------+--------+
| Sequence Number |
+--------+-----------------+--------+
| Acknowledgement Number |
+--------+-----------------+--------+
| Flags | |
+--------+ |
| ( Data ) |
+ .... +
```
## Important Notes:
The value for the underlying IP header's "Protocol" field must be set to 0x9D (157 -- currently [Unassigned](https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers))
## Over the Wire
Here's a [Wireshark](https://www.wireshark.org/) capture of an RDTP packet over the wire:

(The highlighted bytes are the RDTP header + payload)