Unix Network Programming Vol 1; Stevens W., Fenner Bill, Andrew M. Rudoff; 2003

Unix Network Programming Vol 1 Upplaga 3

av Stevens W., Fenner Bill, Andrew M. Rudoff
Foreword.

Preface.
I. INTRODUCTION AND TCP/IP.

1. Introduction.

Introduction.

A Simple Daytime Client.

Protocol Independence.

Error Handling: Wrapper Functions.

A Simple Daytime Server.

Roadmap to Client/Server Examples in the Text.

OSI Model.

BSD Networking History.

Test Networks and Hosts.

Unix Standards.

64-Bit Architectures.

Summary.

2. The Transport Layer: TCP, UDP, and SCTP.

Introduction.

The Big Picture.

User Datagram Protocol (UDP).

Transmission Control Protocol (TCP).

Stream Control Transmission Protocol (SCTP).

TCP Connection Establishment and Termination.

TIME_WAIT State.

SCTP Association Establishment and Termination.

Port Numbers.

TCP Port Numbers and Concurrent Servers.

Buffer Sizes and Limitations.

Standard Internet Services.

Protocol Usage by Common Internet Applications.

Summary.

II. ELEMENTARY SOCKETS.

3. Sockets Introduction.

Introduction.

Socket Address Structures.

Value-Result Arguments.

Byte Ordering Functions.

Byte Manipulation Functions.

inet_aton, inet_addr, and inet_ntoa Functions.

inet_pton and inet_ntop Functions.

sock_ntop and Related Functions.

readn, writen, and readline Functions.

Summary.

4. Elementary TCP Sockets.

Introduction.

socket Function.

connect Function.

bind Function.

listen Function.

accept Function.

fork and exec Functions.

Concurrent Servers.

close Function.

getsockname and getpeername Functions.

Summary.

5. TCP Client/Server Example.

Introduction.

TCP Echo Server: main Function.

TCP Echo Server: str_echo Function.

TCP Echo Client: main Function.

TCP Echo Client: str_cli Function.

Normal Startup.

Normal Termination.

POSIX Signal Handling.

Handling SIGCHLD Signals.

wait and waitpid Functions.

Connection Abort before accept Returns.

Termination of Server Process.

SIGPIPE Signal.

Crashing of Server Host.

Crashing and Rebooting of Server Host.

Shutdown of Server Host.

Summary of TCP Example.

Data Format.

Summary.

6. I/O Multiplexing: The select and poll Functions.

Introduction.

I/O Models.

select Function.

str_cli Function (Revisited).

Batch Input and Buffering.

shutdown Function.

str_cli Function (Revisited Again).

TCP Echo Server (Revisited).

pselect Function.

poll Function.

TCP Echo Server (Revisited Again).

Summary.

7. Socket Options.

Introduction.

getsockopt and setsockopt Functions.

Checking if an Option Is Supported and Obtaining the Default.

Socket States.

Generic Socket Options.

IPv4 Socket Options.

ICMPv6 Socket Option.

IPv6 Socket Options.

TCP Socket Options.

SCTP Socket Options.

fcntl Function.

Summary.

8. Elementary UDP Sockets.

Introduction.

recvfrom and sendto Functions.

UDP Echo Server: main Function.

UDP Echo Server: dg_echo Function.

UDP Echo Client: main Function.

UDP Echo Client: dg_cli Function.

Lost Datagrams.

Verifying Received Response.

Server Not Running.

Summary of UDP Example.

connect Function with UDP.

dg_cli Function (Revisited).

Lack of Flow Control with UDP.

Determining Outgoing Interface with UDP.

TCP and UDP Echo Server Using select.

Summary.

9. Elementary SCTP Sockets.

Introduction.

Interface Models.

sctp_bindx Function.

sctp_connectx Function.

sctp_getpaddrs Function.

sctp_freepaddrs Function.

sctp_getladdrs Function.

sctp_freeladdrs Function.

sctp_sendmsg Function.

sctp_recvmsg Function.

sctp_opt_info Function.

sctp_peeloff Function.

shutdown Function.

Notifications.

Summary.

10. SCTP Client/Server Example.

Introduction.

SCTP One-to-Many-Style Streaming Echo Server: main Function.

SCTP One-to-Many-Style Streaming Echo Client: main Function.

SCTP Streaming Echo Client: str_cli Function.

Exploring Head-of-Line Blocking.

Controlling the Number of Streams.

Controlling Termination.

Summary.

11. Name and Address Conversions.

Introduction.

Domain Name System (DNS).

gethostbyname Function.

gethostbyaddr Function.

getservbyname and getservbyport Functions.

getaddrinfo Function.

gai_strerror Function.

freeaddrinfo Function.

getaddrinfo Function: IPv6.

getaddrinfo Function: Examples.

host_serv Function.

tcp_connect Function.

tcp_listen Function.

udp_client Function.

udp_connect Function.

udp_server Function.

getnameinfo Function.

Re-entrant Functions.

gethostbyname_r and gethostbyaddr_r Functions.

Obsolete IPv6 Address Lookup Functions.

Other Networking Information.

Summary.

III. ADVANCED SOCKETS.

12. IPv4 and IPv6 Interoperability.

Introduction.

IPv4 Client, IPv6 Server.

IPv6 Client, IPv4 Server.

IPv6 Address-Testing Macros.

Source Code Portability.

Summary.

13. Daemon Processes and the inetd Superserver.

Introduction.

syslogd Daemon.

syslog Function.

daemon_init Function.

inetd Daemon.

daemon_inetd Function.

Summary.

14. Advanced I/O Functions.

