Client/server architecture is an easy concept to grasp. A client application connects to a 'server' application and communicates directly to it. The 'server' application is designed to listen for and accept connections and deal with the application logic. In a multi-client application, it's also the point of contact between any two clients. Let's look at a flowchart real quick describing a simple client/server setup:

The arrows denote the flow of network traffic. Data travels from the server to the client and vice versa.
Client/Server...proxy?
The proxy comes into play as a middle-man between the client and the server. When a proxy is present, the above flowchart gets transformed to look something more like this:

All data going between the client and server must travel through the proxy. BYOND has an example of each of these setups. The pager itself is a 'client' while the hub is the 'server'. At the same time, the pager is also a 'proxy' for Dream Seeker/Dream Daemon. In the proxy setup, DS/DD is the 'client' and the hub is still the 'server'.r
Types of Proxies
There are many different types (based on functionality) of proxies. The ones we're going to look at are simple proxies and functional proxies.
Simple proxies are exactly that: simple. They are generally not protocol-specific and have varying uses. Some common uses are anonymity, traffic logging, filtering, and tunneling in general in case of port blocking or for potentially other reasons. They forward the data on and do minimal analysis of the data itself.
Functional proxies are a little more complicated than that. Functional proxies are protocol-specific. A functional proxy takes the data it receives and splits it up 'packets' of data, then splits those 'packets' up into their own parts: a 'header' and a 'body', and usually acts in some way on the data that it receives. Functional proxies have varying range of uses. One functional proxy that was quite popular was a Diablo II proxy named RedVex. Redvex, being a third-party application that did NOT write to or read Diablo II's memory, became popular because it wasn't really something that Blizzard could auto-detect. You could do a whole host of things with the data going back and forth in Diablo II, and it was really interesting to work with.
Stay tuned for other random blog posts...