UNIX网络编程(卷Ⅰ 套接字联网API 英文版)

UNIX网络编程(卷Ⅰ 套接字联网API 英文版)
作 者: Richard Stevens
出版社: 机械工业出版社
丛编项: 经典原版书库
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: UNIX
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  作者:W.RichardStevens国际知名的Unix和网络专家,《TCP/IP详解》(三卷本)作者W.RichardStevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。Stevens先生1951年生于赞比亚,他的家庭曾多次搬迁,最终定居于南非。早年,他就读于美国弗吉尼亚州的费什本军事学校,后获得密歇根大学学士、亚利桑那大学系统工程硕士和博士学位。他曾就职于基特峰国家天文台,从事计算机编程;还曾在康涅狄格州纽黑文市的健康系统国际公司任主管计算机服务的副总裁。Stevens先生不幸病逝于1999年9月1日,他的离去是计算机界的巨大损失。UNIX环境高级编程(第2版)>>更多作品

内容简介

本书是一部UNIX网络API的经典之作!本书是为那些希望能够通过套接字接口实现程序间的相互通信的人而编写的,旨在为网络编程的初学者以及专家提供指导。要建立高度分布式、网络化的应用程序和服务,就需要对套接字和其他关键的网络API有深入的理解。本书为在各种环境下建立健壮的、高性能的网络系统提供了全面的指导。“每个人都会喜欢这本书,因为它提供了大量的实践经验、历史观点以及只有对此领域深入研究才能获得的深刻理解。我在阅读这本书的过程中获得了享受并学到了知识,相信你一定也会的。”——SamLeffler本书是一部UNIX网络API的经典之作!本书是为那些希望能够通过套接字接口实现程序间的相互通信的人而编写的,旨在为网络编程的初学者以及专家提供指导。要建立高度分布式、网络化的应用程序和服务,就需要对套接字和其他关键的网络API有深入的理解。本书为在各种环境下建立健壮的、高性能的网络系统提供了全面的指导。这个版本建立在W.RichardStevens的传奇性工作的基础上,由两个最优秀的网络编程专家进行了完全更新。讨论了当今最关键的标准、实现和技术讨论的新主题包括:·POSIXSingleUNIXSpecificationVersion3·IPv6APIs(包括更新了的对IPv6/IPv4互操作性的指南)·新的SCTP传输协议·基于IPsec的密钥管理套接字·FreeBSD4.8/5.1、RedHatLinux9.x、Solaris9、AIX5.x、HPUX和MaxOSX实现·新的网络编程调试技术·源端特定的组播API,正是这个API使得IP组播开发被广泛使用本书还更新和扩展了Stevens对以下关键的UNIX网络标准和技术所做的权威性的概括:·TCP和UDP传输·基本的和高级的套接宇,路由的和原始的套接宇·I/O:复用高级函数,非阻塞和信号驱动·守护进程和inetd·UNIX域协议·ioctl操作·广播和组播·线程·流·设计:TCP迭代的、并发的、预先创建的和预先线程化的服务器作者W.RichardStevens生前力作: 《UNIX网络编程(卷1):连网的APLs:套接字与XTI(第二版)(英文影印版)》 《UNIX网络编程(卷2):进程间通信(第二版)(英文影印版)》

图书目录

Part1. Introduction and TCP/IP

Chapter1. Introduction

1.1 Introduction 3

1.2 A Simple Daytime Client 6

1.3 Protocol Independence 10

1.4 Error Handling: Wrapper Functions 11

1.5 A Simple Daytime Server 13

1.6 Roadmap to Client/Server Examples in the Text 16

1.7 OSI Model !8

1.8 BSD Networking History 20

1.9 Test Networks and Hosts 22

1.10 Unix Standards 25

1.11 64-Bit Architectures 28

1.12 Summary 29

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

2.1 Introduction 31

2.2 The Big Picture 32

2.3 User Datagram Protocol (UDP) 34

2.4 Transmission Control Protocol (TCP) 35

2.5 Stream Control Transmission Protocol (SCTP) 36

2.6 TCP Connection Establishment and Termination 37

2.7 TIME_WAIT State 43

2.8 SCTP Association Establishment and Termination 44

2.9 Port Numbers 50

2.10 TCP Port Numbers and Concurrent Servers 52

2.11 Buffer Sizes and Limitations 55

2.12 Standard Internet Services 61

2.13 Protocol Usage by Common Internet Applications 62

2.14 Summary 63

Part 2. Elementary Sockets

Chapter 3. Sockets Introduction

3.1 Introduction 67

3.2 Socket Address Structures 67

3.3 Value-Result Arguments 74

