As rouncer said, focus first on learning the ins and outs of socket programming, then work on incorporating that into your game. Beej's Guide to Network Programming is a good starting point. It will cover most of what you need to know. I also recommend reading Microsoft's MSDN code pages on the various socket functions just so you understand the inputs and outputs better, including certain limitations and to handle all types of errors that can occur.
Once you get the gist of socket programming, you need to learn about asynchronous programming. If you're not up to par with this, you should learn about threads and various thread patterns (task scheduling, thread pooling, event/delegate pattern).
After completing the above, you should start thinking about creating your own protocol, on top of TCP/IP or UDP. By now you should know what those two are and how you should use them. Your games however will need a format of their own, something your code can parse and extract data from. HTTP is an example of a protocol built on top of TCP/IP. Once you define your protocol, you will need to create all the possible packets that can be sent and received for your game, and then build a packet handler to manage that. This is where you will need to think about a good design to put all the pieces together.
Finally, you will have to think about latency and synchronization, network prediction, and protocol compression. I haven't seen these topics covered well, but they are fairly intuitive. At least if you get as far as doing all of the above, you should be able to problem solve these as you go. As you get more experience, these solutions will come more naturally to you.