For example, TCP is full duplex. Can it be built on top of non-full-duplex underlying communications?
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.