Introduction.

Socket Timeouts.

recv and send Functions.

readv and writev Functions.

recvmsg and sendmsg Functions.

Ancillary Data.

How Much Data Is Queued?

Sockets and Standard I/O.

Advanced Polling.

Summary.

15. Unix Domain Protocols.

Introduction.

Unix Domain Socket Address Structure.

socketpair Function.

Socket Functions.

Unix Domain Stream Client/Server.

Unix Domain Datagram Client/Server.

Passing Descriptors.

Receiving Sender Credentials.

Summary.

16. Nonblocking I/O.

Introduction.

Nonblocking Reads and Writes: str_cli Function (Revisited).

Nonblocking connect.

Nonblocking connect: Daytime Client.

Nonblocking connect: Web Client.

Nonblocking accept.

Summary.

17. ioctl Operations.

Introduction.

ioctl Function.

Socket Operations.

File Operations.

Interface Configuration.

get_ifi_info Function.

Interface Operations.

ARP Cache Operations.

Routing Table Operations.

Summary.

18. Routing Sockets.

Introduction.

Datalink Socket Address Structure.

Reading and Writing.

sysctl Operations.

get_ifi_info Function (Revisited).

Interface Name and Index Functions.

Summary.

19. Key Management Sockets.

Introduction.

Reading and Writing.

Dumping the Security Association Database (SADB).

Creating a Static Security Association (SA).

Dynamically Maintaining SAs.

Summary.

20. Broadcasting.

Introduction.

Broadcast Addresses.

Unicast versus Broadcast.

dg_cli Function Using Broadcasting.

Race Conditions.

Summary.

21. Multicasting.

Introduction.

Multicast Addresses.

Multicasting versus Broadcasting on a LAN.

Multicasting on a WAN.

Source-Specific Multicast.

Multicast Socket Options.

mcast_join and Related Functions.

dg_cli Function Using Multicasting.

Receiving IP Multicast Infrastructure Session Announcements.

Sending and Receiving.

Simple Network Time Protocol (SNTP).

Summary.

22. Advanced UDP Sockets.

Introduction.

Receiving Flags, Destination IP Address, and Interface Index.

Datagram Truncation.

When to Use UDP Instead of TCP.

Adding Reliability to a UDP Application.

Binding Interface Addresses.

Concurrent UDP Servers.

IPv6 Packet Information.

IPv6 Path MTU Control.

Summary.

23. Advanced SCTP Sockets.

Introduction.

An Autoclosing One-to-Many-Style Server.

Partial Delivery.

Notifications.

Unordered Data.

Binding a Subset of Addresses.

Determining Peer and Local Address Information.

Finding an Association ID Given an IP Address.

Heartbeating and Address Failure.

Peeling Off an Association.

Controlling Timing.

When to Use SCTP Instead of TCP.

Summary.

24. Out-of-Band Data.

Introduction.

TCP Out-of-Band Data.

sockatmark Function.

TCP Out-of-Band Data Recap.

Summary.

25. Signal-Driven I/O.

Introduction.

Signal-Driven I/O for Sockets.

UDP Echo Server Using SIGIO.

Summary.

26. Threads.

Introduction.

Basic Thread Functions: Creation and Termination.

str_cli Function Using Threads.

TCP Echo Server Using Threads.

Thread-Specific Data.

Web Client and Simultaneous Connections (Continued).

Mutexes: Mutual Exclusion.

Condition Variables.

Web Client and Simultaneous Connections (Continued).

Summary.

27. IP Options.

Introduction.

IPv4 Options.

IPv4 Source Route Options.

IPv6 Extension Headers.

IPv6 Hop-by-Hop Options and Destination Options.

IPv6 Routing Header.

IPv6 Sticky Options.

Historical IPv6 Advanced API.

Summary.

28. Raw Sockets.

Introduction.

Raw Socket Creation.

Raw Socket Output.

Raw Socket Input.

ping Program.

traceroute Program.

An ICMP Message Daemon.

Summary.

29. Datalink Access.

Introduction.

BSD Packet Filter (BPF).

Datalink Provider Interface (DLPI).

Linux: SOCK_PACKET and PF_PACKET.

libpcap: Packet Capture Library.

libnet: Packet Creation and Injection Library.

Examining the UDP Checksum Field.

Summary.

30. Client/Server Design Alternatives.

Introduction.

TCP Client Alternatives.

TCP Test Client.

TCP Iterative Server.

TCP Concurrent Server, One Child per Client.

TCP Preforked Server, No Locking Around accept.

TCP Preforked Server, File Locking Around accept.

TCP Preforked Server, Thread Locking Around accept.

TCP Preforked Server, Descriptor Passing.

TCP Concurrent Server, One Thread per Client.

TCP Prethreaded Server, per-Thread accept.

TCP Prethreaded Server, Main Thread accept.

Summary.

31. STREAMS.

Introduction.

Overview.

getmsg and putmsg Functions.

getpmsg and putpmsg Functions.

ioctl Function.

Transport Provider Interface (TPI).

Summary.

Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6.

Introduction.

IPv4 Header.

IPv6 Header.

IPv4 Addresses.

IPv6 Addresses.

Internet Control Message Protocols (ICMPv4 and ICMPv6).

Appendix B. Virtual Networks.

Introduction.

The MBone.

The 6bone.

IPv6 Transition: 6to4.

Appendix C. Debugging Techniques.

System Call Tracing.

Standard Internet Services.

sock Program.

Small Test Programs.

tcpdump Program.

netstat Program.

lsof Program.

Appendix D. Miscellaneous Source Code.

unp.h Header.

config.h Header.

