time-division multiplexing
Picture several people who must share one microphone. Instead of giving each a different pitch to speak at, you give each a turn: speaker one talks for a moment, then speaker two, then three, then back to one — round and round, fast enough that it feels like everyone is heard at once. Time-division multiplexing shares a single medium this way: each signal gets the entire channel, but only during its own brief, repeating time slot.
Mechanically, a multiplexer rotates through the inputs, taking a small chunk from signal 1, then signal 2, then signal 3, and so on, and interleaves these chunks into one fast stream sent down the shared link. A synchronized demultiplexer at the far end peels the chunks back apart in the same order, delivering each to its destination. Because the slots come around predictably, the receiver always knows which slot belongs to whom. In classic synchronous TDM, each input gets a fixed slot every cycle whether it has data or not; statistical TDM improves on this by handing idle slots to whoever actually has something to send.
TDM uses the full bandwidth of the channel but only for a sliver of time per user, exactly the opposite of FDM, which uses a sliver of bandwidth all of the time. The telephone network's digital backbone (T1/E1 carriers) is the classic TDM system, packing many voice calls into one line by slot. Synchronous TDM's weakness is wasted empty slots when an input is idle; this is why packet switching, which lets traffic share a link on demand rather than by rigid pre-assigned slots, eventually won out for general data.
A T1 line carries 24 phone calls on one pair of wires by giving each call one 8-bit slot, 8,000 times a second. Call 1's bits, then call 2's, ... up to call 24's, then repeat — each call effectively gets 64,000 bps out of the shared link.
TDM: each user briefly owns the whole channel in turn — the time-mirror of FDM.
Synchronous TDM reserves a slot for each user even when they send nothing, so empty slots waste capacity. Packet switching avoids this by letting any traffic use the link whenever it has data, rather than waiting for a fixed slot.