3.4 Byte Ordering Functions 77

3.5 Byte Manipulation Functions 80

3.6 inet_aton, inet_addr, and inet_ntoa Functions 82

3.7 inet_pton and inet_ntop Functions 83

3.8 sock_ntop and Related Functions 86

3.9 readn, writen, and readline Functions 88

3.10 Summary 92

Chapter 4. Elementary TCP Sockets

4.1 Introduction 9,5

4.2 socket Function 95

4.3 connect Function 99

4.4 bind Function 101

4.5 listen Function 104

4.6 accept Function 109

4.7 fork and exec Functions 111

4.8 Concurrent Servers 114

4.9 close Function 117

4.10 getsockname and getpeername Functions 117

4.11 Summary 120

Chapter 5, TCP Client/Server Example

5.1 Introduction 121

5.2 TCP Echo Server: main Function 122

5.3 TCP Echo Server: str echo Function 123

5.4 TCP Echo Client: main Function 124

5.5 TCP Echo Client: str cli Function 125

5.6 Normal Startup 126

5.7 Normal Termination 128

5.8 POSIX Signal Handling 129

5.9 Handling SIGCHLD Signals 132

5.10 wait and waitpid Functions 135

5.11 Connection,Abort before accept Returns 139

5.12 Termination of Server Process 141

5.13 SIGPIPE Signal 142

5.14 Crashing of Server Host 144

5.15 Crashing and Rebooting of Server Host 144

5.16 Shutdown of Server Host 145

5.17 Summary of TCP Example 146

5.18 Data Format 147

5.19 Summary 151

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

6.1 Introduction 153

6.2 I/O Models 154

6,3 select Function 160

6.4 str_cli Function (Revisited) 167

6.5 Batch Input and Buffering 169

6.6 shutdown Function 172

6.7 str eli Function (Revisited Again) 173

6.8 TCP Echo Server (Revisited) 175

6.9 pselect Function 181

6.10 poll Function 182

6.11 TCP Echo Server (Revisited Again) 185

6.12 Summary 188

Chapter 7. Socket Options

7.1 Introduction 191

7.2 getsockopt and setsockopt Functions 192

7.3 Checking if an Option Is Supported and Obtaining the Default

7.4 Socket States 198

7.5 Generic Socket Options 198

7.6 IPv4 Socket Options 214

7.7 ICMPv6 Socket Option 216

7.8 IPv6 Socket Options 216

7.9 TCP Socket Options 219

7.10 SCTP Socket Options 222

7.11 fcnt1 Function 233

7.12 Summary 236

Chapter 8. Elementary UDP Sockets

8.1 Introduction 239

8.2 recvfrom and sendto Functions 240

8.3 UDP Echo Server: main Function 241

8.4 UDP Echo Server: dg_echo Function 242

8.5 UDP Echo Client: main Function 244

8.6 UDP Echo Client: dg_cli Function 245

8.7 Lost Datagrams 245

8.8 Verifying Received Response 246

8.9 Server Not Running 248

8.10 Summary of UDP Example 250

8.11 connect Function with UDP 252

8.12 dg_cli Function (Revisited) 256

8,13 Lack of Flow Control with UDP 257

8.14 Determining Outgoing Interface with UDP 261

8.15 TCP and UDP Echo Server Using select 262

8.16 Summary 264

Chapter 9. Elementary SCTP Sockets

9.1 Introduction 267

9.2 Interface Models 268

9.3 sctp_bindx Function 272

9.4 sctp_connectx Function 274

9.5 sctp_getpaddrs Function 275

9.6 sctp_freepaddrs Function 275

9.7 sctp_get laddrs Function 275

9.8 sctp_freeladdrs Function 276

9.9 sctp_sendmsg Function 276

9.10 sctp_recvmsg Function 277

9.11 sctp_opt_info Function 278

9.12 sctp_peeloff Function 278

9.13 shutdown Function 278

9.14 Notifications 280

9.15 Summary 286

Chapter10. SCTP Client/Server Example

10.1 Introduction 287

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 292

10.5 Exploring Head-of-Line Blocking 293

10.6 Controlling the Number of Streams 299

10.7 Controlling Termination 300

10.8 Summary 301

Chapter11. Name and Address Conversions

11.1 Introduction 303

11.2 Domain Name System (DNS) 303

11.3 gethostbyname Function 307

11.4 gethostbyaddr Function 310

11.5 getservbyname and getservbyport Functions 311

11.6 getaddrinfo Function 315

11.7 gai_strerror Function 320

11.8 freeaddrinfo Function 321

11.9 getaddrinfo Function: IPv6 322

11.10 getaddrinfo Function: Examples 324

