Before diving into software coding, you must have a broad architectural plan for your application. Remember that an application’s architecture differs significantly from the network architecture. From the application developer perspective, the network architecture is firm and provides a specific set of services for applications. The application architecture, on the other hand, is designed by the application developer and dictates how the application is structured across the various end systems. When choosing application architecture, an application developer is likely to draw on one of the two prevalent architectural paradigms used in modern network applications: the client-server architecture or the peer-to-peer (P2P) architecture.
In a client-server architecture, there is an always-on host, called the server, that services request from many other hosts, called clients. The client hosts can sometimes be on or always on. A classic example is the web application that an always-on-web server services requests from browsers running on client hosts. When a web server receives a request for an object from a client host, it responds by sending the requested object to the client host. Note that the client server architecture does not communicate directly with each other; for example, in the web application, two browsers do not communicate directly. Another feature of the client server architecture is that the server has a fixed, well-known address, called an IP address (which we will discuss shortly). Because the server has a fixed, well-known address, and because the server is always on, a client can always contact the server by sending a packet to the server’s address. Some of the better known applications with a client server architecture include the Internet, F1’R Telnet and email.
In a client-server application, a single server host is often unable to keep track of all requests from its clients. For example, a popular social networking site can quickly become overwhelmed if it has only one server that handles all its requests. For this reason, a cluster of hosts, sometimes referred to as a server farm, is often used to create a powerful virtual server in client-server architectures. Application services based on the client-server architecture are often infrastructure-intensive as they require service providers to buy, install, and maintain server farms. In addition, service providers have to pay recurring interconnection and bandwidth costs to send an4 receiving data to and from the Internet. Popular services such as search engines (e.g. Google), Internet commerce (e.g. Amazon and e-Bay), web-based v-mail (e.g. Yahoo Mail), social networking (e.g. MySpace and Facebook), and Video sharing (e.g. YouTube) is infrastructure-intensive and costly to deliver.
In a P2P architecture, there is minimal (or no) reliance on always-on infrastructure servers. Instead, the application utilizes direct communication between pairs of intermittently connected hosts, called peers. Colleagues are not owned by the service provider, but are instead user-controlled desktops and laptops, with most colleagues residing in homes, universities and offices. Because peers communicate without going through a dedicated server, architecture is called peer-to-peer. Many of today’s most popular and traffic intensive applications are based on P2P architectures. These applications include file sharing (eg BitTorrent), file search / sharing (eg EMule and LimeWire), Internet telephony (eg Skype) and IPTV (eg PPLive).