Hubs are completely dumb, afaik they do not even have ethernet addresses, they just broadcast everything from one port on all other ports. Which means if 2 machines on a 10 port hub are chatting at 100meg full duplex, all the other machines on the other 8 ports are pretty much stuffed ;(

Switches perform the same roll as hubs (i.e. connect machines together) but they learn which ethernet addresses are connected to which port and only send traffic out of that port. If a packet fails when the switch has sent it down a port it thought the machine was connected to it will then revert to hub mode and broadcast that packet out of all ports until it learns where the machine is. make sense?

You can get 2 (roughly) kinds of switches, unmanaged and managed. unmanaged are cheaper and simple, they still learn etc. but they are black boxes, you can see what they are doing or alter their behavior. Managed switches on the other hand will have some management IP address which you can either ssh/telnet (sometimes web-browse) to. From there you can configure things about the switch. Things like turn ports off, set them to be 100meg/Full duplex (rather than auto negotiate) etc, etc.

Routers are solely for making routing decisions based on pre-configured routing tables. Things like this network is connected to this bit of wire etc. They do no necersarily have to have preconfigured routes, procotols such as BGP/EGP/RIP exist so routers can discover routes auto-magically

Now you understand that, some switches can route too! 😉