For example, TCP is full duplex. Can it be built on top of non-full-duplex underlying communications?
2 Answers
First some basic definitions.
- Simplex: can only transmit data in one direction.
- Half duplex: can transmit data in both directions but not at the same time.
- Full duplex: can transmit data in both directions at the same time.
Obviously a simplex link can only move data in one direction, so we can't build a full duplex link out of one simplex link. However we can build a full duplex link out of two seperate simplex links. This is how many practical network physical layers work.
What about a half duplex link? well it comes down to exactly what we mean by "at the same time". To send information in both directions over a half duplex link we need some method for switching directions. That may be a fixed ratio time division, it may be some kind of carrier sense based protocol, whatever.
If the direction switching happens fast enough then higher levels won't notice. As far as they are concerned they put data into a transmit buffer and pull it out of a receive buffer. The exact details of how it got from the transmit buffer at one end to the receive buffer at the other don't matter much as long as it arrives in a reasonablly timely manner.
In general on a half duplex channel you have to wait until reception is complete before starting transmission. Since signals don't travel instantly this inevitablly means there is some dead time during a direction change. CSMA type protocols where there are not fixed time-slots are likely to introduce more dead time. You have something of a compromise between bandwidth and latency, rapid switching allows low latency communications but increases the ammount of dead time.
Getting back to the Internet, half duplex was traditionally used on local area networks (notablly Ethernet). Such networks ran over relatively short distances and had relatively high bandwidths. So the extra latency and reduced bandwidth from half duplex operation were negligable compared to the bandwidth restrictions and latency seen on WAN links.
Ethernet, or other layer-1/layer-2 LAN protocols, may be half duplex, but that doesn't change TCP. That is the point of the layered network: each layer is independent of the other layers.
-
But how can data be transmitted simultaneously if the underlying layers are half duplex? Commented Apr 20, 2016 at 21:59
-
The information takes turns on a half-duplex ethernet link. TCP doesn't know, or even care, anything about that. To TCP, it looks like the segments are flowing both ways at the same time. Think of a trucking company which is sending and receiving shipments at the same time. It doesn't really know about the traffic controls on a particular road where drivers must take turns. It just knows that the trucks come and go all the time. TCP establishes a two-way conversation, and it sends and receives at will, regardless of the underlying protocols.– Ron Maupin ♦Commented Apr 20, 2016 at 22:18