Standard Error Functions.

Appendix E. Solutions to Selected Exercises.
Bibliography.
Index.
Foreword.

Preface.
I. INTRODUCTION AND TCP/IP.

1. Introduction.

Introduction.

A Simple Daytime Client.

Protocol Independence.

Error Handling: Wrapper Functions.

A Simple Daytime Server.

Roadmap to Client/Server Examples in the Text.

OSI Model.

BSD Networking History.

Test Networks and Hosts.

Unix Standards.

64-Bit Architectures.

Summary.

2. The Transport Layer: TCP, UDP, and SCTP.

Introduction.

The Big Picture.

User Datagram Protocol (UDP).

Transmission Control Protocol (TCP).

Stream Control Transmission Protocol (SCTP).

TCP Connection Establishment and Termination.

TIME_WAIT State.

SCTP Association Establishment and Termination.

Port Numbers.

TCP Port Numbers and Concurrent Servers.

Buffer Sizes and Limitations.

Standard Internet Services.

Protocol Usage by Common Internet Applications.

Summary.

II. ELEMENTARY SOCKETS.

3. Sockets Introduction.

Introduction.

Socket Address Structures.

Value-Result Arguments.

Byte Ordering Functions.

Byte Manipulation Functions.

inet_aton, inet_addr, and inet_ntoa Functions.

inet_pton and inet_ntop Functions.

sock_ntop and Related Functions.

readn, writen, and readline Functions.

Summary.

4. Elementary TCP Sockets.

Introduction.

socket Function.

connect Function.

bind Function.

listen Function.

accept Function.

fork and exec Functions.

Concurrent Servers.

close Function.

getsockname and getpeername Functions.

Summary.

5. TCP Client/Server Example.

Introduction.

TCP Echo Server: main Function.

TCP Echo Server: str_echo Function.

TCP Echo Client: main Function.

TCP Echo Client: str_cli Function.

Normal Startup.

Normal Termination.

POSIX Signal Handling.

Handling SIGCHLD Signals.

wait and waitpid Functions.

Connection Abort before accept Returns.

Termination of Server Process.

SIGPIPE Signal.

Crashing of Server Host.

Crashing and Rebooting of Server Host.

Shutdown of Server Host.

Summary of TCP Example.

Data Format.

Summary.

6. I/O Multiplexing: The select and poll Functions.

Introduction.

I/O Models.

select Function.

str_cli Function (Revisited).

Batch Input and Buffering.

shutdown Function.

str_cli Function (Revisited Again).

TCP Echo Server (Revisited).

pselect Function.

poll Function.

TCP Echo Server (Revisited Again).

Summary.

7. Socket Options.

Introduction.

getsockopt and setsockopt Functions.

Checking if an Option Is Supported and Obtaining the Default.

Socket States.

Generic Socket Options.

IPv4 Socket Options.

ICMPv6 Socket Option.

IPv6 Socket Options.

TCP Socket Options.

SCTP Socket Options.

fcntl Function.

Summary.

8. Elementary UDP Sockets.

Introduction.

recvfrom and sendto Functions.

UDP Echo Server: main Function.

UDP Echo Server: dg_echo Function.

UDP Echo Client: main Function.

UDP Echo Client: dg_cli Function.

Lost Datagrams.

Verifying Received Response.

Server Not Running.

Summary of UDP Example.

connect Function with UDP.

dg_cli Function (Revisited).

Lack of Flow Control with UDP.

Determining Outgoing Interface with UDP.

TCP and UDP Echo Server Using select.

Summary.

9. Elementary SCTP Sockets.

Introduction.

Interface Models.

sctp_bindx Function.

sctp_connectx Function.

sctp_getpaddrs Function.

sctp_freepaddrs Function.

sctp_getladdrs Function.

sctp_freeladdrs Function.

sctp_sendmsg Function.

sctp_recvmsg Function.

sctp_opt_info Function.

sctp_peeloff Function.

shutdown Function.

Notifications.

Summary.

10. SCTP Client/Server Example.

Introduction.

SCTP One-to-Many-Style Streaming Echo Server: main Function.

SCTP One-to-Many-Style Streaming Echo Client: main Function.

SCTP Streaming Echo Client: str_cli Function.

Exploring Head-of-Line Blocking.

Controlling the Number of Streams.

Controlling Termination.

Summary.

11. Name and Address Conversions.

Introduction.

Domain Name System (DNS).

gethostbyname Function.

gethostbyaddr Function.

getservbyname and getservbyport Functions.

getaddrinfo Function.

gai_strerror Function.

freeaddrinfo Function.

getaddrinfo Function: IPv6.

getaddrinfo Function: Examples.

host_serv Function.

tcp_connect Function.

tcp_listen Function.

udp_client Function.

udp_connect Function.

udp_server Function.

getnameinfo Function.

Re-entrant Functions.

gethostbyname_r and gethostbyaddr_r Functions.

Obsolete IPv6 Address Lookup Functions.

Other Networking Information.

Summary.

III. ADVANCED SOCKETS.

12. IPv4 and IPv6 Interoperability.

Introduction.

IPv4 Client, IPv6 Server.

IPv6 Client, IPv4 Server.

IPv6 Address-Testing Macros.

Source Code Portability.

Summary.

13. Daemon Processes and the inetd Superserver.

Introduction.

syslogd Daemon.

syslog Function.

daemon_init Function.

inetd Daemon.

daemon_inetd Function.

Summary.

14. Advanced I/O Functions.

Introduction.

Socket Timeouts.

recv and send Functions.

readv and writev Functions.

recvmsg and sendmsg Functions.

