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

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

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

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






Sitemap

Main Page

Table of content

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

1.1 Introduction

1.2 A Simple Daytime Client

1.3 Protocol Independence

1.4 Error Handling: Wrapper Functions

1.5 A Simple Daytime Server

1.6 Roadmap to Client/Server Examples in the Text

1.7 OSI Model

1.8 BSD Networking History

1.9 Test Networks and Hosts

1.10 Unix Standards

1.11 64-Bit Architectures

1.12 Summary

Exercises

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

2.1 Introduction

2.2 The Big Picture

2.3 User Datagram Protocol (UDP)

2.4 Transmission Control Protocol (TCP)

2.5 Stream Control Transmission Protocol (SCTP)

2.6 TCP Connection Establishment and Termination

2.7 TIME_WAIT State

2.8 SCTP Association Establishment and Termination

2.9 Port Numbers

2.10 TCP Port Numbers and Concurrent Servers

2.11 Buffer Sizes and Limitations

2.12 Standard Internet Services

2.13 Protocol Usage by Common Internet Applications

2.14 Summary

Exercises

Part 2: Elementary Sockets

Chapter 3. Sockets Introduction

3.1 Introduction

3.2 Socket Address Structures

3.3 Value-Result Arguments

3.4 Byte Ordering Functions

3.5 Byte Manipulation Functions

3.6 'inet_aton', 'inet_addr', and 'inet_ntoa' Functions

3.7 'inet_pton' and 'inet_ntop' Functions

3.8 'sock_ntop' and Related Functions

3.9 'readn', 'writen', and 'readline' Functions

3.10 Summary

Exercises

Chapter 4. Elementary TCP Sockets

4.1 Introduction

4.2 'socket' Function

4.3 'connect' Function

4.4 'bind' Function

4.5 'listen' Function

4.6 'accept' Function

4.7 'fork' and 'exec' Functions

4.8 Concurrent Servers

4.9 'close' Function

4.10 'getsockname' and 'getpeername' Functions

4.11 Summary

Exercises

Chapter 5. TCP Client/Server Example

5.1 Introduction

5.2 TCP Echo Server: 'main' Function

5.3 TCP Echo Server: 'str_echo' Function

5.4 TCP Echo Client: 'main' Function

5.5 TCP Echo Client: 'str_cli' Function

5.6 Normal Startup

5.7 Normal Termination

5.8 POSIX Signal Handling

5.9 Handling 'SIGCHLD' Signals

5.10 'wait' and 'waitpid' Functions

5.11 Connection Abort before 'accept' Returns

5.12 Termination of Server Process

5.13 'SIGPIPE' Signal

5.14 Crashing of Server Host

5.15 Crashing and Rebooting of Server Host

5.16 Shutdown of Server Host

5.17 Summary of TCP Example

5.18 Data Format

5.19 Summary

Exercises

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

6.1 Introduction

6.2 I/O Models

6.3 'select' Function

6.4 'str_cli' Function (Revisited)

6.5 Batch Input and Buffering

6.6 'shutdown' Function

6.7 'str_cli' Function (Revisited Again)

6.8 TCP Echo Server (Revisited)

6.9 'pselect' Function

6.10 'poll' Function

6.11 TCP Echo Server (Revisited Again)

6.12 Summary

Exercises

Chapter 7. Socket Options

7.1 Introduction

7.2 'getsockopt' and 'setsockopt' Functions

7.3 Checking if an Option Is Supported and Obtaining the Default

7.4 Socket States

7.5 Generic Socket Options

7.6 IPv4 Socket Options

7.7 ICMPv6 Socket Option

7.8 IPv6 Socket Options

7.9 TCP Socket Options

7.10 SCTP Socket Options

7.11 'fcntl' Function

7.12 Summary

Exercises

Chapter 8. Elementary UDP Sockets

8.1 Introduction

8.2 'recvfrom' and 'sendto' Functions

8.3 UDP Echo Server: 'main' Function

8.4 UDP Echo Server: 'dg_echo' Function

8.5 UDP Echo Client: 'main' Function

8.6 UDP Echo Client: 'dg_cli' Function

8.7 Lost Datagrams

8.8 Verifying Received Response

8.9 Server Not Running

8.10 Summary of UDP Example

8.11 'connect' Function with UDP

8.12 'dg_cli' Function (Revisited)

8.13 Lack of Flow Control with UDP

8.14 Determining Outgoing Interface with UDP

8.15 TCP and UDP Echo Server Using 'select'

8.16 Summary

Exercises

Chapter 9. Elementary SCTP Sockets

9.1 Introduction

9.2 Interface Models

9.3 'sctp_bindx' Function

9.4 'sctp_connectx' Function

9.5 'sctp_getpaddrs' Function

9.6 'sctp_freepaddrs' Function

9.7 'sctp_getladdrs' Function

9.8 'sctp_freeladdrs' Function

