Synopses & Reviews
Programming in TCP/IP can seem deceptively simple. Nonetheless, many network programmers recognize that their applications could be much more robust. Effective TCP/IP Programming
is designed to boost programmers to a higher level of competence by focusing on the protocol suite's more subtle features and techniques. It gives you the know-how you need to produce highly effective TCP/IP programs.
In forty-four concise, self-contained lessons, this book offers experience-based tips, practices, and rules of thumb for learning high-performance TCP/IP programming techniques. Moreover, it shows you how to avoid many of TCP/IP's most common trouble spots. Effective TCP/IP Programming offers valuable advice on such topics as:
- Exploring IP addressing, subnets, and CIDR
- Preferring the sockets interface over XTI/TLI
- Using two TCP connections
- Making your applications event-driven
- Using one large write instead of multiple small writes
- Avoiding data copying
- Understanding what TCP reliability really means
- Recognizing the effects of buffer sizes
- Using tcpdump, traceroute, netstat, and ping effectively
Numerous examples demonstrate essential ideas and concepts. Skeleton code and a library of common functions allow you to write applications without having to worry about routine chores.
Through individual tips and explanations, you will acquire an overall understanding of TCP/IP's inner workings and the practical knowledge needed to put it to work. Using Effective TCP/IP Programming, you'll speed through the learning process and quickly achieve the programming capabilities of a seasoned pro.
This text contains mini-lessons which aim to take the guesswork out of efficient network programming. Common TCP/IP problems are examined and critical details are explored.
-- 44 self-contained "mini-lessons" cover every key TCP/IP technique and trouble spot.
-- Demystifies TCP/IP's "hidden behavior" so developers can achieve the precise results they're after -- with no surprises.
-- Solutions for every network programmer -- regardless of experience level.
In 44 expert mini-lessons, Effective TCP/IP Programming demystifies TCP/IP development, eliminating the guesswork, helping programmers past the obstacles, and showing how to dramatically improve application performance and robustness. TCP/IP programming can seem seductively simple: the API is straightforward and even novices can flesh out a working application. But there are plenty of hidden obstacles -- and developers who don't understand them will encounter serious performance problems. Effective TCP/IP Programming demystifies the critical details and hidden behaviors of TCP/IP, so programmers can build code that's more reliable, maintainable, and efficient. Following the widely-admired style of Scott Meyers' Effective C++, Jon C. Snader has organized this book into 44 short, self-contained sections, each addressing one key aspect of TCP/IP development, or one key trouble spot -- and each including detailed, fully commented code examples. The result: a book that's easy to read and absorb, and will serve as an outstanding day-to-day reference tool for every developer who wants to create TCP/IP-based network applications.
About the Author
Jon C. Snader
is a TCP/IP and VPN expert whose background includes work in communications, networking, compiler development, operating systems, and radio network controllers.
Table of Contents
A Few Conventions.
Road Map to the Rest of the Book.
Basic Sockets API Review.
Tip 1: Understand the Difference between Connected and Connectionless Protocols.
Tip 2: Understand Subnets and CIDR.
Tip 3: Understand Private Addresses and NAT.
Tip 4: Develop and Use Application “Skeletons.”
Tip 5: Prefer the Sockets Interface to XTI/TLI.
Tip 6: Remember That TCP Is a Stream Protocol.
Tip 7: Don't Underestimate the Performance of TCP.
Tip 8: Avoid Reinventing TCP.
Tip 9: Realize That TCP Is a Reliable Protocol, Not an Infallible Protocol.
Tip 10: Remember That TCP/IP Is Not Polled.
Tip 11: Be Prepared for Rude Behavior from a Peer.
Tip 12: Don't Assume That a Successful LAN Strategy Will Scale to a WAN.
Tip 13: Learn How the Protocols Work.
Tip 14: Don't Take the OSI Seven-Layer Reference Model Too Seriously.
3. Building Effective and Robust Network Programs.
Tip 15: Understand the TCP Write Operation.
Tip 16: Understand the TCP Orderly Release Operation.
Tip 17: Consider Letting inetd Launch Your Application.
Tip 18: Consider Letting tcpmux “Assign” Your Server's Well-Known Port.
Tip 19: Consider Using Two TCP Connections.
Tip 20: Consider Making Your Applications Event Driven (1).
Tip 21: Consider Making Your Applications Event Driven (2).
Tip 22: Don't Use TIME-WAIT Assassination to Close a Connection.
Tip 23: Servers Should Set the SO_REUSEADDR Option.
Tip 24: When Possible, Use One Large Write Instead of Multiple Small Writes.
Tip 25: Understand How to Time Out a Connect Call.
Tip 26: Avoid Data Copying.
Tip 27: Zero the sockaddr_in Structure Before Use.
Tip 28: Don't Forget about Byte Sex.
Tip 29: Don't Hardcode IP Addresses or Port Numbers in Your Application.
Tip 30: Understand Connected UDP Sockets.
Tip 31: Remember That All the World's Not C.
Tip 32: Understand the Effects of Buffer Sizes.
4. Tools and Resources.
Tip 33: Become Familiar with the ping Utility.
Tip 34: Learn to Use tcpdump or a Similar Tool.
Tip 35: Learn to Use traceroute.
Tip 36: Learn to Use ttcp.
Tip 37: Learn to Use lsof.
Tip 38: Learn to Use netstat.
Tip 39: Learn to Use Your System's Call Trace Facility.
Tip 40: Build and Use a Tool to Capture ICMP Messages.
Tip 41: Read Stevens.
Tip 42: Read Code.
Tip 43: Visit the RFC Editor's Page.
Tip 44: Frequent the News Groups.
Appendix A: Miscellaneous UNIX Code.
The daemon Function.
The signal Function.
Appendix B: Miscellaneous Windows Code.
The skel.h Header.
Windows Compatibility Routines.