Say I have two computers connected with a single ethernet cable, using tcp/ip. If computer 1 connects to computer 2 using port 12345, and computer 2 connects to computer 1 with port 54321, what happens when both computers are sending a constant flow of data simultaneously?
Do the computers each get half of the ethernet cable to use as one way pipes or do they take turns sending data through the ethernet cable so that only one piece of data is being transmitted through it at a time?
On the physical layer (and assuming regular Cat5 TP cables and ethernet hardware), each communication partner has their own pairs of wires, allowing both to send and receive at the same time. This is called full duplex operation. In older hardware, such as token ring, several computers must share the same lines and can only use full duplex in certain special situations.
Luckily (as has been pointed out), TCP/IP sockets do work on a much higher layer in the protocol stack, highly abstracted from the actual type of physical access. You can have as many open connections between two parters as you want, virtually at least. The network stack wraps all your communication into packets, marks it with the port numbers, source and destination addresses and hands it off to the next layer until it reaches the medium. So, port numbers and sockets are logical and barely have anything to do with the actual hardware. You don't even need network hardware for some kind of sockets.
In fact, this whole scheme is much more complicated and I recommend reading Network socket on WP for a very short introduction on how sockets work and what they do. For more information, Andrew Tanenbaum's Computer Networks is a very good book that covers all relevant details and is easy readable.