Open EmmaKnijn opened 1 year ago
First draft looks good, just a few minor things.
There should be a field that uniquely identifies a packet as following this spec. With the addition of that, the field names could be simplified into station
, and title
.
There should be a field that uniquely identifies a packet as following this spec. What should be the field name? Something like
spec
?
protocol
Like that?
Should we make clients reject packets from servers with an invalid protocol
field in order to be compliant?
Should we make clients reject packets from servers with an invalid protocol field in order to be compliant?
It would create more stability, I'm expecting to expand this someday in another standard so that should be good
I think we're ready right?
I think we're ready right?
Slow down, speedy. RFCs take time...
Wait for more feedback.
it does not appear to have a standard port assignment are we expected to listen on all modem channels for radio messages or a specifc standard port
I mean on SC3 I use the range 2048-3072 for radio, but idk if thats a standard thats supposed to be there yk
That should do, ports 2048-4096 should allow for plenty radio stations
My biggest concern with this is that there is no validation whatsoever. Anyone could easily pretend to be the radio station and send whatever they want. ECC and private/public key cryptography could be used to solve this, however that brings up the problem: how do we get the public key to the client? HTTP could work, but then it's not quite as seamless.
My biggest concern with this is that there is no validation whatsoever. Anyone could easily pretend to be the radio station and send whatever they want. ECC and private/public key cryptography could be used to solve this, however that brings up the problem: how do we get the public key to the client? HTTP could work, but then it's not quite as seamless.
Possibly by sending the public key to the client in the packet with the buffer stuff? This seems the most reasonable in my opinion.
Possibly by sending the public key to the client in the packet with the buffer stuff? This seems the most reasonable in my opinion.
This is still easily spoofable, anyone could send their own message with their own public key. You'd have to distribute it via HTTP, disk, or some other medium. It can't be sent over modem.
This comment was modified by @tomodachi94 to fix the block-quote formatting.
Possibly by sending the public key to the client in the packet with the buffer stuff? This seems the most reasonable in my opinion. This is still easily spoofable, anyone could send their own message with their own public key. You'd have to distribute it via HTTP, disk, or some other medium. It can't be sent over modem.
Nice reply fail first of, but yeah I did not think of that.
by standard port i mean a default port that all servers would use ex: ssh is default to port 20 http is 80 telnet is 19 gopher is port 70 etc... i thought that mutiple radios could use the same port, and just use a diffrent id for each station therefore there is only one port needed for radio (current standard is like if SSH had every server within portrange 2000-4000)
and personally the thing i dont like is it does not contains what happens if a server were to transmit early and what if a client joins mid-song, is the client expected to wait or ... i propose a packet ID system packets count UP, thatway clients can keep watch for the "next packet" and if it recieves packet 0 then we know that the next song has startd and we can reset the counter to 0 and also a server-bound packet to request re-send latest audio packet (in the case a client connects mid-song)
it does not appear to have a standard port assignment are we expected to listen on all modem channels for radio messages or a specifc standard port
Having unique channel numbers is a good thing in this case, as channels are broadcast to all listening computers, so having them all on one channel will cause a lot of noise and potentially lag/CPU use. The channel number should be given to the users, or scanned for in some cases. If we add discovery, then we will definitely need one channel for that.
Some code examples would be nice too, especially basic clients.
I'll also note that this currently violates CCSMB-1 by not including examples. It also needs some language improvement to have a professional tone.
If we add discovery, then we will definitely need one channel for that.
Discovery is definitely a good idea imo
Some code examples would be nice too, especially basic clients.
I'll work on that once it's pretty much set in stone
It also needs some language improvement to have a professional tone.
I agree
My biggest concern with this is that there is no validation whatsoever. Anyone could easily pretend to be the radio station and send whatever they want.
I honestly don't know if this is fixable over CC, if you compare it to real life, anyone with a Pi can transmit over FM
and personally the thing i dont like is it does not contains what happens if a server were to transmit early and what if a client joins mid-song, is the client expected to wait or ... i propose a packet ID system packets count UP, thatway clients can keep watch for the "next packet" and if it recieves packet 0 then we know that the next song has startd and we can reset the counter to 0 and also a server-bound packet to request re-send latest audio packet (in the case a client connects mid-song)
Packets are up to 2.7s long, It would take like 6 seconds at max to get a solid connection
@EmmaKnijn @MCJack123 what if stations broadcasted some information like station name, channel number etc over a specified channel every, say, 15 seconds, and had a specific range of channel IDs that are specified for radio but aren't hard coded?
what if stations broadcasted some information like station name, channel number etc over a specified channel every, say, 15 seconds, and had a specific range of channel IDs that are specified for radio but aren't hard coded?
I'd rather make it be a request-response system - the client sends a request for servers on a standardized channel, and all servers respond with their names/channel number. Broadcasting to nobody is just wasted CPU time.
You have a lot of feedback to work with here, and a fair bit of work to do. I would also request that do not make tons of GitHub comments for responding, when you can quote multiple messages in one message.
cc @EmmaKnijn
I am all for the idea for server discovery. A client sends a message on a specific channel, and all stations reply on that channel with names / channel.
I am not sure how I feel about encryption or signing of the radio. Afaik it would take valuable time to verify this before playing the audio?
Added a bunch of things, feel free to have another look
Still a lot of unresolved conversations here. Not ready for merge.
Alright, I iterated again. Feel free to have another look.
Here is CCSMB-5, suggestions are welcome!