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?


  • 8
    Half duplex is still bidirectional communication, just not simultaneously bidirectional Apr 19, 2014 at 1:04
  • 1
    Your car can get you from A to B, and it can also get you from B to A. Your car is bidirectional. Sometimes, while driving, you come across a one-way-at-a-time street (due to construction or road closures or what have you). In such cases, you wait your turn for traffic to flow in your direction. You might also use that same one-way-at-a-time street on your return trip bringing you back home (aka, from B to A). In the same way, TCP (which is bidirectional, like your car) can cross a half-duplex link (which is is one-direction-at-a-time, like that street).
    – Eddie
    Feb 14, 2015 at 7:36
  • Did any answer help you? if so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you could post and accept your own answer.
    – Ron Maupin
    Feb 12, 2021 at 3:54

4 Answers 4


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

  • 1
    Duplex is actually determined at Layer 1 (physical) and Ethernet runs at Layer 2 (Data Link). This is why Ethernet can be full duplex (most switches) or half duplex (hubs). As Magic Man said, though, TCP is bidirectional, not duplex. When workstation A transmits a TCP packet to workstation B, workstation B sends an acknowledgment of sorts, but the communications are not simultaneous as in the case of duplex, but rather one after another. Apr 19, 2014 at 0:39
  • In TCP, if Connection is established between A and B, if we assume that A initiated the connection, can B send data to A? Or B can only receive?
    – user855
    Apr 20, 2014 at 5:16
  • @AveryAbbott It seems bidirectional and duplex are 2 concepts often misunderstood. Such as in this article(ssfnet.org/Exchange/tcp/tcpTutorialNotes.html). It explicitly says TCP is Full Duplex. Feb 13, 2015 at 7:39
  • @user855 Once a connection is made, both A and B can send data to each other. That's what bidirectional means. When the data gets to the lower layer such as Ethernet, which may not be working as full-duplex, I think there should be some buffer to hold the data before they get a chance to be sent. Feb 13, 2015 at 7:44

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.