We're so used to using friendly names to reference other machines, in place of IP addresses, that we sometimes forget what a real problem it can be. This is even more of a problem when the IP addresses themselves are handed out dynamically (DHCP): if there isn't something keeping track of them (Dynamic DNS), a machine has to be able to broadcast its identity, and other machines have to be able to hear those broadcasts. A home router usually does DDNS at the same time as DHCP, which is why it usually seems transparent. With a crossover cable, you no longer have the router doing those jobs.
I won't go in to more detail than that, except to say: in my home networking environment, with both Windows and Linux systems, I often find myself going back to IP addresses when all else fails. For example, the Windows desktop "server" box has a fixed IP address, and I wrote that address in to the HOSTS file on the Linux netbook - so now the connection from Linux to Windows is no longer reliant on any other factors. The Linux netbook knows where the Windows "server" is, every time.