Ancillary Data.

How Much Data Is Queued?

Sockets and Standard I/O.

Advanced Polling.

Summary.

15. Unix Domain Protocols.

Introduction.

Unix Domain Socket Address Structure.

socketpair Function.

Socket Functions.

Unix Domain Stream Client/Server.

Unix Domain Datagram Client/Server.

Passing Descriptors.

Receiving Sender Credentials.

Summary.

16. Nonblocking I/O.

Introduction.

Nonblocking Reads and Writes: str_cli Function (Revisited).

Nonblocking connect.

Nonblocking connect: Daytime Client.

Nonblocking connect: Web Client.

Nonblocking accept.

Summary.

17. ioctl Operations.

Introduction.

ioctl Function.

Socket Operations.

File Operations.

Interface Configuration.

get_ifi_info Function.

Interface Operations.

ARP Cache Operations.

Routing Table Operations.

Summary.

18. Routing Sockets.

Introduction.

Datalink Socket Address Structure.

Reading and Writing.

sysctl Operations.

get_ifi_info Function (Revisited).

Interface Name and Index Functions.

Summary.

19. Key Management Sockets.

Introduction.

Reading and Writing.

Dumping the Security Association Database (SADB).

Creating a Static Security Association (SA).

Dynamically Maintaining SAs.

Summary.

20. Broadcasting.

Introduction.

Broadcast Addresses.

Unicast versus Broadcast.

dg_cli Function Using Broadcasting.

Race Conditions.

Summary.

21. Multicasting.

Introduction.

Multicast Addresses.

Multicasting versus Broadcasting on a LAN.

Multicasting on a WAN.

Source-Specific Multicast.

Multicast Socket Options.

mcast_join and Related Functions.

dg_cli Function Using Multicasting.

Receiving IP Multicast Infrastructure Session Announcements.

Sending and Receiving.

Simple Network Time Protocol (SNTP).

Summary.

22. Advanced UDP Sockets.

Introduction.

Receiving Flags, Destination IP Address, and Interface Index.

Datagram Truncation.

When to Use UDP Instead of TCP.

Adding Reliability to a UDP Application.

Binding Interface Addresses.

Concurrent UDP Servers.

IPv6 Packet Information.

IPv6 Path MTU Control.

Summary.

23. Advanced SCTP Sockets.

Introduction.

An Autoclosing One-to-Many-Style Server.

Partial Delivery.

Notifications.

Unordered Data.

Binding a Subset of Addresses.

Determining Peer and Local Address Information.

Finding an Association ID Given an IP Address.

Heartbeating and Address Failure.

Peeling Off an Association.

Controlling Timing.

When to Use SCTP Instead of TCP.

Summary.

24. Out-of-Band Data.

Introduction.

TCP Out-of-Band Data.

sockatmark Function.

TCP Out-of-Band Data Recap.

Summary.

25. Signal-Driven I/O.

Introduction.

Signal-Driven I/O for Sockets.

UDP Echo Server Using SIGIO.

Summary.

26. Threads.

Introduction.

Basic Thread Functions: Creation and Termination.

str_cli Function Using Threads.

TCP Echo Server Using Threads.

Thread-Specific Data.

Web Client and Simultaneous Connections (Continued).

Mutexes: Mutual Exclusion.

Condition Variables.

Web Client and Simultaneous Connections (Continued).

Summary.

27. IP Options.

Introduction.

IPv4 Options.

IPv4 Source Route Options.

IPv6 Extension Headers.

IPv6 Hop-by-Hop Options and Destination Options.

IPv6 Routing Header.

IPv6 Sticky Options.

Historical IPv6 Advanced API.

Summary.

28. Raw Sockets.

Introduction.

Raw Socket Creation.

Raw Socket Output.

Raw Socket Input.

ping Program.

traceroute Program.

An ICMP Message Daemon.

Summary.

29. Datalink Access.

Introduction.

BSD Packet Filter (BPF).

Datalink Provider Interface (DLPI).

Linux: SOCK_PACKET and PF_PACKET.

libpcap: Packet Capture Library.

libnet: Packet Creation and Injection Library.

Examining the UDP Checksum Field.

Summary.

30. Client/Server Design Alternatives.

Introduction.

TCP Client Alternatives.

TCP Test Client.

TCP Iterative Server.

TCP Concurrent Server, One Child per Client.

TCP Preforked Server, No Locking Around accept.

TCP Preforked Server, File Locking Around accept.

TCP Preforked Server, Thread Locking Around accept.

TCP Preforked Server, Descriptor Passing.

TCP Concurrent Server, One Thread per Client.

TCP Prethreaded Server, per-Thread accept.

TCP Prethreaded Server, Main Thread accept.

Summary.

31. STREAMS.

Introduction.

Overview.

getmsg and putmsg Functions.

getpmsg and putpmsg Functions.

ioctl Function.

Transport Provider Interface (TPI).

Summary.

Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6.

Introduction.

IPv4 Header.

IPv6 Header.

IPv4 Addresses.

IPv6 Addresses.

Internet Control Message Protocols (ICMPv4 and ICMPv6).

Appendix B. Virtual Networks.

Introduction.

The MBone.

The 6bone.

IPv6 Transition: 6to4.

Appendix C. Debugging Techniques.

System Call Tracing.

Standard Internet Services.

sock Program.

Small Test Programs.

tcpdump Program.

netstat Program.

lsof Program.

Appendix D. Miscellaneous Source Code.

unp.h Header.

config.h Header.

Standard Error Functions.

