This is a big subject in digital radio systems, like digital cellular. The jargon that describes the problem is "channel contention" and there are many schemes to solve contention problems, some very complex. Textbooks have been written on this one subject alone. As you realize, the need for a contention control scheme depends on the amount of traffic that will be put on the channel. If there is little traffic, you use "pure aloha" contention, which is a fancy phrase that means no scheme at all. Just go ahead and transmit and hope there are no collisions. Its best to have some way of checking that the info got through and if there is a collision, you try again. This is the value of the "acknowledgment". Just adding this idea of an acknowledgement to each packet transmitted is very powerful. If you don't get an "ack" then you transmit the packet again. Transmit information in little packets and only retransmit the packets that were lost, not all of them.
You can add complexity by adding things like:
- carrier sensing (a bit like ethernet uses, where you sense when there is traffic on the channel and wait your turn)
- busy bit. signalling on the output data stream flags the busy/not busy status of the channel
and so on.
Or, you can start dividing the channel up into time slots, one slot per user, and create a TDMA system. Or you can divide the channel up into sub-channels in frequency and create an FDMA system. Or you can share the channel using CDMA or similar spread spectrum ideas.