Effective TCP/IP Programming
Table of Contents
Introduction
Basics
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
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
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
Miscellaneous UNIX Code
A.1
etcp.h
Header
A.2 The
daemon
Function
A.3 The
signal
Function
Miscellaneous Windows Code
B.1 The
skel.h
Header
B.2 Windows Compatibility Routines
Bibliography
Index