I wanted to expand on this..
A collision domain is a datapath for which devices sending data on that datapath could have a collision with other devices using the same datapath/(collision domain).
A few years back, half duplex was used because multiple machines were on the same collision domain.
One computer would send data, but it could not receive data.
This is known as half duplex, it could not receive data because since it was sending data.
Any other machine on the half duplex network that sent data would cause a collision with the data it was sending itself.
In half duplex, when you send data you copy that data to the loopback (rx) on your NIC card.
That data has to be an exact duplicate of what you are sending.
If it is not, then someone else has sent data on the network, and caused a collision ruining the data you sent to the network.
Today, switches and routers have a complex matrix for their bus.
They have dedicated datapaths instead of shared, meaning each port has its own collision domain.
1 PC connected to the port means that pc has its own collision domain, since no other computers are on that port you will not have collisions.
As you are the only one on that collision domain.
Hubs use a shared bus, so every port on a hub is 1 collision domain.
Any port you connect to, and another pc on a different, are in the same collision domain.
Thus half duplex is needed.
Take this scenario for example.
You connect your dedicated server to a switch in a datacenter.
The switch port is set to full duplex, and lets say it will not autonegotiate your pc's NIC Speed/Duplex because setting it to full duplex disables auto negotiation.
So your server boots up and defaults to 10/Half Duplex, or 100/Half Duplex.
What do you think will happen?
You will have packet loss.
Your server will not expect to receive packets when it sends packets.
And it will not ever send packets when it is receiving, thou sometimes it happens (millisecond difference)
Lets say you are sending some packets, the switch in full duplex will say.. you know what ?
this port is full duplex I dont have to wait to send this packet.
The packet is sent to the server, only to mess up the data going to your loopback (rx) since you are in half duplex.
Causing collisions and likely the possibility of packetloss.
The more data you tx/rx, the more collisions you will have.
This will highly degrade your performance.
Each time a collision happens, a timer is set on the server for retransmit.
Once the timer expires it may send data again.
But with the duplex mismatch, you will likely have some extra laitency and loss.
As once it fails so many times of re transmitting, it will discard the data.