Computer network programming describes the process of making programs that are able to use network communication to operate. Programs made using this method — essentially any program that requires other networked programs to operate — are called a distributed system. These programs basically fall into three categories: connected, non-connected or peer-to-peer. These categories describe, in broad terms, the way the program uses the network connection and the relationship it has with programs on the other end.
When talking about computer network programming, the term "network" is very broad. It covers everything from local intranets, where a single person shares access between connected systems, and full-on Internet access, where the systems may be thousands of miles apart. Regardless of the purpose, location or distance between programs, they all need multiple pieces in different places to operate correctly.
The common term used to describe these programs is ‘distributed system.’ This basically means that the individual parts of the program have been distributed out to multiple locations. The program acts like a single system, but it requires the network to let those systems interact.
In general, computer network programming falls into three categories. A connected system requires that two or more systems communicate constantly in order to function. These are often client/server relationships, where many single clients all connect to one large server. In these cases, there is generally a fair amount of inequality, typically one half of the connected system is far more important or has more functionality than the other.
Non-connected computer network programming creates systems that need to talk to one another, but will operate independently. While this model has many applications, a common current use is the authentication server. In this setup, a program is full and complete in one location, but will not operate unless instructed by a different program. When a user attempts to use the program, it will query the authentication server for permission and the server will respond. The information on the server is unnecessary to the program, but it won’t work unless they can communicate.
The third type of computer network programming is peer-to-peer. In this style, the programs are both a client and a server, both sending and receiving information all at the same time. These programs will typically connect to other programs of the same type, making a closed system comprised of hundreds, if not thousands, of independent systems. This is generally the most balanced of the computer network programming styles as each individual program is essentially the same.