9.9 'sctp_sendmsg' Function

9.10 'sctp_recvmsg' Function

9.11 'sctp_opt_info' Function

9.12 'sctp_peeloff' Function

9.13 'shutdown' Function

9.14 Notifications

9.15 Summary

Exercises

Chapter 10. SCTP Client/Server Example

10.1 Introduction

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

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

10.4 SCTP Streaming Echo Client: 'str_cli' Function

10.5 Exploring Head-of-Line Blocking

10.6 Controlling the Number of Streams

10.7 Controlling Termination

10.8 Summary

Exercises

Chapter 11. Name and Address Conversions

11.1 Introduction

11.2 Domain Name System (DNS)

11.3 'gethostbyname' Function

11.4 'gethostbyaddr' Function

11.5 'getservbyname' and 'getservbyport' Functions

11.6 'getaddrinfo' Function

11.7 'gai_strerror' Function

11.8 'freeaddrinfo' Function

11.9 'getaddrinfo' Function: IPv6

11.10 'getaddrinfo' Function: Examples

11.11 'host_serv' Function

11.12 'tcp_connect' Function

11.13 'tcp_listen' Function

11.14 'udp_client' Function

11.15 'udp_connect' Function

11.16 'udp_server' Function

11.17 'getnameinfo' Function

11.18 Re-entrant Functions

11.19 'gethostbyname_r' and 'gethostbyaddr_r' Functions

11.20 Obsolete IPv6 Address Lookup Functions

11.21 Other Networking Information

11.22 Summary

Exercises

Part 3: Advanced Sockets

Chapter 12. IPv4 and IPv6 Interoperability

12.1 Introduction

12.2 IPv4 Client, IPv6 Server

12.3 IPv6 Client, IPv4 Server

12.4 IPv6 Address-Testing Macros

12.5 Source Code Portability

12.6 Summary

Exercises

Chapter 13. Daemon Processes and the 'inetd' Superserver

13.1 Introduction

13.2 'syslogd' Daemon

13.3 'syslog' Function

13.4 'daemon_init' Function

13.5 'inetd' Daemon

13.6 'daemon_inetd' Function

13.7 Summary

Exercises

Chapter 14. Advanced I/O Functions

14.1 Introduction

14.2 Socket Timeouts

14.3 'recv' and 'send' Functions

14.4 'readv' and 'writev' Functions

14.5 'recvmsg' and 'sendmsg' Functions

14.6 Ancillary Data

14.7 How Much Data Is Queued?

14.8 Sockets and Standard I/O

14.9 Advanced Polling

14.10 Summary

Exercises

Chapter 15. Unix Domain Protocols

15.1 Introduction

15.2 Unix Domain Socket Address Structure

15.3 'socketpair' Function

15.4 Socket Functions

15.5 Unix Domain Stream Client/Server

15.6 Unix Domain Datagram Client/Server

15.7 Passing Descriptors

15.8 Receiving Sender Credentials

15.9 Summary

Exercises

Chapter 16. Nonblocking I/O

16.1 Introduction

16.2 Nonblocking Reads and Writes: 'str_cli' Function (Revisited)

16.3 Nonblocking 'connect'

16.4 Nonblocking 'connect:' Daytime Client

16.5 Nonblocking 'connect:' Web Client

16.6 Nonblocking 'accept'

16.7 Summary

Exercises

Chapter 17. 'ioctl' Operations

17.1 Introduction

17.2 'ioctl' Function

17.3 Socket Operations

17.4 File Operations

17.5 Interface Configuration

17.6 'get_ifi_info' Function

17.7 Interface Operations

17.8 ARP Cache Operations

17.9 Routing Table Operations

17.10 Summary

Exercises

Chapter 18. Routing Sockets

18.1 Introduction

18.2 Datalink Socket Address Structure

18.3 Reading and Writing

18.4 'sysctl' Operations

18.5 'get_ifi_info' Function (Revisited)

18.6 Interface Name and Index Functions

18.7 Summary

Exercises

Chapter 19. Key Management Sockets

19.1 Introduction

19.2 Reading and Writing

19.3 Dumping the Security Association Database (SADB)

19.4 Creating a Static Security Association (SA)

19.5 Dynamically Maintaining SAs

19.6 Summary

Exercises

Chapter 20. Broadcasting

20.1 Introduction

20.2 Broadcast Addresses

20.3 Unicast versus Broadcast

20.4 'dg_cli' Function Using Broadcasting

20.5 Race Conditions

20.6 Summary

Exercises

Chapter 21. Multicasting

21.1 Introduction

21.2 Multicast Addresses

21.3 Multicasting versus Broadcasting on a LAN

21.4 Multicasting on a WAN

21.5 Source-Specific Multicast

21.6 Multicast Socket Options

21.7 'mcast_join' and Related Functions

21.8 'dg_cli' Function Using Multicasting

21.9 Receiving IP Multicast Infrastructure Session Announcements

