The first step to understanding programming for networks is, of course, understanding networks. Defining what they are, clarifying the aspects of networks we are concerned with, addressing how network architecture impacts the programs we write, and what kinds of software solutions networks need to be effective.
Expanding the scope of software – distributed systems and the challenges they introduce
What is a network?
At its most basic, a network is nothing more than a physical implementation of an undirected graph; a series of nodes and edges, or connections, between those nodes, as demonstrated in the following diagram:
A basic, undirected graph
However, the preceding diagram doesn't quite capture the full picture...