For junior-to-graduate level courses in Advanced Computer Networking, Client-Server Computing, TCP/IP, Network Protocols, Internetworking, or Distributed Systems.
This book describes the fundamental concepts of client-server computing used to build all distributed computing systems, teaching students how application software uses TCP/IP to communicate over an Internet. The text is organized for easy reading by first explaining the client-server paradigm and socket API that application programs use for network communication and then discussing how the basic tools can be used to create servers, emphasizing practical designs and techniques that are important to programmers. The author covers the complete set of server designs as well as the tools and techniques used to build clients and servers, including Remote Procedure Call (RPC). This latest version in the most popular TCP/IP Internetworking series ever published describes Linux facilities that network programs use such as threads and the socket API. All the code in this version of the text is compliant with the POSIX standard; it has been compiled and tested on the Linux operating system.
- Practical client-server design principles-Students can use the principles directly in programs.
- Presents the strengths and weaknesses of each approach, allowing students to understand why there are multiple approaches and when each should be used.
- Most complete coverage of server technology-Detailed information about each design.
- Gives students a comprehensive background not available in other texts.
- Shows how to select among server algorithms and how to build an advanced serverappropriate for each application.
- Chapters on streaming technology and the Real-Time Transport Protocol.
- Explain how to transfer audio and video over the Internet.
- Detailed working examples of each client-server design.
- Illustrates implementations that have been tested under Linux. Students can obtain all source code in the text from the Companion Website, and use it in hands-on experiments.
- Central theme of software design.
- Teaches students how to structure clients and servers that are directly applicable to the World Wide Web and other applications.
- Conceptual basis for client and server design-Points out the similarities and differences among various client and server designs, the role of concurrency, and when to use each design.
- Explains that the myriad of possible client and server designs are not random but, in fact, follow a patter that can be understood by considering the choice of concurrency and transport.
- Coverage of all server designs including multiservice, multiprotocol, and single-process concurrent servers.
- Exposes students and professionals to the wide range of possibilities in server design, which are not found in other texts, while emphasizing practical design principles and techniques that are important to programmers.