Flow Control and Shared Media Access are related topics - goals are similar, but solutions differ, since flow and congestion control operate across multiple hops (as well as possibly hop by hop) and Media Access control schemes typically operate on a single hop and on a single technology, to which they are heavily optimised.
One simple difference then is that on a single technology, we can control the schedule and the MAC at the same time, whereas in the Internet in general, we have to put up with heterogeneity in the schedule in forwarding devices.
Fairness of TCP congestion control is usually defined by Raj Jain's equation
[(sum of rate_i)^2] / [n*(sum (rate_i^2))]
Efficiency (max goodput) - Aloha gives best performance under load where Poisson arrival (i.e. independent random arrivals) are such that throughput is 18.1% - you can work this out - if there are lots of sources sending, then if they send lower rate than this, you get less throughput and if they send higher you get more collisions, so you can figure out the mean rate for this best case (excercise for the reader:) for a given mean Poisson arrival and chance that no other node sends at same time (not 1, nor 2,3...)
slotting things makes it better
if the delay is low, listen before send is better
ranom backoff after collision is better
random backoff after listen before send is lower collision, but longer mean time
rts/cts before send eliminates hidden terminal problem (terminal hidden to sender is not hidden to receivers cts message hopefully)...
distributed schemes are fun...and popular, even though central scheme might be good in some cases (constant rate traffic...)
The latest thing (since 2001) is to consider network coding where packets are combined (through xor or linear coding) and recombined and then split out when they arrive over multiple paths - this is a very promising theoertical and practical trick, which can increase diversity and therefore robustness.