What are the two forms of software programs that provide network access?
Network applications (implement application-layer protocols directly, e.g. browsers, email clients) and application layer services (interface non-network-aware apps to the network, e.g. file sharing, print spoolers).
The distinction comes down to whether the program knows it's on a network. A network application is built to talk on the wire itself — a web browser speaks HTTP, an email client speaks SMTP/IMAP — so it implements the application-layer protocol directly and hands data down the stack on its own. An application layer service exists for the programs that aren't network-aware: a word processor doesn't know how to send a document across the network, so a service (file sharing, a print spooler) sits underneath it, takes the data, and prepares it for transfer. The practical upshot is that the same physical server can host several of these at once — an email, FTP, and SSH server in one box — because each is just a service listening for its own protocol, which is why a small network often needs only a handful of servers.
Two Forms of Network Software:
1. Network Applications:
- Applications that implement application layer protocols
- Able to communicate directly with the lower layers of the protocol stack
- Examples: Web browsers, email clients, FTP clients
2. Application Layer Services:
- For applications that are not network-aware
- Programs that interface with the network and prepare the data for transfer
- Examples: File sharing services, print spoolers
Key insight: A server could provide multiple network services. For instance, a server could be an email server, FTP server, and SSH server simultaneously.
Go deeper:
Wikipedia — Application layer — where network applications and services sit in the stack, with the protocol families they implement.