Many network applications consist of a pair of programs--a client program ans a server program--residing in two different
end systems. When these two processes communicate with each other by reading from and writing to sockets. When
creating a network application, the developer's main task is to write the code fro both the client and server programs.
There are two sorts of network applications. One sort is a network application that is an implementation of a protocol
standard defined in an RFC. The client ans derver programs must conform to the rules dictated by the RFC.
The other sort of network application is a proprietary network application. IN this case the application-layer
protocol used by the client and server programs do not neccessarily conform to any existing RFC. A single developer
creates both the slient and server programs, and the developer has complete control over what goes in the code.