If your goals are educational, I'd suggest reading up on network programming fundimentals. Then move on to game networking, since the comlications of underlying tech is nothing compared to the the scope of the problems of game networking. Having that strong foundation will save you a lot of grief later when trying to find solutions to top-down game development issues.
If your goal is oriented around developing the game itself -- particularly a game for which data security, throughput, and latency aren't big problems (for example, a turn based game), then a networking library might be a better solution. They tend to solve the problems of maintaining individual client connections and further abstracting them into rational "players". A word of warning though, many of these libraries will be documented in terms of fundimental network programming constructs, and understanding some of the fundimentals of distributed programming will help you with these as well.
Rick Hoskinson
Microsoft XNA Developer Connection