UNIX Network Programming Volume 1, Third Edition [Electronic resources] : The Sockets Networking API نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

UNIX Network Programming Volume 1, Third Edition [Electronic resources] : The Sockets Networking API - نسخه متنی

Addison Wesley

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید

Table of Contents

UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking API
By
Publisher
: Addison Wesley
Pub Date: November 21, 2003
ISBN: 0-13-141155-1
Pages: 1024

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


/ 450