If I understand correctly, TCP is a full-duplex birectional protocol. However, Ethernet is half-duplex.
Does this mean that eventhough TCP supports full-duplex, it only operates in half-duplex mode when on Ethernet?
Actually, TCP and Ethernet are examples of different layers of the OSI model. TCP works in layer 4 (transport layer), which is used for making connections between nodes on a network. TCP is indeed bidirectional, and it's sometimes referred to as connection-oriented.
Ethernet is a layer 2 (data link layer) protocol, which dictates how signals are to be interpreted in the physical layer (layer 1). There are many sublayers to layer 2, but in general, Ethernet is the most popular.
If Ethernet is run in half-duplex, then the node cannot transmit and receive at the same time. But this doesn't mean that the node cannot use TCP. TCP still runs on top of Ethernet, and additionally, on top of IP (Layer 3) to create the bidirectional connection that TCP needs to communicate. So when talking about Ethernet and TCP, they operate as different layers.
TCP still makes the bidirectional connection even though the Ethernet NIC cannot receive and send at the same time.
A good reference to how this works is the classic Stevens book: http://books.google.com/books/about/TCP_IP_Illustrated_Volume_1.html?id=a23OAn5i8R0C
Ethernet is a half duplex protocol, however, it was created in the 1980's about 30 years ago. At which time an Ethernet segment was shared between devices using a hub and all PC's shared the same collision domain. They therefore had to take turns in sending data, and listening to make sure nobody was transmitting at the same time.
In normal/modern networks the collision domain is localized to only one device per switch port. So we don't have this issue of collisions. Since then, an IEEE 802.3 standard has been introduced that supports full duplex interfaces and a variety of speeds above the original 10Base-T standard.
To me the following analogy works:
Think about you and your friend communicate each other by sending letters. You and your friend send/receive in full duplex manner but let's say the post office works in half duplex manner.
You and your friend act like TCP(Full duplex) but the delivery of letters(post office) works in half duplex.
Ethernet supports both half-duplex and full-duplex modes. Please take a look at here.
And also please take a look at here https://stackoverflow.com/questions/28494850/is-tcp-bidirectional-or-full-duplex. It address the same question.