"Oh, and don't forget to account for reflection, refraction, dispersion, etc. as the waves propagate around.)"

See my post

http://news.ycombinator.com/item?id=2820131

For your "reflection, refraction, dispersion, etc.", in principle the 'system' from each transmitter to each receiver is both time invariant and linear which means that can account for the effects of "reflection, refraction, dispersion, etc." just by applying a 'transfer function' (below). Yes, need a different transfer function for each pair of transmitter and receiver. Apparently the 'test data' that is sent is to determine the transfer functions.

"Signal"? A 'signal' is just a real valued function of the real variable time. So, say that for time t s(t) is such a signal. To keep this simple but still powerful enough for practice, suppose time t is in only a finite interval. In this real problem the length of the interval is likely a small fraction of one second.

"Time invariant"? Over an interval short enough that physical movement, the weather, birds, etc. don't significantly change the situation. In this real problem, we may be asking that the system remain time invariant only over a small fraction of a second.

"Linear": If send through signal x and receive signal r(x) and send through signal y and receive signal r(y), then for numbers a and b when send through signal ax + by receive signal ar(x) + br(y). Such linearity should hold even with lots of "reflection, refraction, dispersion, etc.".

So this linearity is just another example of classic 'linearity' that math is awash in from linear transformations in linear algebra, linearity of differentiation and integration in calculus, 'linear operators' as in much of mathematical physics, much of 'functional analysis' with Hilbert and Banach spaces, the various 'representation' theorems for linear operators, etc. Or, as in G. Simmons, the twin pillars of mathematical analysis are linearity and continuity.

"Transfer function"? Suppose we send signal u(t) and receive signal s(t). Take the Fourier transform of signal u(t). That is, convert u(t) to its 'frequencies'. If u(t) is a sound from one key on an organ, then the Fourier transform gives essentially just the sine waves at the various 'overtones' of the organ note. We are good at understanding such overtones if only because the human ear does some work close to Fourier transforms. Say that the Fourier transform of u(t) is U(w) for frequencies w. Or, U(w) is is the 'spectrum' of u(t).

Now, for our time invariant linear system, say that its 'transfer function' is H(w) for frequencies w. Say that the signal that is received is s(t) with Fourier transform S(w). Okay, presto, for each frequency w,

S(w) = H(w) U(w).

That is, at each frequency, just multiply the input U(w) by the the value of the transfer function H(w) at frequency w and get the output S(w).

Then the final signal received s(t) is the inverse Fourier transform of S(w). Cute. Signals in electronic engineering are just awash in this relationship.

The context of Shannon's theorem is quite different from that of DIDO. If want to compare with Shannon's theorem, then DIDO raises an issue because as the number of transmitters and receivers and total 'bandwidth' increase, the total transmitted power will have to increase, but a big point of Shannon's work was that the power is limited. That is, Shannon understood that could push through all the data wanted if could just increase power arbitrarily.

Another big point in Shannon's work was 'noise' on the communications channel. Again, in principle, with no noise, can push through all the data you want even with limited power.

So, here's Shannon's work in a nutshell as I remember it from years ago without review (take with a shovel full of salt): As I did in

http://news.ycombinator.com/item?id=2820131

consider the problem over a finite interval of time and convert to discrete points in time and in frequency. Are told the maximum power can send. And as the signal travels, a 'noise' signal gets added.

Due to the finite power, all the signals can send are in just a sphere (in a finite dimensional space of appropriate dimension). Then due to the noise, what is received is the signal sent plus the noise. So, in effect, due to the added noise, what is received is a point in a (small) sphere around the signal that would have been received without the noise.

So, all the signals that can be received are in a big sphere determined by the power. And each signal that is received is in a small sphere of its own inside the big sphere.

But want the separate signals to be distinguishable. So, for any two signals sent, want their small spheres at the receiver not to overlap. So, the number of different signals that can be sent is the number of small spheres that will fit, without overlap, inside the big sphere at the receiver.

So, net, we're talking about the number of little balls that will fit inside a big ball.

Basically that's it.

Likely more details are in

http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf