To feed 5Th/s:
The now deprecated get work protocol would require some where in the neighborhood of 1.25Mbps
With the proper difficulty setting of 4096:
The stratum protocol would amount to at most 5kbps but in all likeliness it would be well below 2kbps, or almost 1000 less traffic
This is due to the fact stratum allows for local work derivation from the data sent from the upstream server
I assume doing it solo would require significantly more bandwidth. But that is interesting how efficient stratum appears to be.
Not necessarily. Solo mining can be setup using getwork protocol or a third protocol : getblocktemplate which as it's name suggests; instead of sending block headers(work items) ready to go like stratum(which allows some mutability) and getwork do, GBT sends an array of all the data presently available on the bitcoin network) needed to create your own block headers a la changing which transactions are in there which coinbase to use etc. it sounds complex and it is at first.
Solo can also be proxied via a pseudo pool to allow stratum connection:
Bitcoind<---Getwork--->Miner
Bitcoind<---Getblocktemplate--->Miner
Bitcoind<---GBT--->solopool SW<---Stratum--->Miner