zhuang@linux:~/reading/computer-networking-a-top-down-approach/02-application-layer/$ less

Computer Networking: A Top-Down Approach / chapter 01

Computer Networks and the Internet

$ grep tags 02-application-layer.md

This post extracts some knowledge from Computer Networking: A Top-Down Approach Chapter 2 – Application Layer.

Principles of Network Application

Two predominant application architecture in modern network applications: the client-server architecture or the peer-to-peer (P2P) architecture.

Client-Server Architecture

In a client-server architecture, an always-on server provides services to clients. Clients send requests to the server and do not communicate directly with one another. The server usually has a fixed, well-known IP address so clients can reliably contact it. Large applications often use data centers with many servers because a single server may not be able to handle all client requests. The Web, email, and FTP are common examples of applications that use the client-server architecture.

Peer-to-Peer (P2P) Architecture

In a peer-to-peer (P2P) architecture, applications communicate directly with one another instead of relying on an always-on central server. Each peer can act as both a client, requesting data, and a server, providing data to other peers. Because every new peer can add resources such as bandwidth, storage, and processing power, P2P applications are inherently self-scalable.

P2P systems can also be cost-effective because they require less server infrastructure. However, peers may connect and disconnect frequently, change IP addresses, or have limited resources, which makes P2P applications more difficult to manage, secure, and design reliably. BitTorrent is a common example of a P2P application.

Transport-Layer Services Available to Applications

What are the services that a transport-layer protocol can offer to applications invoking it? We can broadly classify the possible services along four dimensions: reliable data transfer, throughput, timing, and security.

zhuang@linux:~/reading/computer-networking-a-top-down-approach/02-application-layer/$ comments