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

UNIX网络编程 卷1 套接字联网API(第3版 英文版) pdf epub mobi txt 电子书 下载 2025

[美] W. 理查德·史蒂文斯(W. Richard Stevens),比尔·芬纳(Bill Fenner),安德鲁 M. 鲁道夫(Andrew M. Rudoff) 著
图书标签:
  • UNIX网络编程
  • 套接字
  • 网络编程
  • API
  • Sockets
  • 网络
  • 编程
  • UNIX
  • 网络
  • 技术
  • 英文版
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115401304
版次:2
商品编码:11880047
品牌:异步图书
包装:平装
开本:16开
出版时间:2016-02-01
用纸:胶版纸
页数:954
正文语种:中文

具体描述

编辑推荐

这是一部传世之作!网络编程专家Bill Fenner和Andrew M. Rudoff应邀执笔,对W. Richard Stevens的经典作品进行修订。书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP协议和密钥管理套接字等内容,深入讨论了新的关键标准、实现和技术。

书中的所有示例都是在UNIX系统上测试通过的真实的、可运行的代码,继承了Stevens一直强调的理念:“学习网络编程的好方法就是下载这些程序,对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法。”读者可以从本书网站下载这些示例的源代码。

本书为UNIX网络编程提供全面的指导,是网络研究和开发人员公认的参考书,无论网络编程的初学者还是网络专家都会大受裨益。

内容简介

本书是一部UNIX网络编程的经典之作。书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,还深入分析了流这种设备驱动机制。
本书内容详尽,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

作者简介

W. Richard Stevens(1951—1999) 国际知名的UNIX和网络专家,备受赞誉的技术作家。生前著有《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷),均为不朽的经典著作。

Bill Fenner AT&T;实验室主任研究员,专攻IP多播、网络管理和测量,他是IETF路由的领域主管之一,是RFC标准文档的批准人。

Andrew M. Rudoff Sun公司软件工程师,专攻网络、操作系统内核、文件系统和高可用性软件体系结构。

目录

