Start working on ethermess.7

This commit is contained in:
Juhani Krekelä 2019-07-17 00:06:43 +03:00
parent 7acacd1ec9
commit 5e86db7155
1 changed files with 102 additions and 0 deletions

102
ethermess.7 Normal file
View File

@ -0,0 +1,102 @@
.Dd July 16, 2019
.Dt ETHERMESS 7
.Os
.Sh NAME
.Nm EtherMess
.Nd messaging protocol for bare Ethernet
.Sh DESCRIPTION
.Nm
is a protocol for direct messaging over raw Ethernet frames.
.Pp
The structure of an Ethernet frame containing an EtherMess packet is as
follows:
.TS
allbox;
lb lb lb lb
l l l l
^ l l l
^ l l l
l l l l
^ l l l
l l l l
l l l l.
Part Field Length (B) Contents
Ethernet header Destination 6 Recipient's MAC
Source 6 Sender's MAC
EtherType 2 0xDA7A
EtherMess header Version 1 0x00
Packet type 1 (defined below)
Payload 0 - 1494 (depends on packet type)
Padding 0 - 1494 0x00
.TE
.Pp
Padding may always be present, and it can be any length that fits into the
Ethernet frame after the headers and the payload.
Only requirement for padding is that it has to be all zero bytes.
.Pp
NOTE: Frame check sequence is not present in the table above, as at least
on Linux if you read and write raw Ethernet frames using
.Xr packet 7
it gets stripped off and added by the lower level drivers.
.Ss Packet type
.Bl -tag -width Ds
.It Speak version (0x00)
.TS
allbox;
lb lb lb
l l l.
Field Length (B) Contents
Version 1 EtherMess protocol version
.TE
.Pp
Tells the recipient to speak the given version of the protocol.
Should be generated whenever you receive an EtherMess packet with a version
you don't speak.
.It Status request (0x01)
Requests the recipient to tell its status and nick.
Upon receiving this packet, a status packet should be sent to the sender.
.It Status (0x02)
.TS
allbox;
lb lb lb
l l l.
Field Length (B) Contents
Status 1 (defined below)
Nick length 1 Length of the nick field in bytes
Nick 0 - 255 Nick encoded as utf-8
.TE
.Pp
Informs the recipient about the current status and the nick of the sender.
.Pp
Allowed values for the status field are:
.Bl -tag -width Ds
.It 0x00
Available
.It 0x01
Unavailable
.It 0x02
Offline
.El
.Pp
The nick field must contain valid utf-8.
That is, it may not contain overlong encodings, codepoints over U+10FFFF,
or surrogate pairs.
.Pp
Additionally, the nick may not contain any non-characters (U+xxFFFE,
U+xxFFFF, U+FDD0 - U+FDED), C0 control characters (U+00 - U+1F), C1 control
characters (U+80 - U+9F), or the codepoints U+2028 LINE SEPARATOR and
U+2029 PARAGRAPH SEPARATOR.
.Pp
If the message has a status that is not recognized or the nick is not valid
utf-8 or contains disallowed codepopoints, the message must be ignored.
.It Msgid request (0x03)
<>
.It Msgid (0x04)
<>
.It Message (0x05)
<>
.It ACK (0x06)
<>
.El
.Sh SEE ALSO
.Xr ethermess 1