11.11 host serv Function 325

11.12 tcp_connect Function 326

11.13 tcp_listen Function 330

11.14 udp_client Function 334

11.15 udp_connect Function 337

11.16 udp_server Function 338

11.17 getnameinfo Function 340

11.18 Re-entrant Functions 341

11.19 gethostbyname_r and gethostbyaddr_r Functions 344

11.20 Obsolete IPv6 Address Lookup Functions 346

11.21 Other Networking Information 348

11.22 Summary 349

Part 3. Advanced Sockets

Chapter12. IPv4 and IPv6 Interoperability

12.1 Introduction 353

12.2 IPv4 Client, IPv6 Server 354

12.3 IPv6 Client, IPv4 Server 357

12.4 IPv6 Address-Testing Macros 360

12.5 Source Code Portability 361

12.6 Summary 362

Chapter13. Daemon Processes and the inetd Superserver

13.1 Introduction 363

13.2 syslogd Daemon 364

13.3 syslo9 Function 365

13.4 daemon init Function 367

13.5 inetd Daemon 371

13.6 daemon inetd Function 377

13.7 Summary 379

Chapter14. Advanced I/O Functions

14.1 Introduction 381

14,2 Socket Timeouts 381

14.3 recv and send Functions 387

14.4 readv and writev Functions 389

14.5 recvmsg and sendmsg Functions 390

14,6 Ancillary Data 395

14.7 How Much Data Is Queued? 398

14.8 Sockets and Standard I/O 399

14.9 Advanced Polling 402

14.10 Summary 408

Chapter15. Unix Domain Protocols 411

15.1 Introduction 411

15.2 Unix Domain Socket Address Structure 412

15.3 socketpair Function 414

15.4 Socket Functions 415

15.5 Unix Domain Stream Client/Server 416

15.6 Unix Domain Datagram Client/Server 418

15.7 Passing Descriptors 420

15.8 Receiving Sender Credentials 429

15.9 Summary 432

Chapter16. Nonblocking I/O 435

16.1 Introduction 435

16.2 Nonblocking Reads and Writes: str cli Function (Revisited) 437

16.3 Nonblocking connect 448

16.4 Nonblocking connect: Daytime Client 449

16.5 Nonblocking connect: Web Client 452

16.6 Nonblocking accept 461

16.7 Summary 463

Chapter17. ioct1 Operations 465

17.1 Introduction 465

17.2 ioctl Function 466

17.3 Socket Operations 466

17.4 File Operations 468

17.5 Interface Configuration 468

17.6 get ifi info Function 469

17.7 Interface Dperations 480

17.8 ARP Cache Operations 481

17.9 Routing Table Operations 483

17.10 Summary 484

Chapter18. Routing Sockets 485

18.1 Introduction 485

18.2 Datalink Socket Address Structure 486

18.3 Reading and Writing 487

18.4 sysctl Operations 495

18.5 get_ifi_info Function (Revisited) 500

18.6 Interface Name and Index Functions 504

18.7 Summary 508

Chapter19. Key Management Sockets511

19.1 Introduction 511

19.2 Reading and Writing 512

19.3 Dumping the Security Association Database (SADB) 514

19.4 Creating a Static Security Association (SA) 517

19.5 Dynamically Maintaining SAs 524

19.6 Summary 528

Chapter 20. Broadcasting 529

20.1 Introduction 529

20.2 Broadcast Addresses 531

20.3 Unicast versus Broadcast 532

20.4 dg_cli Function Using Broadcasting 535

20.5 Race Conditions 538

20.6 Summary 547

Chapter 21. Multicasting 549

21.1 Introduction 549

21.2 Multicast Addresses 549

21.3 Multicasting versus Broadcasting on a LAN 553

21.4 Multicasting on a WAN 556

21.5 Source-Specific Multicast 558

21.6 Multicast Socket Options 559

21.7 mcast_join and Related Functions 565

21.8 dg_cli Function Using Multicasting 570

21.9 Receiving IP Multicast Infrastructure Session Announcements 571

21.10 Sending and Receiving 575

21.11 Simple Network Time Protocol (SNTP) 579

21.12 Summary 584

Chapter 22. Advanced UDP Sockets 587

22.1 Introduction 587

22.2 Receiving Flags, Destination IP Address, and Interface Index 588

22.3 Datagram Truncation 594

22.4 When to Use UDP Instead of TCP 594

22.5 Adding Reliability to a UDP Application 597

22.6 Binding Interface Addresses 608

22.7 Concurrent UDP Servers 612

22.8 IPv6 Packet Information 615

22.9 IPv6 Path MTU Control 618

22.10 Summary 620