Part 1. Introduction and TCP/IP / 简介和TCP/IP 1
Chapter 1. Introduction / 简介 3
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 / OSI模型 18
1.8 BSD Networking History / BSD网络历史 20
1.9 Test Networks and Hosts / 测试用网络及主机 22
1.10 Unix Standards / Unix标准 25
1.11 64-Bit Architectures / 64位体系结构 28
1.12 Summary / 小结 29
Chapter 2. The Transport Layer: TOP, UDP, and SCTP / 传输层:TCP、UDP和SCTP 31
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 / TCP连接的建立和终止 37
2.7 TIME_WAIT State / TIME_WAIT状态 43
2.8 SCTP Association Establishment and Termination / SCTP关联的建立和终止 44
2.9 Port Numbers / 端口号 50
2.10 TCP Port Numbers and Concurrent Servers / TCP端口号与并发服务器 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 / 基本套接字 65
Chanter 3. Sockets Introduction / 套接字简介 67
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 / inet_aton、inet_addr和inet_ntoa函数 82
3.7 inet_pton and inet_ntop Functions / inet_pton和inet_ntop函数 83
3.8 sock_ntop and Related Functions / sock_ntop和相关函数 86
3.9 readn, writen, and readline Functions / readn、writen和readline函数 88
3.10 Summary / 小结 92
Chapter 4. Elementary TCP Sockets / 基本TCP套接字 95
4.1 Introduction / 概述 95
4.2 socket Function / socket函数 95
4.3 connect Function / connect函数 99
4.4 bind Function / bind函数 101
4.5 listen Function / listen函数 104
4.6 accept Function / accept函数 109
4.7 fork and exec Functions / fork和exec函数 111
4.8 Concurrent Servers / 并发服务器 114
4.9 close Function / close函数 117
4.10 getsockname and getpeername Functions / getsockname和getpeername函数 117
4.11 Summary / 小结 120
Chapter 5. TCP Client/Server Example / TCP客户/服务器示例 121
5.1 Introduction / 概述 121
5.2 TCP Echo Server: main Function / TCP回送服务器程序:main函数 122
5.3 TCP Echo Server: str_echo Function / TCP回送服务器程序:str_echo函数 123
5.4 TCP Echo Client: main Function / TCP回送客户程序:main函数 124
5.5 TCP Echo Client: str_cli Function / TCP回送客户程序:str_cli函数 125
5.6 Normal Startup / 正常启动 126
5.7 Normal Termination / 正常终止 128
5.8 POSIX Signal Handling / POSIX信号处理 129
5.9 Handling SIGCHLD Signals / 处理SIGCHLD信号 132
5.10 wait and waitpid Functions / wait和waitpid函数 135
5.11 Connection Abort before accept Returns / accept返回前连接异常中止 139
5.12 Termination of Server Process / 服务器进程的终止 141
5.13 SIGPIPE Signal / SIGPIPE信号 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 / TCP示例小结 146
5.18 Data Format / 数据格式 147
5.19 Summary / 小结 151
Chapter 6. I/O Multiplexing: The select and poll Functions / I/O多路复用:select和poll函数 153
6.1 Introduction / 概述 153
6.2 I/O Models / I/O模型 154
6.3 select Function / select函数 160
6.4 str_cli Function (Revisited) / 再访str_cli函数 167
6.5 Batch Input and Buffering / 批量输入和缓冲 169
6.6 shutdown Function / shutdown函数 172
6.7 str_cli Function (Revisited Again) / 三顾str_cli函数 173
6.8 TCP Echo Server (Revisited) / 再访TCP回送服务器程序 175
6.9 pselect Function / pselect函数 181
6.10 poll Function / poll函数 182
6.11 TCP Echo Server (Revisited Again) / 三顾TCP回送服务器程序 185
6.12 Summary / 小结 188
Chapter 7. Socket Options / 套接字选项? 191
7.1 Introduction / 概述 191
7.2 getsockopt and setsockopt Functions / getsockopt和setsockopt函数 192
7.3 Checking if an Option Is Supported and Obtaining the Default / 检查选项是否被支持并获取默认值 194
7.4 Socket States / 套接字状态 198
7.5 Generic Socket Options / 通用套接字选项 198
7.6 IPv4 Socket Options / IPv4套接字选项 214
7.7 ICMPv6 Socket Option / ICMPv6套接字选项 216
7.8 IPv6 Socket Options / IPv6套接字选项 216
7.9 TCP Socket Options / TCP套接字选项 219
7.10 SCTP Socket Options / SCTP套接字选项 222
7.11 fcntl Function / fcntl函数 233
7.12 Summary / 小结 236
Chapter 8. Elementary UDP Sockets / 基本UDP套接字 239
8.1 Introduction / 概述 239
8.2 recvfrom and sendto Functions / recvfrom和sendto函数 240
8.3 UDP Echo Server: main Function / UDP回送服务器程序:main函数 241
8.4 UDP Echo Server: dg_echo Function / UDP回送服务器程序:dg_echo函数 242
8.5 UDP Echo Client: main Function / UDP回送客户程序:main函数 244
8.6 UDP Echo Client: dg_cli Function / UDP回送客户程序:dg_cli函数 245
8.7 Lost Datagrams / 数据报的丢失 245
8.8 Verifying Received Response / 验证接收到的响应 246
8.9 Server Not Running / 服务器程序未运行 248
8.10 Summary of UDP Example / UDP示例小结 250
8.11 connect Function with UDP / UDP的connect函数 252
8.12 dg_cli Function (Revisited) / 再论dg_cli函数 256
8.13 Lack of Flow Control with UDP / UDP缺乏流量控制 257
8.14 Determining Outgoing Interface with UDP / UDP中的外出接口的确定 261
8.15 TCP and UDP Echo Server Using select / 使用select函数的TCP和UDP回送服务器程序 262
8.16 Summary / 小结 264
Chapter 9. Elementary SCTP Sockets / 基本SCTP套接字 267
9.1 Introduction / 概述 267
9.2 Interface Models / 接口模型 268
9.3 sctp_bindx Function / sctp_bindx函数 272
9.4 sctp_connectx Function / sctp_connectx函数 274
9.5 sctp_getpaddrs Function / sctp_getpaddrs函数 275
9.6 sctp_freepaddrs Function / sctp_freepaddrs函数 275
9.7 sctp_getladdrs Function / sctp_getladdrs函数 275
9.8 sctp_freeladdrs Function / sctp_freeladdrs函数 276
9.9 sctp_sendmsg Function / sctp_sendmsg函数 276
9.10 sctp_recvmsg Function / sctp_recvmsg函数 277
9.11 sctp_opt_info Function / sctp_opt_info函数 278
9.12 sctp_peeloff Function / sctp_peeloff函数 278
9.13 shutdown Function / shutdown函数 278
9.14 Notifications / 通知 280
9.15 Summary / 小结 286
Chapter 10. SCTP Client/Server Example / SCTP客户/服务器示例 287
10.1 Introduction / 概述 287
10.2 SCTP One-to-Many-Style Streaming Echo Server: main Function / SCTP一到多式流分回送服务器程序:main函数 288
10.3 SCTP One-to-Many-Style Streaming Echo Client: main Function / SCTP一到多式流分回送客户程序:main函数 290
10.4 SCTP Streaming Echo Client: str_cli Function / SCTP流分回送客户程序:str_cli函数 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
Chapter 11. Name and Address Conversions / 名字与地址转换 303
11.1 Introduction / 概述 303
11.2 Domain Name System (DNS) / 域名系统 303
11.3 gethostbyname Function / gethostbyname函数 307
11.4 gethostbyaddr Function / gethostbyaddr函数 310
11.5 getservbyname and getservbyport Functions / getservbyname和getservbyport函数 311
11.6 getaddrinfo Function / getaddrinfo函数 315
11.7 gai_strerror Function / gai_strerror函数 320
11.8 freeaddrinfo Function / freeaddrinfo函数 321
11.9 getaddrinfo Function: IPv6 / getaddrinfo函数:IPv6 322
11.10 getaddrinfo Function: Examples / getaddrinfo函数:示例 324
11.11 host_serv Function / host_serv函数 325
11.12 tcp_connect Function / tcp_connect函数 326
11.13 tcp_listen Function / tcp_listen函数 330
11.14 udp_client Function / udp_client函数 334
11.15 udp_connect Function / udp_connect函数 337
11.16 udp_server Function / udp_server函数 338
11.17 getnameinfo Function / getnameinfo函数 340
11.18 Re-entrant Functions / 可重入函数 341
11.19 gethostbyname_r and gethostbyaddr_r Functions / gethostbyname_r和gethostbyaddr_r函数 344
11.20 Obsolete IPv6 Address Lookup Functions / 废弃的IPv6地址解析函数 346
11.21 Other Networking Information / 其他联网信息 348
11.22 Summary / 小结 349
Part 3. Advanced Sockets / 高级套接字 351
Chapter 12. IPv4 and IPv6 Interoperability / IPv4与IPv6的互操作性 353
12.1 Introduction / 概述 353
12.2 IPv4 Client, IPv6 Server / IPv4客户与IPv6服务器 354
12.3 IPv6 Client, IPv4 Server / IPv6客户与IPv4服务器 357
12.4 IPv6 Address-Testing Macros / IPv6地址测试宏 360
12.5 Source Code Portability / 源代码可移植性 361
12.6 Summary / 小结 362
Chapter 13. Daemon Processes and the inetd Superserver / 守护进程和inetd超级服务器程序 363
13.1 Introduction / 概述 363
13.2 syslogd Daemon / syslogd守护进程 364
13.3 syslog Function / syslog函数 365
13.4 daemon_init Function / daemon_init函数 367
13.5 inetd Daemon / inetd守护进程 371
13.6 daemon_inetd Function / daemon_inetd函数 377
13.7 Summary / 小结 379
Chapter 14. Advanced I/O Functions / 高级I/O函数 381
14.1 Introduction / 概述 381
14.2 Socket Timeouts / 套接字超时 381
14.3 recv and send Functions / recv和send函数 387
14.4 readv and writev Functions / readv和writev函数 389
14.5 recvmsg and sendmsg Functions / recvmsg和sendmsg函数 390
14.6 Ancillary Data / 辅助数据 395
14.7 How Much Data Is Queued? / 排队的数据量 398
14.8 Sockets and Standard I/O / 套接字和标准I/O 399
14.9 Advanced Polling / 高级轮询技术 402
14.10 Summary / 小结 408
Chapter 15. Unix Domain Protocols / Unix域协议 411
15.1 Introduction / 概述 411
15.2 Unix Domain Socket Address Structure / Unix域套接字地址结构 412
15.3 socketpair Function / socketpair函数 414
15.4 Socket Functions / 套接字函数 415
15.5 Unix Domain Stream Client/Server / Unix域流客户/服务器 416
15.6 Unix Domain Datagram Client/Server / Unix域数据报客户/服务器 418
15.7 Passing Descriptors / 描述符传递 420
15.8 Receiving Sender Credentials / 接收发送者的凭证 429
15.9 Summary / 小结 432
Chapter 16. Nonblocking I/O / 非阻塞I/O 435
16.1 Introduction / 概述 435
16.2 Nonblocking Reads and Writes: str_cli Function (Revisited) / 非阻塞读和写:再论str_cli函数 437
16.3 Nonblocking connect / 非阻塞connect 448
16.4 Nonblocking connect: Daytime Client / 非阻塞connect:时间获取客户程序 449
16.5 Nonblocking connect: Web Client / 非阻塞connect:Web客户程序 452
16.6 Nonblocking accept / 非阻塞accept 461
16.7 Summary / 小结 463
Chapter 17. ioctl Operations / ioctl操作 465
17.1 Introduction / 概述 465
17.2 ioctl Function / ioctl函数 466
17.3 Socket Operations / 套接字操作 466
17.4 File Operations / 文件操作 468
17.5 Interface Configuration / 接口配置 468
17.6 get_ifi_info Function / get_ifi_info函数 469
17.7 Interface Operations / 接口操作 480
17.8 ARP Cache Operations / ARP高速缓存操作 481
17.9 Routing Table Operations / 路由表操作 483
17.10 Summary / 小结 484
Chapter 18. Routing Sockets / 路由套接字 485
18.1 Introduction / 概述 485
18.2 Datalink Socket Address Structure / 数据链路套接字地址结构 486
18.3 Reading and Writing / 读和写 487
18.4 sysctl Operations / sysctl操作 495
18.5 get_ifi_info Function (Revisited) / get_ifi_info函数 500
18.6 Interface Name and Index Functions / 接口名字和索引函数 504
18.7 Summary / 小结 508
Chapter 19. Key Management Sockets / 密钥管理套接字 511
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 / 使用广播的dg_cli函数 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 / mcast_join和相关函数 565
21.8 dg_cli Function Using Multicasting / 使用多播的dg_cli函数 570
21.9 Receiving IP Multicast Infrastructure Session Announcements / 接收IP多播基础设施会话声明 571
21.10 Sending and Receiving / 发送和接收 575
21.11 Simple Network Time Protocol (SNTP) / 简单网络时间协议 579
21.12 Summary / 小结 584
Chapter 22. Advanced UDP Sockets / 高级UDP套接字 587
22.1 Introduction / 概述 587
22.2 Receiving Flags, Destination IP Address, and Interface Index / 接收标志、目的IP地址和接口索引 588
22.3 Datagram Truncation / 数据报截断 594
22.4 When to Use UDP Instead of TCP / 何时用UDP代替TCP 594
22.5 Adding Reliability to a UDP Application / 给UDP应用增加可靠性 597
22.6 Binding Interface Addresses / 绑定接口地址 608
22.7 Concurrent UDP Servers / 并发UDP服务器 612
22.8 IPv6 Packet Information / IPv6分组信息 615
22.9 IPv6 Path MTU Control / IPv6路径MTU控制 618
22.10 Summary / 小结 620
Chapter 23. Advanced SCTP Sockets / 高级SCTP套接字 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 / 给定IP地址找出关联ID 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 / 何时用SCTP代替TCP 641
23.13 Summary / 小结 643
Chapter 24. Out-of-Band Data / 带外数据 645
24.1 Introduction / 概述 645
24.2 TCP Out-of-Band Data / TCP带外数据 645
24.3 sockatmark Function / sockatmark函数 654
24.4 TCP Out-of-Band Data Recap / TCP带外数据小结 661
24.5 Summary / 小结 662
Chapter 25. Signal-Driven I/O / 信号驱动I/O 663
25.1 Introduction / 概述 663
25.2 Signal-Driven I/O for Sockets / 套接字的信号驱动I/O 664
25.3 UDP Echo Server Using SIGIO / 使用SIGIO的UDP回送服务器程序 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 / 使用线程的str_cli函数 679
26.4 TCP Echo Server Using Threads / 使用线程的TCP回送服务器程序 681
26.5 Thread-Specific Data / 线程特定数据 686
26.6 Web Client and Simultaneous Connections (Continued) / Web客户与同时连接(续) 694
26.7 Mutexes: Mutual Exclusion / 互斥锁 697
26.8 Condition Variables / 条件变量 701
26.9 Web Client and Simultaneous Connections (Continued) / Web客户与同时连接(续) 705
26.10 Summary / 小结 707
Chapter 27. IP Options / IP选项 709
27.1 Introduction / 概述 709
27.2 IPv4 Options / IPv4选项 709
27.3 IPv4 Source Route Options / IP源路径选项 711
27.4 IPv6 Extension Headers / IPv6扩展首部 719
27.5 IPv6 Hop-by-Hop Options and Destination Options / IPv6步跳选项和目的选项 719
27.6 IPv6 Routing Header / IPv6路由首部 725
27.7 IPv6 Sticky Options / IPv6粘附选项 731
27.8 Historical IPv6 Advanced API / 历史性IPv6高级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 / ping程序 741
28.6 traceroute Program / traceroute程序 755
28.7 An ICMP Message Daemon / 一个ICMP消息守护进程 769
28.8 Summary / 小结 786
Chapter 29. Datalink Access / 数据链路访问 787
29.1 Introduction / 概述 787
29.2 BSD Packet Filter (BPF) / BSD分组过滤器 788
29.3 Datalink Provider Interface (DLPI) / 数据链路提供者接口 790
29.4 Linux: SOCK_PACKET and PF_PACKET / Linux:SOCK_PACKET和PF_PACKET 791
29.5 libpcap: Packet Capture Library / libpcap:分组捕获函数库 792
29.6 libnet: Packet Creation and Injection Library / libnet:分组构造与注入函数库 793
29.7 Examining the UDP Checksum Field / 检查UDP的校验和字段 793
29.8 Summary / 小结 815
Chapter 30. Client/Server Design Alternatives / 多种客户/服务器设计方式 817
30.1 Introduction / 概述 817
30.2 TCP Client Alternatives / 各种TCP客户程序设计方式 819
30.3 TCP Test Client / TCP测试用客户程序 820
30.4 TCP Iterative Server / TCP迭代服务器程序 821
30.5 TCP Concurrent Server, One Child per Client / TCP并发服务器程序,每个客户一个子进程 822
30.6 TCP Preforked Server, No Locking Around accept / TCP预先派生子进程服务器程序,accept无上锁保护 826
30.7 TCP Preforked Server, File Locking Around accept / TCP预先派生子进程服务器程序,accept使用文件上锁保护 832
30.8 TCP Preforked Server, Thread Locking Around accept / TCP预先派生子进程服务器程序,accept使用线程上锁保护 835
30.9 TCP Preforked Server, Descriptor Passing / TCP预先派生子进程服务器程序,传递描述符 836
30.10 TCP Concurrent Server, One Thread per Client / TCP并发服务器程序,每个客户一个线程 842
30.11 TCP Prethreaded Server, per-Thread accept / TCP预先创建线程服务器程序,每个线程各自accept 844
30.12 TCP Prethreaded Server, Main Thread accept / TCP预先创建线程服务器程序,主线程统一accept 846
30.13 Summary / 小结 849
Chapter 31. STREAMS / 851
31.1 Introduction / 概述 851
31.2 Overview / 概貌 851
31.3 getmsg and putmsg Functions / getmsg和putmsg函数 856
31.4 getpmsg and putpmsg Functions / getpmsg和putpmsg函数 857
31.5 ioctl Function / ioctl函数 857
31.6 Transport Provider Interface (TPI) / 传输提供者接口 858
31.7 Summary / 小结 868
Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6 /
IPv4、IPv6、ICMPv4和ICMPv6 869
A.1 Introduction / 概述 869
A.2 IPv4 Header / IPv4首部 869
A.3 IPv6 Header / IPv6首部 871
A.4 IPv4 Addresses / IPv4地址 874
A.5 IPv6 Addresses / IPv6地址 877
A.6 Internet Control Message Protocols (ICMPv4 and ICMPv6) / 因特网控制消息协议(ICMPv4和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 / IPv6过渡:6to4 889
Appendix C. Debugging Techniques / 调试技术 891
C.1 System Call Tracing / 系统调用跟踪 891
C.2 Standard Internet Services / 标准因特网服务 893
C.3 sock Program / sock程序 893
C.4 Small Test Programs / 小测试程序 896
C.5 tcpdump Program / tcpdump程序 896
C.6 netstat Program / netstat程序 896
C.7 lsof Program / lsof程序 897
Appendix D. Miscellaneous Source Code / 其他源代码 899
D.1 unp.h Header / unp.h头文件 899
D.2 config.h Header / config.h头文件 904
D.3 Standard Error Functions / 标准错误处理函数 910
Appendix E. Solutions to Selected Exercises / 精选习题答案 913
Bibliography / 参考文献 947

前言/序言


深入探索网络通信的基石:UNIX Socket API 实践指南 在信息爆炸的数字时代,网络通信的效率与可靠性已成为衡量技术实力与应用性能的关键指标。从万维网的兴盛到分布式系统的广泛应用,底层网络协议的精妙设计与高效实现是这一切得以运转的根本。本书并非直接照搬某一本具体著作,而是旨在揭示隐藏在众多网络应用和服务背后,那套构建现代互联网通信的基石——UNIX Socket API。它将带您穿越抽象的网络协议栈,深入理解数据如何在不同主机之间自由流动,并掌握构建强大、灵活、高性能网络应用程序的核心技术。 本书将以一种自底向上的方式,层层剥开网络通信的神秘面纱,从最基础的套接字(Socket)概念出发,逐步引导您掌握如何利用UNIX提供的强大API来编织复杂的网络应用。我们不预设您已具备深厚的网络协议知识,但假定您对C语言及操作系统概念有一定的了解,这将是您遨游于网络编程海洋的有力工具。 第一部分:套接字基础与客户端/服务器模型 旅程的起点,我们将聚焦于套接字这一网络通信的终端。您将了解到,套接字并非物理设备,而是操作系统内核提供的一种抽象接口,它使得应用程序能够通过网络与其他应用程序进行数据交换。我们会详细解析套接字地址结构(如 `sockaddr` 及其派生结构 `sockaddr_in`),理解IP地址、端口号的含义,以及它们如何在网络中唯一标识一个通信端点。 接着,我们将深入探讨最经典的客户端/服务器(Client/Server)通信模型。这是绝大多数网络服务的基石。您将学习到服务器端如何使用 `socket()` 创建套接字,`bind()` 将套接字绑定到特定地址和端口,`listen()` 准备接受连接,以及 `accept()` 接受来自客户端的连接请求。对于客户端而言,您将掌握如何使用 `socket()` 创建套接字,并利用 `connect()` 主动连接到服务器。 数据传输是网络编程的核心。我们将深入讲解 `read()` 和 `write()`(或 `recv()` 和 `send()`)这两个至关重要的函数,它们是实现套接字之间数据读写的根本。您将理解阻塞(Blocking)与非阻塞(Non-blocking)I/O模式的区别,以及它们对程序设计思路产生的深远影响。理解阻塞模式下的 `read()` 和 `write()` 何时会暂停执行,以及非阻塞模式下如何通过轮询或事件通知来避免程序停滞,是编写响应式网络应用的关键。 第二部分:TCP与UDP的深入剖析 网络通信的实现离不开底层的传输协议。本书将重点解析两种最常用的传输层协议:TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。 TCP:可靠的数据流 TCP以其可靠性、有序性和流量控制而闻名,是大多数面向连接的网络应用(如Web浏览、文件传输)的首选。我们将详细剖析TCP的连接建立过程(三次握手)与连接终止过程(四次挥手),理解这些精妙的设计如何保证数据的完整性和正确性。您将学会如何使用 `connect()`、`bind()`、`listen()`、`accept()`、`read()`、`write()` 等函数来实现TCP客户端和服务器。 我们还将探讨TCP的几个重要特性,例如: 粘包与拆包问题: 在TCP流式传输中,应用层需要妥善处理由于底层传输特性带来的数据边界模糊问题,确保接收到的数据包是完整的。 流量控制与拥塞控制: TCP如何通过滑动窗口机制动态调整发送速率,避免网络拥塞,保证数据传输的效率与稳定性。 半关闭(Half-close): 了解TCP连接如何支持一方关闭写而另一方仍可继续读取,这在某些场景下非常有用。 UDP:高效的数据报 与TCP不同,UDP是一种无连接的、不可靠的数据报协议。它不保证数据的可靠送达、顺序或流量控制,但其传输效率高,开销小,适用于对实时性要求高、可以容忍少量数据丢失的场景,如在线游戏、视频直播、DNS查询等。您将学习如何使用 `socket()` 创建UDP套接字,`bind()` 绑定地址,以及 `sendto()` 和 `recvfrom()` 来发送和接收数据报。 我们将深入对比TCP和UDP的优缺点,帮助您根据应用场景选择最合适的传输协议。您会理解,何时选择TCP的可靠性,何时选择UDP的速度,是网络应用性能优化的重要考量。 第三部分:高级套接字特性与并发处理 掌握了TCP和UDP的基础后,我们将进一步探索套接字的高级特性,以构建更强大、更具伸缩性的网络服务。 I/O复用技术: 当服务器需要同时处理大量客户端连接时,传统的阻塞I/O模型会变得效率低下。我们将深入介绍几种主流的I/O复用技术: `select()`: 了解其工作原理,如何监控多个文件描述符的可读、可写或异常事件,以及其局限性(如文件描述符数量限制)。 `poll()`: 探讨`poll()`相比`select()`的改进,解决了文件描述符数量的限制,但仍然需要轮询。 `epoll()`(Linux特有): 深入解析`epoll()`的高效之处,如何采用事件驱动的机制,仅在事件发生时通知应用程序,显著提升了大规模并发处理的能力。您将学习如何利用`epoll()`构建高性能的并发服务器。 多进程与多线程模型: 为了有效地处理并发连接,我们需要引入并发机制。本书将探讨两种经典的多进程和多线程模型: 多进程模型: 每个客户端连接由一个独立的子进程处理。理解`fork()`的工作方式,以及进程间通信(IPC)的潜在挑战。 多线程模型: 每个客户端连接由一个独立的线程处理。理解线程的创建、同步与销毁,以及线程安全问题。 我们将权衡多进程与多线程各自的优缺点,并引导您理解在不同场景下选择哪种模型更为合适。 第四部分:网络安全与高级主题 在构建网络应用时,安全性是不可忽视的一环。虽然本书主要聚焦于套接字API,但我们将触及一些与安全相关的基础概念。 基本的身份验证与授权: 了解在应用程序层面实现简单的用户认证机制。 防火墙与网络策略: 理解套接字与操作系统防火墙(如iptables)如何协同工作,以及基本的网络访问控制。 数据加密基础: 简要介绍SSL/TLS等加密技术在保护网络通信中的作用,尽管本书不深入讲解加密库的API,但会点明其重要性。 此外,我们还将触及一些更高级的主题,例如: 域套接字(Unix Domain Sockets): 了解在同一台主机上的进程间通信,如何利用套接字接口进行高效的数据交换。 广播与组播: 探索如何实现一对多或多对多的网络通信。 信号处理与网络: 理解网络事件如何与程序信号交互,以及如何优雅地处理程序终止。 结语 通过对UNIX Socket API的深入剖析,本书旨在赋予您构建健壮、高效、可伸缩网络应用程序的强大能力。您将不仅仅是API的调用者,更能成为理解网络通信原理的设计者。无论您是希望开发高性能的Web服务器,设计实时的通信应用,还是构建复杂的分布式系统,掌握这套底层的网络通信机制,都将为您铺就一条通往成功的坚实道路。本书的学习过程,将是一次对计算机网络本质的探索之旅,一次对代码与协议精妙结合的体验。

用户评价

评分

作为一名资深的开发者,我在阅读《UNIX网络编程 卷1 套接字联网API(第3版 英文版)》时,更多的是在审视其作为一本技术参考书的严谨性和全面性。我必须承认,这本书在这些方面做得非常出色。作者在描述套接字API时,不仅给出了标准的用法,还深入探讨了各种边缘情况和特殊行为,这对于编写能够应对复杂网络环境的应用程序至关重要。书中对于网络编程中常见陷阱的警示,以及如何规避这些问题,更是具有极高的实践价值。我尤其欣赏作者在解释一些底层机制时,能够结合UNIX操作系统的特点来展开,这让我能够更深入地理解为何这些API会这样设计,以及它们在实际运行中的表现。虽然我阅历丰富,但在阅读过程中,依然能从中获得新的启发和对某些概念更深刻的理解,这足以证明这本书的价值是跨越经验水平的。

评分

这本《UNIX网络编程 卷1 套接字联网API(第3版 英文版)》真是让人爱不释手,虽然我还没能深入到每一个技术细节,但单从它提供的基础知识框架和对网络通信核心概念的阐述,就足以让我惊叹不已。它不像市面上许多其他书籍那样,上来就抛出各种晦涩难懂的代码和API调用,而是循序渐进地引导读者理解TCP/IP协议栈的运作原理,以及套接字API是如何与之交互的。我特别喜欢书中对于不同网络模型(如客户端/服务器模型、P2P模型)的讲解,这让我能够清晰地看到各种网络应用的设计思路和实现方式。而且,作者在解释概念时,总是能够用最精炼的语言点出关键,同时又辅以形象的比喻,使得那些原本枯燥的技术概念变得生动有趣。我感觉这本书不仅仅是在教授技术,更是在培养一种对网络编程的深刻理解,让我能够跳出死记硬背API的模式,去思考“为什么”和“如何”更有效地解决问题。虽然我主要在阅读前面的章节,但已经能预见到后面内容将是多么的精彩和实用。

评分

我是一名对网络编程充满好奇的初学者,而《UNIX网络编程 卷1 套接字联网API(第3版 英文版)》无疑是我踏入这个领域最理想的向导。这本书以一种非常友好的方式,为我打开了UNIX系统下网络通信的大门。我喜欢它提供的清晰逻辑和循序渐进的学习路径,让我不会感到 overwhelmed。即使有些概念我一开始不是很理解,但通过作者在后续章节中的补充说明和代码示例,我都能逐渐融会贯通。书中对TCP和UDP协议的介绍,让我对数据如何在网络上传输有了直观的认识。同时,对套接字API的讲解,更是将抽象的网络协议落到了实处,让我看到了如何通过编写代码来控制网络通信。我特别喜欢书中对错误处理的强调,这让我意识到在实际的网络编程中,健壮性和鲁棒性是多么的重要。虽然我还在学习初期,但已经对这本书的价值深信不疑,它为我打下了坚实的基础,让我对未来更深入的学习充满信心。

评分

坦白说,我购买这本《UNIX网络编程 卷1 套接字联网API(第3版 英文版)》主要是被它在行业内的口碑所吸引,而实际阅读后,我发现它的价值远超我的预期。这本书的英文原版,在语言的严谨性和技术的准确性上,都做得非常出色。作者在描述每一个API函数时,都力求做到事无巨细,从参数的含义、返回值的使用,到可能出现的错误情况和处理建议,都进行了详尽的说明。我尤其欣赏书中对于并发处理的介绍,比如多进程、多线程以及异步I/O模型,这些都是构建高性能网络应用的关键技术。作者并没有简单地罗列出这些模型的实现方法,而是深入分析了它们各自的优缺点,以及在不同场景下的适用性,这为我后续的项目开发提供了宝贵的参考。虽然我目前还在啃读初期的章节,但我已经能感受到这本书厚重的技术底蕴,它所涵盖的内容,是任何一个想要在网络编程领域有所建树的开发者都必须掌握的知识。

评分

在我看来,《UNIX网络编程 卷1 套接字联网API(第3版 英文版)》是一本真正意义上的“宝典”。它不是那种浮光掠影的入门读物,而是深入浅出地剖析了UNIX网络编程的核心。书中对于网络通信的各个环节,比如连接的建立、数据的传输、端口的绑定等等,都进行了极为详尽的描述,让我能够透彻理解每一个步骤背后的原理。我尤其推崇书中对性能优化的探讨,虽然我还没有完全消化这部分内容,但作者提出的各种优化策略,比如减少系统调用、使用非阻塞I/O等,都让我看到了提升网络应用效率的途径。而且,这本书中的代码示例,都非常精炼且具有代表性,直接演示了API的使用方法,这对于我学习和实践非常有帮助。即便是在阅读过程中遇到一些比较复杂的概念,我也能从中找到清晰的解释和逻辑推导,让我感受到作者在知识传达上的深厚功力。

评分

英文版的,为了学英语,最近太忙,还没有时间看

评分

质量不错,值得购买

评分

书很好,但收到时书边有压痕

评分

书不错,还没解封,打开看了一下还不错,经典书值得研究

评分

好东西。喜欢的很

评分

质量不错 内容也不错

评分

不错

评分

评分

便宜

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有