Appendix E. Solutions to Selected Exercises.
Bibliography.
Index.
Upplaga: 3e upplagan
Utgiven: 2003
ISBN: 9780131411555
Förlag: Pearson Professional Education
Format: Inbunden
Språk: Engelska
Sidor: 1024 st
Foreword.

Preface.
I. INTRODUCTION AND TCP/IP.

1. Introduction.

Introduction.

A Simple Daytime Client.

Protocol Independence.

Error Handling: Wrapper Functions.

A Simple Daytime Server.

Roadmap to Client/Server Examples in the Text.

OSI Model.

BSD Networking History.

Test Networks and Hosts.

Unix Standards.

64-Bit Architectures.

Summary.

2. The Transport Layer: TCP, UDP, and SCTP.

Introduction.

The Big Picture.

User Datagram Protocol (UDP).

Transmission Control Protocol (TCP).

Stream Control Transmission Protocol (SCTP).

TCP Connection Establishment and Termination.

TIME_WAIT State.

SCTP Association Establishment and Termination.

Port Numbers.

TCP Port Numbers and Concurrent Servers.

Buffer Sizes and Limitations.

Standard Internet Services.

Protocol Usage by Common Internet Applications.

Summary.

II. ELEMENTARY SOCKETS.

3. Sockets Introduction.

Introduction.

Socket Address Structures.

Value-Result Arguments.

Byte Ordering Functions.

Byte Manipulation Functions.

inet_aton, inet_addr, and inet_ntoa Functions.

inet_pton and inet_ntop Functions.

sock_ntop and Related Functions.

readn, writen, and readline Functions.

Summary.

4. Elementary TCP Sockets.

Introduction.

socket Function.

connect Function.

bind Function.

listen Function.

accept Function.

fork and exec Functions.

Concurrent Servers.

close Function.

getsockname and getpeername Functions.

Summary.

5. TCP Client/Server Example.

Introduction.

TCP Echo Server: main Function.

TCP Echo Server: str_echo Function.

TCP Echo Client: main Function.

TCP Echo Client: str_cli Function.

Normal Startup.

Normal Termination.

POSIX Signal Handling.

Handling SIGCHLD Signals.

wait and waitpid Functions.

Connection Abort before accept Returns.

Termination of Server Process.

SIGPIPE Signal.

Crashing of Server Host.

Crashing and Rebooting of Server Host.

Shutdown of Server Host.

Summary of TCP Example.

Data Format.

Summary.

6. I/O Multiplexing: The select and poll Functions.

Introduction.

I/O Models.

select Function.

str_cli Function (Revisited).

Batch Input and Buffering.

shutdown Function.

str_cli Function (Revisited Again).

TCP Echo Server (Revisited).

pselect Function.

poll Function.

TCP Echo Server (Revisited Again).

Summary.

7. Socket Options.

Introduction.

getsockopt and setsockopt Functions.

Checking if an Option Is Supported and Obtaining the Default.

Socket States.

Generic Socket Options.

IPv4 Socket Options.

ICMPv6 Socket Option.

IPv6 Socket Options.

TCP Socket Options.

SCTP Socket Options.

fcntl Function.

Summary.

8. Elementary UDP Sockets.

Introduction.

recvfrom and sendto Functions.

UDP Echo Server: main Function.

UDP Echo Server: dg_echo Function.

UDP Echo Client: main Function.

UDP Echo Client: dg_cli Function.

Lost Datagrams.

Verifying Received Response.

Server Not Running.

Summary of UDP Example.

connect Function with UDP.

dg_cli Function (Revisited).

Lack of Flow Control with UDP.

Determining Outgoing Interface with UDP.

TCP and UDP Echo Server Using select.

Summary.

9. Elementary SCTP Sockets.

Introduction.

Interface Models.

sctp_bindx Function.

sctp_connectx Function.

sctp_getpaddrs Function.

sctp_freepaddrs Function.

sctp_getladdrs Function.

sctp_freeladdrs Function.

sctp_sendmsg Function.

sctp_recvmsg Function.

sctp_opt_info Function.

sctp_peeloff Function.

shutdown Function.

Notifications.

Summary.

10. SCTP Client/Server Example.

Introduction.

SCTP One-to-Many-Style Streaming Echo Server: main Function.

SCTP One-to-Many-Style Streaming Echo Client: main Function.

SCTP Streaming Echo Client: str_cli Function.

Exploring Head-of-Line Blocking.

Controlling the Number of Streams.

Controlling Termination.

Summary.

11. Name and Address Conversions.

Introduction.

Domain Name System (DNS).

gethostbyname Function.

gethostbyaddr Function.

getservbyname and getservbyport Functions.

getaddrinfo Function.

gai_strerror Function.

freeaddrinfo Function.

getaddrinfo Function: IPv6.

getaddrinfo Function: Examples.

host_serv Function.

tcp_connect Function.

tcp_listen Function.

udp_client Function.

udp_connect Function.

udp_server Function.

getnameinfo Function.

Re-entrant Functions.

gethostbyname_r and gethostbyaddr_r Functions.

Obsolete IPv6 Address Lookup Functions.

Other Networking Information.

Summary.

III. ADVANCED SOCKETS.

12. IPv4 and IPv6 Interoperability.

Introduction.

IPv4 Client, IPv6 Server.

IPv6 Client, IPv4 Server.

IPv6 Address-Testing Macros.

Source Code Portability.

Summary.

13. Daemon Processes and the inetd Superserver.

Introduction.

syslogd Daemon.

syslog Function.

daemon_init Function.

inetd Daemon.

daemon_inetd Function.

Summary.

14. Advanced I/O Functions.

Introduction.

Socket Timeouts.

