|
|
Copyright
|
|
|
Addison-Wesley Professional Computing
Series
|
|
|
Foreword
|
|
|
Preface
|
|
|
|
Introduction
|
|
|
|
Changes from the Second
Edition
|
|
|
|
Using This Book
|
|
|
|
Source Code and Errata
Availability
|
|
|
|
Acknowledgments
|
|
|
|
Part 1: Introduction and TCP/IP
|
|
|
|
Chapter 1. Introduction |
|
|
|
Section 1.1. Introduction
|
|
|
|
Section 1.2. A Simple Daytime
Client
|
|
|
|
Section 1.3. Protocol
Independence
|
|
|
|
Section 1.4. Error Handling:
Wrapper Functions
|
|
|
|
Section 1.5. A Simple Daytime
Server
|
|
|
|
Section 1.6. Roadmap to
Client/Server Examples in the Text
|
|
|
|
Section 1.7. OSI Model
|
|
|
|
Section 1.8. BSD Networking
History
|
|
|
|
Section 1.9. Test Networks and
Hosts
|
|
|
|
Section 1.10. Unix
Standards
|
|
|
|
Section 1.11. 64-Bit
Architectures
|
|
|
|
Section 1.12. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 2. The Transport Layer: TCP,
UDP, and SCTP |
|
|
|
Section 2.1. Introduction
|
|
|
|
Section 2.2. The Big
Picture
|
|
|
|
Section 2.3. User Datagram
Protocol (UDP)
|
|
|
|
Section 2.4. Transmission
Control Protocol (TCP)
|
|
|
|
Section 2.5. Stream Control
Transmission Protocol (SCTP)
|
|
|
|
Section 2.6. TCP Connection
Establishment and Termination
|
|
|
|
Section 2.7. TIME_WAIT
State
|
|
|
|
Section 2.8. SCTP Association
Establishment and Termination
|
|
|
|
Section 2.9. Port Numbers
|
|
|
|
Section 2.10. TCP Port
Numbers and Concurrent Servers
|
|
|
|
Section 2.11. Buffer Sizes
and Limitations
|
|
|
|
Section 2.12. Standard
Internet Services
|
|
|
|
Section 2.13. Protocol Usage
by Common Internet Applications
|
|
|
|
Section 2.14. Summary
|
|
|
|
Exercises
|
|
|
|
|
Part 2: Elementary Sockets
|
|
|
|
Chapter 3. Sockets
Introduction |
|
|
|
Section 3.1. Introduction
|
|
|
|
Section 3.2. Socket Address
Structures
|
|
|
|
Section 3.3. Value-Result
Arguments
|
|
|
|
Section 3.4. Byte Ordering
Functions
|
|
|
|
Section 3.5. Byte Manipulation
Functions
|
|
|
|
Section 3.6.
inet_aton, inet_addr, and inet_ntoa
Functions
|
|
|
|
Section 3.7.
inet_pton and inet_ntop Functions
|
|
|
|
Section 3.8.
sock_ntop and Related Functions
|
|
|
|
Section 3.9. readn,
writen, and readline Functions
|
|
|
|
Section 3.10. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 4. Elementary TCP
Sockets |
|
|
|
Section 4.1. Introduction
|
|
|
|
Section 4.2. socket
Function
|
|
|
|
Section 4.3. connect
Function
|
|
|
|
Section 4.4. bind
Function
|
|
|
|
Section 4.5. listen
Function
|
|
|
|
Section 4.6. accept
Function
|
|
|
|
Section 4.7. fork and
exec Functions
|
|
|
|
Section 4.8. Concurrent
Servers
|
|
|
|
Section 4.9. close
Function
|
|
|
|
Section 4.10.
getsockname and getpeername Functions
|
|
|
|
Section 4.11. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 5. TCP Client/Server
Example |
|
|
|
Section 5.1. Introduction
|
|
|
|
Section 5.2. TCP Echo Server:
main Function
|
|
|
|
Section 5.3. TCP Echo Server:
str_echo Function
|
|
|
|
Section 5.4. TCP Echo Client:
main Function
|
|
|
|
Section 5.5. TCP Echo Client:
str_cli Function
|
|
|
|
Section 5.6. Normal
Startup
|
|
|
|
Section 5.7. Normal
Termination
|
|
|
|
Section 5.8. POSIX Signal
Handling
|
|
|
|
Section 5.9. Handling
SIGCHLD Signals
|
|
|
|
Section 5.10. wait
and waitpid Functions
|
|
|
|
Section 5.11. Connection
Abort before accept Returns
|
|
|
|
Section 5.12. Termination of
Server Process
|
|
|
|
Section 5.13.
SIGPIPE Signal
|
|
|
|
Section 5.14. Crashing of
Server Host
|
|
|
|
Section 5.15. Crashing and
Rebooting of Server Host
|
|
|
|
Section 5.16. Shutdown of
Server Host
|
|
|
|
Section 5.17. Summary of TCP
Example
|
|
|
|
Section 5.18. Data Format
|
|
|
|
Section 5.19. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 6. I/O Multiplexing: The
select and poll Functions |
|
|
|
Section 6.1. Introduction
|
|
|
|
Section 6.2. I/O Models
|
|
|
|
Section 6.3. select
Function
|
|
|
|
Section 6.4. str_cli
Function (Revisited)
|
|
|
|
Section 6.5. Batch Input and
Buffering
|
|
|
|
Section 6.6. shutdown
Function
|
|
|
|
Section 6.7. str_cli
Function (Revisited Again)
|
|
|
|
Section 6.8. TCP Echo Server
(Revisited)
|
|
|
|
Section 6.9. pselect
Function
|
|
|
|
Section 6.10. poll
Function
|
|
|
|
Section 6.11. TCP Echo Server
(Revisited Again)
|
|
|
|
Section 6.12. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 7. Socket Options |
|
|
|
Section 7.1. Introduction
|
|
|
|
Section 7.2.
getsockopt and setsockopt Functions
|
|
|
|
Section 7.3. Checking if an
Option Is Supported and Obtaining the Default
|
|
|
|
Section 7.4. Socket States
|
|
|
|
Section 7.5. Generic Socket
Options
|
|
|
|
Section 7.6. IPv4 Socket
Options
|
|
|
|
Section 7.7. ICMPv6 Socket
Option
|
|
|
|
Section 7.8. IPv6 Socket
Options
|
|
|
|
Section 7.9. TCP Socket
Options
|
|
|
|
Section 7.10. SCTP Socket
Options
|
|
|
|
Section 7.11. fcntl
Function
|
|
|
|
Section 7.12. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 8. Elementary UDP
Sockets |
|
|
|
Section 8.1. Introduction
|
|
|
|
Section 8.2. recvfrom
and sendto Functions
|
|
|
|
Section 8.3. UDP Echo Server:
main Function
|
|
|
|
Section 8.4. UDP Echo Server:
dg_echo Function
|
|
|
|
Section 8.5. UDP Echo Client:
main Function
|
|
|
|
Section 8.6. UDP Echo Client:
dg_cli Function
|
|
|
|
Section 8.7. Lost
Datagrams
|
|
|
|
Section 8.8. Verifying
Received Response
|
|
|
|
Section 8.9. Server Not
Running
|
|
|
|
Section 8.10. Summary of UDP
Example
|
|
|
|
Section 8.11.
connect Function with UDP
|
|
|
|
Section 8.12. dg_cli
Function (Revisited)
|
|
|
|
Section 8.13. Lack of Flow
Control with UDP
|
|
|
|
Section 8.14. Determining
Outgoing Interface with UDP
|
|
|
|
Section 8.15. TCP and UDP
Echo Server Using select
|
|
|
|
Section 8.16. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 9. Elementary SCTP
Sockets |
|
|
|
Section 9.1. Introduction
|
|
|
|
Section 9.2. Interface
Models
|
|
|
|
Section 9.3.
sctp_bindx Function
|
|
|
|
Section 9.4.
sctp_connectx Function
|
|
|
|
Section 9.5.
sctp_getpaddrs Function
|
|
|
|
Section 9.6.
sctp_freepaddrs Function
|
|
|
|
Section 9.7.
sctp_getladdrs Function
|
|
|
|
Section 9.8.
sctp_freeladdrs Function
|
|
|
|
Section 9.9.
sctp_sendmsg Function
|
|
|
|
Section 9.10.
sctp_recvmsg Function
|
|
|
|
Section 9.11.
sctp_opt_info Function
|
|
|
|
Section 9.12.
sctp_peeloff Function
|
|
|
|
Section 9.13.
shutdown Function
|
|
|
|
Section 9.14.
Notifications
|
|
|
|
Section 9.15. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 10. SCTP Client/Server
Example |
|
|
|
Section 10.1. Introduction
|
|
|
|
Section 10.2. SCTP
One-to-Many-Style Streaming Echo Server: main Function
|
|
|
|
Section 10.3. SCTP
One-to-Many-Style Streaming Echo Client: main Function
|
|
|
|
Section 10.4. SCTP Streaming
Echo Client: str_cli Function
|
|
|
|
Section 10.5. Exploring
Head-of-Line Blocking
|
|
|
|
Section 10.6. Controlling the
Number of Streams
|
|
|
|
Section 10.7. Controlling
Termination
|
|
|
|
Section 10.8. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 11. Name and Address
Conversions |
|
|
|
Section 11.1. Introduction
|
|
|
|
Section 11.2. Domain Name
System (DNS)
|
|
|
|
Section 11.3.
gethostbyname Function
|
|
|
|
Section 11.4.
gethostbyaddr Function
|
|
|
|
Section 11.5.
getservbyname and getservbyport Functions
|
|
|
|
Section 11.6.
getaddrinfo Function
|
|
|
|
Section 11.7.
gai_strerror Function
|
|
|
|
Section 11.8.
freeaddrinfo Function
|
|
|
|
Section 11.9.
getaddrinfo Function: IPv6
|
|
|
|
Section 11.10.
getaddrinfo Function: Examples
|
|
|
|
Section 11.11.
host_serv Function
|
|
|
|
Section 11.12.
tcp_connect Function
|
|
|
|
Section 11.13.
tcp_listen Function
|
|
|
|
Section 11.14.
udp_client Function
|
|
|
|
Section 11.15.
udp_connect Function
|
|
|
|
Section 11.16.
udp_server Function
|
|
|
|
Section 11.17.
getnameinfo Function
|
|
|
|
Section 11.18. Re-entrant
Functions
|
|
|
|
Section 11.19.
gethostbyname_r and gethostbyaddr_r Functions
|
|
|
|
Section 11.20. Obsolete IPv6
Address Lookup Functions
|
|
|
|
Section 11.21. Other
Networking Information
|
|
|
|
Section 11.22. Summary
|
|
|
|
Exercises
|
|
|
|
|
Part 3: Advanced Sockets
|
|
|
|
Chapter 12. IPv4 and IPv6
Interoperability |
|
|
|
Section 12.1. Introduction
|
|
|
|
Section 12.2. IPv4 Client,
IPv6 Server
|
|
|
|
Section 12.3. IPv6 Client,
IPv4 Server
|
|
|
|
Section 12.4. IPv6
Address-Testing Macros
|
|
|
|
Section 12.5. Source Code
Portability
|
|
|
|
Section 12.6. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 13. Daemon Processes and the
inetd Superserver |
|
|
|
Section 13.1. Introduction
|
|
|
|
Section 13.2. syslogd
Daemon
|
|
|
|
Section 13.3. syslog
Function
|
|
|
|
Section 13.4.
daemon_init Function
|
|
|
|
Section 13.5. inetd
Daemon
|
|
|
|
Section 13.6.
daemon_inetd Function
|
|
|
|
Section 13.7. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 14. Advanced I/O
Functions |
|
|
|
Section 14.1. Introduction
|
|
|
|
Section 14.2. Socket
Timeouts
|
|
|
|
Section 14.3. recv
and send Functions
|
|
|
|
Section 14.4. readv
and writev Functions
|
|
|
|
Section 14.5. recvmsg
and sendmsg Functions
|
|
|
|
Section 14.6. Ancillary
Data
|
|
|
|
Section 14.7. How Much Data Is
Queued?
|
|
|
|
Section 14.8. Sockets and
Standard I/O
|
|
|
|
Section 14.9. Advanced
Polling
|
|
|
|
Section 14.10. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 15. Unix Domain
Protocols |
|
|
|
Section 15.1. Introduction
|
|
|
|
Section 15.2. Unix Domain
Socket Address Structure
|
|
|
|
Section 15.3.
socketpair Function
|
|
|
|
Section 15.4. Socket
Functions
|
|
|
|
Section 15.5. Unix Domain
Stream Client/Server
|
|
|
|
Section 15.6. Unix Domain
Datagram Client/Server
|
|
|
|
Section 15.7. Passing
Descriptors
|
|
|
|
Section 15.8. Receiving Sender
Credentials
|
|
|
|
Section 15.9. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 16. Nonblocking I/O |
|
|
|
Section 16.1. Introduction
|
|
|
|
Section 16.2. Nonblocking
Reads and Writes: str_cli Function (Revisited)
|
|
|
|
Section 16.3. Nonblocking
connect
|
|
|
|
Section 16.4. Nonblocking
connect: Daytime Client
|
|
|
|
Section 16.5. Nonblocking
connect: Web Client
|
|
|
|
Section 16.6. Nonblocking
accept
|
|
|
|
Section 16.7. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 17. ioctl
Operations |
|
|
|
Section 17.1. Introduction
|
|
|
|
Section 17.2. ioctl
Function
|
|
|
|
Section 17.3. Socket
Operations
|
|
|
|
Section 17.4. File
Operations
|
|
|
|
Section 17.5. Interface
Configuration
|
|
|
|
Section 17.6.
get_ifi_info Function
|
|
|
|
Section 17.7. Interface
Operations
|
|
|
|
Section 17.8. ARP Cache
Operations
|
|
|
|
Section 17.9. Routing Table
Operations
|
|
|
|
Section 17.10. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 18. Routing Sockets |
|
|
|
Section 18.1. Introduction
|
|
|
|
Section 18.2. Datalink Socket
Address Structure
|
|
|
|
Section 18.3. Reading and
Writing
|
|
|
|
Section 18.4. sysctl
Operations
|
|
|
|
Section 18.5.
get_ifi_info Function (Revisited)
|
|
|
|
Section 18.6. Interface Name
and Index Functions
|
|
|
|
Section 18.7. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 19. Key Management
Sockets |
|
|
|
Section 19.1. Introduction
|
|
|
|
Section 19.2. Reading and
Writing
|
|
|
|
Section 19.3. Dumping the
Security Association Database (SADB)
|
|
|
|
Section 19.4. Creating a
Static Security Association (SA)
|
|
|
|
Section 19.5. Dynamically
Maintaining SAs
|
|
|
|
Section 19.6. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 20. Broadcasting |
|
|
|
Section 20.1. Introduction
|
|
|
|
Section 20.2. Broadcast
Addresses
|
|
|
|
Section 20.3. Unicast versus
Broadcast
|
|
|
|
Section 20.4. dg_cli
Function Using Broadcasting
|
|
|
|
Section 20.5. Race
Conditions
|
|
|
|
Section 20.6. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 21. Multicasting |
|
|
|
Section 21.1. Introduction
|
|
|
|
Section 21.2. Multicast
Addresses
|
|
|
|
Section 21.3. Multicasting
versus Broadcasting on a LAN
|
|
|
|
Section 21.4. Multicasting on
a WAN
|
|
|
|
Section 21.5. Source-Specific
Multicast
|
|
|
|
Section 21.6. Multicast Socket
Options
|
|
|
|
Section 21.7.
mcast_join and Related Functions
|
|
|
|
Section 21.8. dg_cli
Function Using Multicasting
|
|
|
|
Section 21.9. Receiving IP
Multicast Infrastructure Session Announcements
|
|
|
|
Section 21.10. Sending and
Receiving
|
|
|
|
Section 21.11. Simple Network
Time Protocol (SNTP)
|
|
|
|
Section 21.12. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 22. Advanced UDP
Sockets |
|
|
|
Section 22.1. Introduction
|
|
|
|
Section 22.2. Receiving Flags,
Destination IP Address, and Interface Index
|
|
|
|
Section 22.3. Datagram
Truncation
|
|
|
|
Section 22.4. When to Use UDP
Instead of TCP
|
|
|
|
Section 22.5. Adding
Reliability to a UDP Application
|
|
|
|
Section 22.6. Binding
Interface Addresses
|
|
|
|
Section 22.7. Concurrent UDP
Servers
|
|
|
|
Section 22.8. IPv6 Packet
Information
|
|
|
|
Section 22.9. IPv6 Path MTU
Control
|
|
|
|
Section 22.10. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 23. Advanced SCTP
Sockets |
|
|
|
Section 23.1. Introduction
|
|
|
|
Section 23.2. An Autoclosing
One-to-Many-Style Server
|
|
|
|
Section 23.3. Partial
Delivery
|
|
|
|
Section 23.4.
Notifications
|
|
|
|
Section 23.5. Unordered
Data
|
|
|
|
Section 23.6. Binding a Subset
of Addresses
|
|
|
|
Section 23.7. Determining Peer
and Local Address Information
|
|
|
|
Section 23.8. Finding an
Association ID Given an IP Address
|
|
|
|
Section 23.9. Heartbeating and
Address Failure
|
|
|
|
Section 23.10. Peeling Off an
Association
|
|
|
|
Section 23.11. Controlling
Timing
|
|
|
|
Section 23.12. When to Use
SCTP Instead of TCP
|
|
|
|
Section 23.13. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 24. Out-of-Band Data |
|
|
|
Section 24.1. Introduction
|
|
|
|
Section 24.2. TCP Out-of-Band
Data
|
|
|
|
Section 24.3.
sockatmark Function
|
|
|
|
Section 24.4. TCP Out-of-Band
Data Recap
|
|
|
|
Section 24.5. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 25. Signal-Driven I/O |
|
|
|
Section 25.1. Introduction
|
|
|
|
Section 25.2. Signal-Driven
I/O for Sockets
|
|
|
|
Section 25.3. UDP Echo Server
Using SIGIO
|
|
|
|
Section 25.4. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 26. Threads |
|
|
|
Section 26.1. Introduction
|
|
|
|
Section 26.2. Basic Thread
Functions: Creation and Termination
|
|
|
|
Section 26.3. str_cli
Function Using Threads
|
|
|
|
Section 26.4. TCP Echo Server
Using Threads
|
|
|
|
Section 26.5. Thread-Specific
Data
|
|
|
|
Section 26.6. Web Client and
Simultaneous Connections (Continued)
|
|
|
|
Section 26.7. Mutexes: Mutual
Exclusion
|
|
|
|
Section 26.8. Condition
Variables
|
|
|
|
Section 26.9. Web Client and
Simultaneous Connections (Continued)
|
|
|
|
Section 26.10. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 27. IP Options |
|
|
|
Section 27.1. Introduction
|
|
|
|
Section 27.2. IPv4 Options
|
|
|
|
Section 27.3. IPv4 Source
Route Options
|
|
|
|
Section 27.4. IPv6 Extension
Headers
|
|
|
|
Section 27.5. IPv6 Hop-by-Hop
Options and Destination Options
|
|
|
|
Section 27.6. IPv6 Routing
Header
|
|
|
|
Section 27.7. IPv6 Sticky
Options
|
|
|
|
Section 27.8. Historical IPv6
Advanced API
|
|
|
|
Section 27.9. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 28. Raw Sockets |
|
|
|
Section 28.1. Introduction
|
|
|
|
Section 28.2. Raw Socket
Creation
|
|
|
|
Section 28.3. Raw Socket
Output
|
|
|
|
Section 28.4. Raw Socket
Input
|
|
|
|
Section 28.5. ping
Program
|
|
|
|
Section 28.6.
traceroute Program
|
|
|
|
Section 28.7. An ICMP Message
Daemon
|
|
|
|
Section 28.8. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 29. Datalink Access |
|
|
|
Section 29.1. Introduction
|
|
|
|
Section 29.2. BSD Packet
Filter (BPF)
|
|
|
|
Section 29.3. Datalink
Provider Interface (DLPI)
|
|
|
|
Section 29.4. Linux:
SOCK_PACKET and PF_PACKET
|
|
|
|
Section 29.5.
libpcap: Packet Capture Library
|
|
|
|
Section 29.6. libnet:
Packet Creation and Injection Library
|
|
|
|
Section 29.7. Examining the
UDP Checksum Field
|
|
|
|
Section 29.8. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 30. Client/Server Design
Alternatives |
|
|
|
Section 30.1. Introduction
|
|
|
|
Section 30.2. TCP Client
Alternatives
|
|
|
|
Section 30.3. TCP Test
Client
|
|
|
|
Section 30.4. TCP Iterative
Server
|
|
|
|
Section 30.5. TCP Concurrent
Server, One Child per Client
|
|
|
|
Section 30.6. TCP Preforked
Server, No Locking Around accept
|
|
|
|
Section 30.7. TCP Preforked
Server, File Locking Around accept
|
|
|
|
Section 30.8. TCP Preforked
Server, Thread Locking Around accept
|
|
|
|
Section 30.9. TCP Preforked
Server, Descriptor Passing
|
|
|
|
Section 30.10. TCP Concurrent
Server, One Thread per Client
|
|
|
|
Section 30.11. TCP
Prethreaded Server, per-Thread accept
|
|
|
|
Section 30.12. TCP
Prethreaded Server, Main Thread accept
|
|
|
|
Section 30.13. Summary
|
|
|
|
Exercises
|
|
|
|
|
Chapter 31. Streams |
|
|
|
Section 31.1. Introduction
|
|
|
|
Section 31.2. Overview
|
|
|
|
Section 31.3. getmsg
and putmsg Functions
|
|
|
|
Section 31.4. getpmsg
and putpmsg Functions
|
|
|
|
Section 31.5. ioctl
Function
|
|
|
|
Section 31.6. Transport
Provider Interface (TPI)
|
|
|
|
Section 31.7. Summary
|
|
|
|
Exercises
|
|
|
|
|
Appendix A. IPv4, IPv6, ICMPv4, and
ICMPv6 |
|
|
|
Section A.1. Introduction
|
|
|
|
Section A.2. IPv4 Header
|
|
|
|
Section A.3. IPv6 Header
|
|
|
|
Section A.4. IPv4
Addresses
|
|
|
|
Section A.5. IPv6
Addresses
|
|
|
|
Section A.6. Internet Control
Message Protocols (ICMPv4 and ICMPv6)
|
|
|
|
Appendix B. Virtual Networks |
|
|
|
Section B.1. Introduction
|
|
|
|
Section B.2. The MBone
|
|
|
|
Section B.3. The 6bone
|
|
|
|
Section B.4. IPv6 Transition:
6to4
|
|
|
|
Appendix C. Debugging
Techniques |
|
|
|
Section C.1. System Call
Tracing
|
|
|
|
Section C.2. Standard
Internet Services
|
|
|
|
Section C.3. sock
Program
|
|
|
|
Section C.4. Small Test
Programs
|
|
|
|
Section C.5. tcpdump
Program
|
|
|
|
Section C.6. netstat
Program
|
|
|
|
Section C.7. lsof
Program
|
|
|
|
Appendix D. Miscellaneous Source
Code |
|
|
|
Section D.1. unp.h
Header
|
|
|
|
Section D.2.
config.h Header
|
|
|
|
Section D.3. Standard Error
Functions
|
|
|
|
Appendix E. Solutions to Selected
Exercises |
|
|
|
Chapter 1
|
|
|
|
Chapter 2
|
|
|
|
Chapter 3
|
|
|
|
Chapter 4
|
|
|
|
Chapter 5
|
|
|
|
Chapter 6
|
|
|
|
Chapter 7
|
|
|
|
Chapter 8
|
|
|
|
Chapter 9
|
|
|
|
Chapter 10
|
|
|
|
Chapter 11
|
|
|
|
Chapter 12
|
|
|
|
Chapter 13
|
|
|
|
Chapter 14
|
|
|
|
Chapter 15
|
|
|
|
Chapter 16
|
|
|
|
Chapter 17
|
|
|
|
Chapter 18
|
|
|
|
Chapter 20
|
|
|
|
Chapter 21
|
|
|
|
Chapter 22
|
|
|
|
Chapter 24
|
|
|
|
Chapter 25
|
|
|
|
Chapter 26
|
|
|
|
Chapter 27
|
|
|
|
Chapter 28
|
|
|
|
Chapter 29
|
|
|
|
Chapter 30
|
|
|
|
Chapter 31
|
|
|
|
Bibliography |