Why straight-through ethernet cables?

Solution 1:

On an RJ-45 connector, there are 8 pins. Originally only 4 were used. Tx(transmit) and its ground, and Rx(receive) and its ground. If you used a straight through cable, the transmit pins would be connected to the transmit pins on the other device. The same would be true for the receive pins.

Early networking gear wasn't "smart" enough to know that data was coming in on pins that should be for data transmission, so it didn't listen there. Modern day GigE gear is smart enough so this is no longer an issue. This was never meant to be a design decision, but rather an answer to a previously made design decision.

Edit: To address your question left in the comment -

To simplify the wiring process (both ends could be the same), networking gear was designed with ports that were receiving on the pins that the PCs were transmitting on and vice versa. This made it so that the bulk of cables created could have both ends wired the same way. Since the use of a crossover cable is rare, even more so with the advent of "uplink" ports and auto-crossover on modern switches, this is the lesser used technology.

It really doesn't matter which wiring scheme is used, the problem would remain if the "standard" cable and pinning had been of the crossover variety. Then, what we call a straight through, cable would have had to be used to connect devices directly to each other.

Solution 2:

Once upon a time a twisted pair socket was only wired one way and the attached electronics couldn't change what each wire did. You were either a network device (hub/bridge/switch/router) or an end device. In order to electrically connect two network devices together you need a different cable than one used to connect an end device to a network device.

And thus the straight-through and cross-over cables were born.

Avoiding the usage of a second cable type (that would invariably lose its label and confuse the bejebers out of some network person months/years down the road when they pull it out of the bin) most devices intended to connect to both network devices and end devices had an uplink port that allowed the use of 'normal' cables.

It was as simple as that.

Edit: Google-Fu successful. It WAS ARCnet!

Why weren't switches/hubs designed from the beginning to use crossover cables instead?

Back when the 10base-T specification was still under consideration, the twisted pair architecture most common at the time in office networks was ARCnet. 10base-T wasn't ratified as an actual standard until 1990, later than I thought. Connecting ARCNet hubs together looks to have required a cable with flipped pairs from what ended up connecting to endpoint devices.

Since the standards committee would have been made up of veteran network engineers from the various hardware vendors and other interested parties, they had been dealing with the multiple cable problem for years and likely considered it status-quo. It is also possible that the 'draft' devices under development by the vendors also had electrical requirements for the cable, influenced as they were by ARCnet device manufacture. Clearly the committee didn't consider the use of multiple cable types to be enough of a problem to standardize the practice out of existence.

Solution 3:

The reason straight cables are used is because they are easier to manufacture, as both ends are the same. Cross-over cables were originally used when chaining hubs because they wanted the link port to be different to the other ports. You need to bear in mind that back then things could strange results, or even no results, if you didn't use the link ports as intended.

The next step was to provide a switch on the hubs so that you could use either straight or cross-over cables for chaining. These days it's all done with intelligent chips.

Of course we still need cross-over cables for directly linking most network devices without using switches or hubs, otherwise the two transmit ports would be connected together, as would the receive ports. The cross-over cable correctly connects transmitter to receiver.