recv and send Functions.

readv and writev Functions.

recvmsg and sendmsg Functions.

Ancillary Data.

How Much Data Is Queued?

Sockets and Standard I/O.

Advanced Polling.

Summary.

15. Unix Domain Protocols.

Introduction.

Unix Domain Socket Address Structure.

socketpair Function.

Socket Functions.

Unix Domain Stream Client/Server.

Unix Domain Datagram Client/Server.

Passing Descriptors.

Receiving Sender Credentials.

Summary.

16. Nonblocking I/O.

Introduction.

Nonblocking Reads and Writes: str_cli Function (Revisited).

Nonblocking connect.

Nonblocking connect: Daytime Client.

Nonblocking connect: Web Client.

Nonblocking accept.

Summary.

17. ioctl Operations.

Introduction.

ioctl Function.

Socket Operations.

File Operations.

Interface Configuration.

get_ifi_info Function.

Interface Operations.

ARP Cache Operations.

Routing Table Operations.

Summary.

18. Routing Sockets.

Introduction.

Datalink Socket Address Structure.

Reading and Writing.

sysctl Operations.

get_ifi_info Function (Revisited).

Interface Name and Index Functions.

Summary.

19. Key Management Sockets.

Introduction.

Reading and Writing.

Dumping the Security Association Database (SADB).

Creating a Static Security Association (SA).

Dynamically Maintaining SAs.

Summary.

20. Broadcasting.

Introduction.

Broadcast Addresses.

Unicast versus Broadcast.

dg_cli Function Using Broadcasting.

Race Conditions.

Summary.

21. Multicasting.

Introduction.

Multicast Addresses.

Multicasting versus Broadcasting on a LAN.

Multicasting on a WAN.

Source-Specific Multicast.

Multicast Socket Options.

mcast_join and Related Functions.

dg_cli Function Using Multicasting.

Receiving IP Multicast Infrastructure Session Announcements.

Sending and Receiving.

Simple Network Time Protocol (SNTP).

Summary.

22. Advanced UDP Sockets.

Introduction.

Receiving Flags, Destination IP Address, and Interface Index.

Datagram Truncation.

When to Use UDP Instead of TCP.

Adding Reliability to a UDP Application.

Binding Interface Addresses.

Concurrent UDP Servers.

IPv6 Packet Information.

IPv6 Path MTU Control.

Summary.

23. Advanced SCTP Sockets.

Introduction.

An Autoclosing One-to-Many-Style Server.

Partial Delivery.

Notifications.

Unordered Data.

Binding a Subset of Addresses.

Determining Peer and Local Address Information.

Finding an Association ID Given an IP Address.

Heartbeating and Address Failure.

Peeling Off an Association.

Controlling Timing.

When to Use SCTP Instead of TCP.

Summary.

24. Out-of-Band Data.

Introduction.

TCP Out-of-Band Data.

sockatmark Function.

TCP Out-of-Band Data Recap.

Summary.

25. Signal-Driven I/O.

Introduction.

Signal-Driven I/O for Sockets.

UDP Echo Server Using SIGIO.

Summary.

26. Threads.

Introduction.

Basic Thread Functions: Creation and Termination.

str_cli Function Using Threads.

TCP Echo Server Using Threads.

Thread-Specific Data.

Web Client and Simultaneous Connections (Continued).

Mutexes: Mutual Exclusion.

Condition Variables.

Web Client and Simultaneous Connections (Continued).

Summary.

27. IP Options.

Introduction.

IPv4 Options.

IPv4 Source Route Options.

IPv6 Extension Headers.

IPv6 Hop-by-Hop Options and Destination Options.

IPv6 Routing Header.

IPv6 Sticky Options.

Historical IPv6 Advanced API.

Summary.

28. Raw Sockets.

Introduction.

Raw Socket Creation.

Raw Socket Output.

Raw Socket Input.

ping Program.

traceroute Program.

An ICMP Message Daemon.

Summary.

29. Datalink Access.

Introduction.

BSD Packet Filter (BPF).

Datalink Provider Interface (DLPI).

Linux: SOCK_PACKET and PF_PACKET.

libpcap: Packet Capture Library.

libnet: Packet Creation and Injection Library.

Examining the UDP Checksum Field.

Summary.

30. Client/Server Design Alternatives.

Introduction.

TCP Client Alternatives.

TCP Test Client.

TCP Iterative Server.

TCP Concurrent Server, One Child per Client.

TCP Preforked Server, No Locking Around accept.

TCP Preforked Server, File Locking Around accept.

TCP Preforked Server, Thread Locking Around accept.

TCP Preforked Server, Descriptor Passing.

TCP Concurrent Server, One Thread per Client.

TCP Prethreaded Server, per-Thread accept.

TCP Prethreaded Server, Main Thread accept.

Summary.

31. STREAMS.

Introduction.

Overview.

getmsg and putmsg Functions.

getpmsg and putpmsg Functions.

ioctl Function.

Transport Provider Interface (TPI).

Summary.

Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6.

Introduction.

IPv4 Header.

IPv6 Header.

IPv4 Addresses.

IPv6 Addresses.

Internet Control Message Protocols (ICMPv4 and ICMPv6).

Appendix B. Virtual Networks.

Introduction.

The MBone.

The 6bone.

IPv6 Transition: 6to4.

Appendix C. Debugging Techniques.

System Call Tracing.

Standard Internet Services.

sock Program.

Small Test Programs.

tcpdump Program.

netstat Program.

lsof Program.

Appendix D. Miscellaneous Source Code.

unp.h Header.

config.h Header.

Standard Error Functions.