Chapter 23. Advanced SCTP Sockets 621

23.1 Introduction 621

23.2 An Autoclosing One-to-Many-Style Server 621

23.3 Partial Delivery 622

23.4 Notifications 625

23.5 Unordered Data 629

23.6 Binding a Subset of Addresses 630

23.7 Determining Peer and Local Address Information 631

23.8 Finding an Association ID Given an IP Address 635

23.9 Heartbeating and Address Failure 636

23.10 Peeling Off an Association 637

23.11 Controlling Timing 639

23.12 When to Use SCTP Instead of TCP 641

23.13 Summary 643

Chapter 24. Out-of-Band Data 645

24.1 Introduction 645

24.2 TCP Out-of-Band Data 645

24.3 sockatmark Function 654

24.4 TCP Out-of-Band Data Recap 661

24.5 Summary 662

Chapter 25. Signal-Driven I/O663

25.1 introduction 663

25.2 Signal-Driven I/O for Sockets 664

25.3 UDP Echo Server Using SIGIO 666

25.4 Summary 672

Chapter 26. Threads 675

26.1 Introduction 675

26.2 Basic Thread Functions: Creation and Termination 676

26.3 str cli Function Using Threads 679

26.4 TcP-Echo Server Using Threads 681

26.5 Thread-Specific Data 686

26.6 Web Client and Simultaneous Connections (Continued) 694

26.7 Mutexes: Mutual Exclusion 697

26.8 Condition Variables 701

26.9 Web Client and Simultaneous Connections (Continued) 705

26.10 Summary 707

Chapter 27. IP Options 709

27.1 Introduction 709

27.2 IPv4 Options 709

27.3 IPv4 Source Route Options 711

27.4 I Pv6 Extension Headers 719

27.5 IPv6 Hop-by-Hop Options and Destination Options 719

27.6 IPv6 Routing Header 725

27.7 IPv6 Sticky Options 731

27.8 Historical IPv6 Advanced API 732

27.9 Summary 733

Chapter 28. Raw Sockets 735

28.1 introduction 735

28.2 Raw Socket Creation 736

28.3 Raw Socket Output 737

28.4 Raw Socket Input 739

28.5 ping Program 741

28.6 traceroute Program 755

28.7 An ICMP Message Daemon 769

28.8 Summary 786

Chapter 29. Datalink Access 787

29.1 Introduction 787

29.2 BSD Packet Filter (BPF) 788

29.3 Datalink Provider Interface (DLPI) 790

29.4 Linux: SOCK' PACKET and PF PACKET 791

29.5 libpcap: Packet Capture Library 792

29.6 libnet: Packet Creation and Injection Library 793

29.7 Examining the UDP Checksum Field 793

29.8 Summary 815

Chapter 30. Client/Server Design Alternatives 817

30.1 Introduction 817

30.2 TCP Client Alternatives 819

30.3 TCP Test Client 820

30.4 TCP Iterative Server 821

30.5 TCP Concurrent Server, One Child per Client 822

30.6 TCP Preforked Server, No Locking Around accept 826

30.7 TCP Preforked Server, File Locking Around accept 832

30.8 TCP Preforked Server, Thread Locking Around accept 835

30.9 TCP Preforked Server, Descriptor Passing 836

30.10 TCP Concurrent Server, One Thread per Client 842

30.11 TCP Prethreaded Server, per-Thread accept 844

30.12 TCP Prethreaded Server, Main Thread accept 846

30.13 Summary 849

Chapter 31. STREAMS 851

31.1 Introduction 851

31.2 Overview 851

31.3 getmsg and putmsg Functions 856

31.4 getpmsg and putpmsg Functions 857

31.5 ioctl Function 857

31.6 Transport Provider Interface (TPI) 858

31.7 Summary 868

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

A.1 Introduction 869

A.2 IPv4 Header 869

A.3 IPv6 Header 871

A.4 IPv4 Addresses 874

A.5 IPv6 Addresses 877

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

Appendix B. Virtual Networks 885

B.1 Introduction 885

B.2 The MBone 885

B.3 The 6bone 887

B.4 IPv6 Transition: 6to4 889

Appendix C. Debugging Techniques 891

C.1 System Call Tracing 891

C.2 Standard Internet Services 893

0.3 sock Program 893

C.4 Small Test Programs 896

C.5 tcpdump Program 896

C.6 netstat Program 896

C.7 lsof Program 897

Appendix D. Miscellaneous Source Code 899

D.1 unp.h Header 899

D.2 config, h Header 904

D.3 Standard Error Functions 910

Appendix E. Solutions to Selected Exercises 913

Bibliography 947

Index 955