21.10 Sending and Receiving

21.11 Simple Network Time Protocol (SNTP)

21.12 Summary

Exercises

Chapter 22. Advanced UDP Sockets

22.1 Introduction

22.2 Receiving Flags, Destination IP Address, and Interface Index

22.3 Datagram Truncation

22.4 When to Use UDP Instead of TCP

22.5 Adding Reliability to a UDP Application

22.6 Binding Interface Addresses

22.7 Concurrent UDP Servers

22.8 IPv6 Packet Information

22.9 IPv6 Path MTU Control

22.10 Summary

Exercises

Chapter 23. Advanced SCTP Sockets

23.1 Introduction

23.2 An Autoclosing One-to-Many-Style Server

23.3 Partial Delivery

23.4 Notifications

23.5 Unordered Data

23.6 Binding a Subset of Addresses

23.7 Determining Peer and Local Address Information

23.8 Finding an Association ID Given an IP Address

23.9 Heartbeating and Address Failure

23.10 Peeling Off an Association

23.11 Controlling Timing

23.12 When to Use SCTP Instead of TCP

23.13 Summary

Exercises

Chapter 24. Out-of-Band Data

24.1 Introduction

24.2 TCP Out-of-Band Data

24.3 'sockatmark' Function

24.4 TCP Out-of-Band Data Recap

24.5 Summary

Exercises

Chapter 25. Signal-Driven I/O

25.1 Introduction

25.2 Signal-Driven I/O for Sockets

25.3 UDP Echo Server Using 'SIGIO'

25.4 Summary

Exercises

Chapter 26. Threads

26.1 Introduction

26.2 Basic Thread Functions: Creation and Termination

26.3 'str_cli' Function Using Threads

26.4 TCP Echo Server Using Threads

26.5 Thread-Specific Data

26.6 Web Client and Simultaneous Connections (Continued)

26.7 Mutexes: Mutual Exclusion

26.8 Condition Variables

26.9 Web Client and Simultaneous Connections (Continued)

26.10 Summary

Exercises

Chapter 27. IP Options

27.1 Introduction

27.2 IPv4 Options

27.3 IPv4 Source Route Options

27.4 IPv6 Extension Headers

27.5 IPv6 Hop-by-Hop Options and Destination Options

27.6 IPv6 Routing Header

27.7 IPv6 Sticky Options

27.8 Historical IPv6 Advanced API

27.9 Summary

Exercises

Chapter 28. Raw Sockets

28.1 Introduction

28.2 Raw Socket Creation

28.3 Raw Socket Output

28.4 Raw Socket Input

28.5 'ping' Program

28.6 'traceroute' Program

28.7 An ICMP Message Daemon

28.8 Summary

Exercises

Chapter 29. Datalink Access

29.1 Introduction

29.2 BSD Packet Filter (BPF)

29.3 Datalink Provider Interface (DLPI)

29.4 Linux: 'SOCK_PACKET' and 'PF_PACKET'

29.5 'libpcap': Packet Capture Library

29.6 'libnet': Packet Creation and Injection Library

29.7 Examining the UDP Checksum Field

29.8 Summary

Exercises

Chapter 30. Client/Server Design Alternatives

30.1 Introduction

30.2 TCP Client Alternatives

30.3 TCP Test Client

30.4 TCP Iterative Server

30.5 TCP Concurrent Server, One Child per Client

30.6 TCP Preforked Server, No Locking Around 'accept'

30.7 TCP Preforked Server, File Locking Around 'accept'

30.8 TCP Preforked Server, Thread Locking Around 'accept'

30.9 TCP Preforked Server, Descriptor Passing

30.10 TCP Concurrent Server, One Thread per Client

30.11 TCP Prethreaded Server, per-Thread 'accept'

30.12 TCP Prethreaded Server, Main Thread 'accept'

30.13 Summary

Exercises

Chapter 31. Streams

31.1 Introduction

31.2 Overview

31.3 'getmsg' and 'putmsg' Functions

31.4 'getpmsg' and 'putpmsg' Functions

31.5 'ioctl' Function

31.6 Transport Provider Interface (TPI)

31.7 Summary

Exercises

Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6

A.1 Introduction

A.2 IPv4 Header

A.3 IPv6 Header

A.4 IPv4 Addresses

A.5 IPv6 Addresses

A.6 Internet Control Message Protocols (ICMPv4 and ICMPv6)

Appendix B. Virtual Networks

B.1 Introduction

B.2 The MBone

B.3 The 6bone

B.4 IPv6 Transition: 6to4

Appendix C. Debugging Techniques

C.1 System Call Tracing

C.2 Standard Internet Services

C.3 'sock' Program

C.4 Small Test Programs

C.5 'tcpdump' Program

C.6 'netstat' Program

C.7 'lsof' Program

Appendix D. Miscellaneous Source Code

D.1 'unp.h' Header

D.2 'config.h' Header

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