Appendix E. Solutions to Selected Exercises.
Bibliography.
Index.
Foreword.

Preface.
I. INTRODUCTION AND TCP/IP.

1. Introduction.

Introduction.

A Simple Daytime Client.

Protocol Independence.

Error Handling: Wrapper Functions.

A Simple Daytime Server.

Roadmap to Client/Server Examples in the Text.

OSI Model.

BSD Networking History.

Test Networks and Hosts.

Unix Standards.

64-Bit Architectures.

Summary.

2. The Transport Layer: TCP, UDP, and SCTP.

Introduction.

The Big Picture.

User Datagram Protocol (UDP).

Transmission Control Protocol (TCP).

Stream Control Transmission Protocol (SCTP).

TCP Connection Establishment and Termination.

TIME_WAIT State.

SCTP Association Establishment and Termination.

Port Numbers.

TCP Port Numbers and Concurrent Servers.

Buffer Sizes and Limitations.

Standard Internet Services.

Protocol Usage by Common Internet Applications.

Summary.

II. ELEMENTARY SOCKETS.

3. Sockets Introduction.

Introduction.

Socket Address Structures.

Value-Result Arguments.

Byte Ordering Functions.

Byte Manipulation Functions.

inet_aton, inet_addr, and inet_ntoa Functions.

inet_pton and inet_ntop Functions.

sock_ntop and Related Functions.

readn, writen, and readline Functions.

Summary.

4. Elementary TCP Sockets.

Introduction.

socket Function.

connect Function.

bind Function.

listen Function.

accept Function.

fork and exec Functions.

Concurrent Servers.

close Function.

getsockname and getpeername Functions.

Summary.

5. TCP Client/Server Example.

Introduction.

TCP Echo Server: main Function.

TCP Echo Server: str_echo Function.

TCP Echo Client: main Function.

TCP Echo Client: str_cli Function.

Normal Startup.

Normal Termination.

POSIX Signal Handling.

Handling SIGCHLD Signals.

wait and waitpid Functions.

Connection Abort before accept Returns.

Termination of Server Process.

SIGPIPE Signal.

Crashing of Server Host.

Crashing and Rebooting of Server Host.

Shutdown of Server Host.

Summary of TCP Example.

Data Format.

Summary.

6. I/O Multiplexing: The select and poll Functions.

Introduction.

I/O Models.

select Function.

str_cli Function (Revisited).

Batch Input and Buffering.

shutdown Function.

str_cli Function (Revisited Again).

TCP Echo Server (Revisited).

pselect Function.

poll Function.

TCP Echo Server (Revisited Again).

Summary.

7. Socket Options.

Introduction.

getsockopt and setsockopt Functions.

Checking if an Option Is Supported and Obtaining the Default.

Socket States.

Generic Socket Options.

IPv4 Socket Options.

ICMPv6 Socket Option.

IPv6 Socket Options.

TCP Socket Options.

SCTP Socket Options.

fcntl Function.

Summary.

8. Elementary UDP Sockets.

Introduction.

recvfrom and sendto Functions.

UDP Echo Server: main Function.

UDP Echo Server: dg_echo Function.

UDP Echo Client: main Function.

UDP Echo Client: dg_cli Function.

Lost Datagrams.

Verifying Received Response.

Server Not Running.

Summary of UDP Example.

connect Function with UDP.

dg_cli Function (Revisited).

Lack of Flow Control with UDP.

Determining Outgoing Interface with UDP.

TCP and UDP Echo Server Using select.

Summary.

9. Elementary SCTP Sockets.

Introduction.

Interface Models.

sctp_bindx Function.

sctp_connectx Function.

sctp_getpaddrs Function.

sctp_freepaddrs Function.

sctp_getladdrs Function.

sctp_freeladdrs Function.

sctp_sendmsg Function.

sctp_recvmsg Function.

sctp_opt_info Function.

sctp_peeloff Function.

shutdown Function.

Notifications.

Summary.

10. SCTP Client/Server Example.

Introduction.

SCTP One-to-Many-Style Streaming Echo Server: main Function.

SCTP One-to-Many-Style Streaming Echo Client: main Function.

SCTP Streaming Echo Client: str_cli Function.

Exploring Head-of-Line Blocking.

Controlling the Number of Streams.

Controlling Termination.

Summary.

11. Name and Address Conversions.

Introduction.

Domain Name System (DNS).

gethostbyname Function.

gethostbyaddr Function.

getservbyname and getservbyport Functions.

getaddrinfo Function.

gai_strerror Function.

freeaddrinfo Function.

getaddrinfo Function: IPv6.

getaddrinfo Function: Examples.

host_serv Function.

tcp_connect Function.

tcp_listen Function.

udp_client Function.

udp_connect Function.

udp_server Function.

getnameinfo Function.

Re-entrant Functions.

gethostbyname_r and gethostbyaddr_r Functions.

Obsolete IPv6 Address Lookup Functions.

Other Networking Information.

Summary.

III. ADVANCED SOCKETS.

12. IPv4 and IPv6 Interoperability.

Introduction.

IPv4 Client, IPv6 Server.

IPv6 Client, IPv4 Server.

IPv6 Address-Testing Macros.

Source Code Portability.

Summary.

13. Daemon Processes and the inetd Superserver.

Introduction.

syslogd Daemon.

syslog Function.

daemon_init Function.

inetd Daemon.

daemon_inetd Function.

Summary.

14. Advanced I/O Functions.

Introduction.

Socket Timeouts.

recv and send Functions.

readv and writev Functions.

recvmsg and sendmsg Functions.

Ancillary Data.

How Much Data Is Queued?

