It explains just about every networking concept in grueling detail. However I don't remember anything I learned in that class, and now as a working developer don't have the time to work through a 900 page textbook.
These Youtube playlists covered the important networking parts. Search Wikipedia for the topics you don't understand.
1) Stanford Networking: https://www.youtube.com/playlist?list=PLx_Dnlrnkd6f3mtJgmoBk...
2) New Boston: https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBpuvPW0aHa...
3) Gate Lectures by Ravindrababu Ravula: https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPn...
But seriously, you want to look into the OSI network model. This may be helpful http://www.routeralley.com/completed/ccna_studyguide.pdf
As for your question, I believe (and someone better informed then me is bound to come along) that a switch basically connects computers to make a network, and may or may not be very smart about how it does that, as it may broadcast everything to every computer in the network initially.
A router routes communications from an outside network like the internet to another network's computers, using address translation to determine what to send where. Routers assign a ip address to computers within the network and does network address translation, so that externally you can use one ip address to the internet that represents multiple computers. It can track which internal ip address is associated with a request, but computers outside your intranet can't, which is why you often use routers to assign specific ports to specific computers in your network so that you can play video games or use bittorrent, as that lets the external networks initiate a connection by using a specified port.
hub = OSI layer 1 (physical)
switch = OSI layer 2 (data link); but layer 3 switches exist
router = OSI layer 3 (network)
More details for each here: http://web4.uwindsor.ca/units/its/insight/insight.nsf/e273c4...
That makes the resources that aren't proprietary extremely detailed and muddy, to cover things the proprietary tech shines up at a high level.
Therefore, my suggestion for 'learning networking' is to just do it. Set up a LAN at home. Solve the problems as you come across them.
Someone at my place of work took this approach, and I thought it made me smile when he said he had this great idea about how he could automatically distribute IP addresses to terminals instead of manually setting them up. I told him about DHCP! Learning by going through the motions.
Incidentally, I picked up a copy of a CCNA study guide and the concept of DHCP wasn't covered until 1/3 through the book, after OSI was covered and other low-level topics.
- Ethernet The Definitive Guide. Part 1 (Introduction) was a good orientation. Part 4 (Switches and Network Design) talks about switches vs routers, for example.
- I've reading Network Algorithms. This book is broad investigation into "network application performance" and considers protocols, hardware, network device and network architecture, operating systems and applications.
- I've been trying to understand the low-level hardware by building a networking stack from scratch on a FPGA board. I'm using the Digilent Arty Artix-7 board ($99):
http://store.digilentinc.com/arty-artix-7-fpga-development-b...
I'm now able to send and receive Ethernet packets and I'm now thinking about how to implement higher-level protocols like ARP.
Good luck! This is fun stuff.
happy to join a chat and answer questions if I can