is an introduction to NAT, which will give you some insights on how internet addressing works. Looks scary, but that's part of the process. You can ignore that for a start, and work on a LAN setup to make things easier for starters.
A few concepts thrown in :
- Transport layer (winsock, UDP, TCP, reliable delivery, in order delivery, retransmission, establishing and closing connections, detecting connection failures and drops, calculating latency, bandwidth throttling, NAT punch through).
- Network topology (server / client, peer to peer, star topology, load balancing).
- Serialisation (marshalling data, compressing data, validating data, bitstreams and bitpacking, message routing and handling).
- Replication (global game clock synchronisation, managing your network entities, scheduling entity updates, remote procedure calls).
- Gaming (simulating internet conditions, debugging, lag compensation, hit detection, client side prediction).
- Matchmaking (LAN matchmaking, online matchmaking server, host advertising, game enumeration, session attributes, player presence, leaderboards, datamining and stats, invites...).
Would be nice to have all these under one roof, possibly with a bunch of applications. Don't think anyone's been crazy enough to attempt this. Well, apart from Glenn Fiedler
EDIT : On second thought, Glenn's article would be a decent place to start if you are thinking 'games'.
Apart from Beej's introduction to winsock, not aware of deep network programming tutorials oriented towards games. I suppose you could start off with simpler, more generic programs, like writing a IRC, a MUD, a simple multiplayer card game or board game.