Sockets and Standard I/O.

Advanced Polling.

Summary.

15. Unix Domain Protocols.

Introduction.

Unix Domain Socket Address Structure.

socketpair Function.

Socket Functions.

Unix Domain Stream Client/Server.

Unix Domain Datagram Client/Server.

Passing Descriptors.

Receiving Sender Credentials.

Summary.

16. Nonblocking I/O.

Introduction.

Nonblocking Reads and Writes: str_cli Function (Revisited).

Nonblocking connect.

Nonblocking connect: Daytime Client.

Nonblocking connect: Web Client.

Nonblocking accept.

Summary.

17. ioctl Operations.

Introduction.

ioctl Function.

Socket Operations.

File Operations.

Interface Configuration.

get_ifi_info Function.

Interface Operations.

ARP Cache Operations.

Routing Table Operations.

Summary.

18. Routing Sockets.

Introduction.

Datalink Socket Address Structure.

Reading and Writing.

sysctl Operations.

get_ifi_info Function (Revisited).

Interface Name and Index Functions.

Summary.

19. Key Management Sockets.

Introduction.

Reading and Writing.

Dumping the Security Association Database (SADB).

Creating a Static Security Association (SA).

Dynamically Maintaining SAs.

Summary.

20. Broadcasting.

Introduction.

Broadcast Addresses.

Unicast versus Broadcast.

dg_cli Function Using Broadcasting.

Race Conditions.

Summary.

21. Multicasting.

Introduction.

Multicast Addresses.

Multicasting versus Broadcasting on a LAN.

Multicasting on a WAN.

Source-Specific Multicast.

Multicast Socket Options.

mcast_join and Related Functions.

dg_cli Function Using Multicasting.

Receiving IP Multicast Infrastructure Session Announcements.

Sending and Receiving.

Simple Network Time Protocol (SNTP).

Summary.

22. Advanced UDP Sockets.

Introduction.

Receiving Flags, Destination IP Address, and Interface Index.

Datagram Truncation.

When to Use UDP Instead of TCP.

Adding Reliability to a UDP Application.

Binding Interface Addresses.

Concurrent UDP Servers.

IPv6 Packet Information.

IPv6 Path MTU Control.

Summary.

23. Advanced SCTP Sockets.

Introduction.

An Autoclosing One-to-Many-Style Server.

Partial Delivery.

Notifications.

Unordered Data.

Binding a Subset of Addresses.

Determining Peer and Local Address Information.

Finding an Association ID Given an IP Address.

Heartbeating and Address Failure.

Peeling Off an Association.

Controlling Timing.

When to Use SCTP Instead of TCP.

Summary.

24. Out-of-Band Data.

Introduction.

TCP Out-of-Band Data.

sockatmark Function.

TCP Out-of-Band Data Recap.

Summary.

25. Signal-Driven I/O.

Introduction.

Signal-Driven I/O for Sockets.

UDP Echo Server Using SIGIO.

Summary.

26. Threads.

Introduction.

Basic Thread Functions: Creation and Termination.

str_cli Function Using Threads.

TCP Echo Server Using Threads.

Thread-Specific Data.

Web Client and Simultaneous Connections (Continued).

Mutexes: Mutual Exclusion.

Condition Variables.

Web Client and Simultaneous Connections (Continued).

Summary.

27. IP Options.

Introduction.

IPv4 Options.

IPv4 Source Route Options.

IPv6 Extension Headers.

IPv6 Hop-by-Hop Options and Destination Options.

IPv6 Routing Header.

IPv6 Sticky Options.

Historical IPv6 Advanced API.

Summary.

28. Raw Sockets.

Introduction.

Raw Socket Creation.

Raw Socket Output.

Raw Socket Input.

ping Program.

traceroute Program.

An ICMP Message Daemon.

Summary.

29. Datalink Access.

Introduction.

BSD Packet Filter (BPF).

Datalink Provider Interface (DLPI).

Linux: SOCK_PACKET and PF_PACKET.

libpcap: Packet Capture Library.

libnet: Packet Creation and Injection Library.

Examining the UDP Checksum Field.

Summary.

30. Client/Server Design Alternatives.

Introduction.

TCP Client Alternatives.

TCP Test Client.

TCP Iterative Server.

TCP Concurrent Server, One Child per Client.

TCP Preforked Server, No Locking Around accept.

TCP Preforked Server, File Locking Around accept.

TCP Preforked Server, Thread Locking Around accept.

TCP Preforked Server, Descriptor Passing.

TCP Concurrent Server, One Thread per Client.

TCP Prethreaded Server, per-Thread accept.

TCP Prethreaded Server, Main Thread accept.

Summary.

31. STREAMS.

Introduction.

Overview.

getmsg and putmsg Functions.

getpmsg and putpmsg Functions.

ioctl Function.

Transport Provider Interface (TPI).

Summary.

Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6.

Introduction.

IPv4 Header.

IPv6 Header.

IPv4 Addresses.

IPv6 Addresses.

Internet Control Message Protocols (ICMPv4 and ICMPv6).

Appendix B. Virtual Networks.

Introduction.

The MBone.

The 6bone.

IPv6 Transition: 6to4.

Appendix C. Debugging Techniques.

System Call Tracing.

Standard Internet Services.

sock Program.

Small Test Programs.

tcpdump Program.

netstat Program.

lsof Program.

Appendix D. Miscellaneous Source Code.

unp.h Header.

config.h Header.

Standard Error Functions.

Appendix E. Solutions to Selected Exercises.
Bibliography.
Index.
Begagnad bok (0 st)
Begagnad bok (0 st)