《UNIX网络编程》

《UNIX网络编程》

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

1. UNIX网络专家W. Richard Stevens的传世之作。

2. 世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据网络技术的发展,进行全面修订。

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

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

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

内容简介

本书是UNIX网络编程的经典之作。书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还深入分析了流这种设备驱动机制。

本书内容详尽且具性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

作者简介

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

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

安德鲁.M. 鲁道夫(Andrew M.Rudoff) Sun公司资深软件工程师,专攻网络、操作系统内核、文件系统和高可用性软件体系结构。

章节目录

目  录

第 一部分 简介和TCP/IP

第 1章 简介 2

1.1 概述 2

1.2 一个简单的时间获取客户程序 5

1.3 协议无关性 9

1.4 错误处理:包裹函数 10

1.5 一个简单的时间获取服务器程序 12

1.6 本书中客户/服务器程序示例索引表 14

1.7 OSI模型 16

1.8 BSD网络支持历史 17

1.9 测试用网络及主机 19

1.10 Unix标准 22

1.11 64位体系结构 24

1.12 小结 25

习题 25

第 2章 传输层:TCP、UDP和SCTP 27

2.1 概述 27

2.2 总图 27

2.3 用户数据报协议(UDP) 29

2.4 传输控制协议(TCP) 30

2.5 流控制传输协议(SCTP) 31

2.6 TCP连接的建立和终止 31

2.7 TIME_WAIT状态 37

2.8 SCTP关联的建立和终止 38

2.9 端口号 42

2.10 TCP端口号与并发服务器 43

2.11 缓冲区大小及限制 45

2.12 标准因特网服务 50

2.13 常见因特网应用的协议使用 51

2.14 小结 52

习题 53

第二部分 基本套接字编程

第3章 套接字编程简介 56

3.1 概述 56

3.2 套接字地址结构 56

3.3 值—结果参数 61

3.4 字节排序函数 63

3.5 字节操纵函数 66

3.6 inet_aton、inet_addr和inet_ntoa函数 67

3.7 inet_pton和inet_ntop函数 68

3.8 sock_ntop和相关函数 70

3.9 readn、writen和readline函数 72

3.10 小结 76

习题 76

第4章 基本TCP套接字编程 77

4.1 概述 77

4.2 socket函数 77

4.3 connect函数 80

4.4 bind函数 81

4.5 listen函数 84

4.6 accept函数 88

4.7 fork和exec函数 90

4.8 并发服务器 91

4.9 close函数 93

4.10 getsockname和getpeername函数 94

4.11 小结 96

习题 96

第5章 TCP客户/服务器程序示例 97

5.1 概述 97

5.2 TCP回射服务器程序:main函数 97

5.3 TCP回射服务器程序:str_echo函数 98

5.4 TCP回射客户程序:main函数 99

5.5 TCP回射客户程序:str_cli函数 100

5.6 正常启动 101

5.7 正常终止 102

5.8 POSIX信号处理 103

5.9 处理SIGCHLD信号 106

5.10 wait和waitpid函数 108

5.11 accept返回前连接中止 111

5.12 服务器进程终止 112

5.13 SIGPIPE信号 113

5.14 服务器主机崩溃 114

5.15 服务器主机崩溃后重启 115

5.16 服务器主机关机 116

5.17 TCP程序例子小结 116

5.18 数据格式 117

5.19 小结 120

习题 120

第6章 I/O复用:select和poll函数 122

6.1 概述 122

6.2 I/O模型 122

6.3 select函数 127

6.4 str_cli函数(修订版) 132

6.5 批量输入 133

6.6 shutdown函数 136

6.7 str_cli函数(再修订版) 137

6.8 TCP回射服务器程序(修订版) 138

6.9 pselect函数 142

6.10 poll函数 144

6.11 TCP回射服务器程序(再修订版) 146

6.12 小结 148

习题 149

第7章 套接字选项 150

7.1 概述 150

7.2 getsockopt和setsockopt函数 150

7.3 检查选项是否受支持并获取默认值 152

7.4 套接字状态 156

7.5 通用套接字选项 156

7.6 IPv4套接字选项 168

7.7 ICMPv6套接字选项 169

7.8 IPv6套接字选项 169

7.9 TCP套接字选项 171

7.10 SCTP套接字选项 173

7.11 fcntl函数 182

7.12 小结 184

习题 184

第8章 基本UDP套接字编程 186

8.1 概述 186

8.2 recvfrom和sendto函数 187

8.3 UDP回射服务器程序:main函数 187

8.4 UDP回射服务器程序:dg_echo函数 188

8.5 UDP回射客户程序:main函数 190

8.6 UDP回射客户程序:dg_cli函数 190

8.7 数据报的丢失 191

8.8 验证接收到的响应 191

8.9 服务器进程未运行 193

8.10 UDP程序例子小结 194

8.11 UDP的connect函数 196

8.12 dg_cli函数(修订版) 199

8.13 UDP缺乏流量控制 200

8.14 UDP中的外出接口的确定 203

8.15 使用select函数的TCP和UDP回射服务器程序 204

8.16 小结 206

习题 207

第9章 基本SCTP套接字编程 208

9.1 概述 208

9.2 接口模型 208

9.3 sctp_bindx函数 212

9.4 sctp_connectx函数 213

9.5 sctp_getpaddrs函数 213

9.6 sctp_freepaddrs函数 213

9.7 sctp_getladdrs函数 214

9.8 sctp_freeladdrs函数 214

9.9 sctp_sendmsg函数 214

9.10 sctp_recvmsg函数 215

9.11 sctp_opt_info函数 215

9.12 sctp_peeloff函数 216

9.13 shutdown函数 216

9.14 通知 217

9.15 小结 221

习题 222

第 10章 SCTP客户/服务器程序例子 223

10.1 概述 223

10.2 SCTP一到多式流分回射服务器程序:main函数 223

10.3 SCTP一到多式流分回射客户程序:main函数 225

10.4 SCTP流分回射客户程序:sctpstr_cli函数 226

10.5 探究头端阻塞 228

10.6 控制流的数目 233

10.7 控制终结 233

10.8 小结 234

习题 235

第 11章 名字与地址转换 236

11.1 概述 236

11.2 域名系统 236

11.3 gethostbyname函数 239

11.4 gethostbyaddr函数 242

11.5 getservbyname和getservbyport函数 242

11.6 getaddrinfo函数 245

11.7 gai_strerror函数 250

11.8 freeaddrinfo函数 251

11.9 getaddrinfo函数:IPv6 251

11.10 getaddrinfo函数:例子 253

11.11 host_serv函数 254

11.12 tcp_connect函数 254

11.13 tcp_listen函数 257

11.14 udp_client函数 261

11.15 udp_connect函数 263

11.16 udp_server函数 264

11.17 getnameinfo函数 266

11.18 可重入函数 267

11.19 gethostbyname_r和gethostbyaddr_r函数 270

11.20 作废的IPv6地址解析函数 271

11.21 其他网络相关信息 272

11.22 小结 273

习题 274

第三部分 高级套接字编程

第 12章 IPv4与IPv6的互操作性 278

12.1 概述 278

12.2 IPv4客户与IPv6服务器 278

12.3 IPv6客户与IPv4服务器 281

12.4 IPv6地址测试宏 283

12.5 源代码可移植性 284

12.6 小结 284

习题 285

第 13章 守护进程和inetd超级服务器 286

13.1 概述 286

13.2 syslogd守护进程 286

13.3 syslog函数 287

13.4 daemon_init函数 289

13.5 inetd守护进程 293

13.6 daemon_inetd函数 297

13.7 小结 299

习题 299

第 14章 高级I/O函数 300

14.1 概述 300

14.2 套接字超时 300

14.3 recv和send函数 305

14.4 readv和writev函数 306

14.5 recvmsg和sendmsg函数 307

14.6 辅助数据 310

14.7 排队的数据量 313

14.8 套接字和标准I/O 313

14.9 高级轮询技术 316

14.10 T/TCP:事务目的TCP 320

14.11 小结 322

习题 323

第 15章 Unix域协议 324

15.1 概述 324

15.2 Unix域套接字地址结构 324

15.3 socketpair函数 326

15.4 套接字函数 327

15.5 Unix域字节流客户/服务器程序 327

15.6 Unix域数据报客户/服务器程序 329

15.7 描述符传递 330

15.8 接收发送者的凭证 337

15.9 小结 340

习题 340

第 16章 非阻塞式I/O 341

16.1 概述 341

16.2 非阻塞读和写:str_cli函数

(修订版) 342

16.3 非阻塞connect 351

16.4 非阻塞connect:时间获取客户

程序 352

16.5 非阻塞connect:Web客户程序 354

16.6 非阻塞accept 362

16.7 小结 363

习题 363

第 17章 ioctl操作 365

17.1 概述 365

17.2 ioctl函数 365

17.3 套接字操作 366

17.4 文件操作 367

17.5 接口配置 367

17.6 get_ifi_info函数 369

17.7 接口操作 378

17.8 ARP高速缓存操作 378

17.9 路由表操作 380

17.10 小结 381

习题 381

第 18章 路由套接字 382

18.1 概述 382

18.2 数据链路套接字地址结构 382

18.3 读和写 383

18.4 sysctl操作 390

18.5 get_ifi_info函数 394

18.6 接口名字和索引函数 397

18.7 小结 401

习题 401

第 19章 密钥管理套接字 402

19.1 概述 402

19.2 读和写 403

19.3 倾泻安全关联数据库 404

19.4 创建静态安全关联 407

19.5 动态维护安全关联 412

19.6 小结 415

习题 416

第 20章 广播 417

20.1 概述 417

20.2 广播地址 418

20.3 单播和广播的比较 419

20.4 使用广播的dg_cli函数 422

20.5 竞争状态 424

20.6 小结 431

习题 432

第 21章 多播 433

21.1 概述 433

21.2 多播地址 433

21.3 局域网上多播和广播的比较 436

21.4 广域网上的多播 438

21.5 源特定多播 440

21.6 多播套接字选项 441

21.7 mcast_join和相关函数 445

21.8 使用多播的dg_cli函数 450

21.9 接收IP多播基础设施会话声明 451

21.10 发送和接收 454

21.11 SNTP:简单网络时间协议 457

21.12 小结 461

习题 461

第 22章 高级UDP套接字编程 462

22.1 概述 462

22.2 接收标志、目的IP地址和接口索引 462

22.3 数据报截断 467

22.4 何时用UDP代替TCP 467

22.5 给UDP应用增加可靠性 469

22.6 捆绑接口地址 478

22.7 并发UDP服务器 482

22.8 IPv6分组信息 483

22.9 IPv6路径MTU控制 486

22.10 小结 487

习题 488

第 23章 高级SCTP套接字编程 489

23.1 概述 489

23.2 自动关闭的一到多式服务器程序 489

23.3 部分递送 490

23.4 通知 492

23.5 无序的数据 495

23.6 捆绑地址子集 496

23.7 确定对端和本端地址信息 497

23.8 给定IP地址找出关联ID 500

23.9 心搏和地址不可达 501

23.10 关联剥离 502

23.11 定时控制 503

23.12 何时改用SCTP代替TCP 505

23.13 小结 506

习题 506

第 24章 带外数据 507

24.1 概述 507

24.2 TCP带外数据 507

24.3 sockatmark函数 513

24.4 TCP带外数据小结 519

24.5 客户/服务器心搏函数 520

24.6 小结 524

习题 524

第 25章 信号驱动式I/O 525

25.1 概述 525

25.2 套接字的信号驱动式I/O 525

25.3 使用SIGIO的UDP回射服务器程序 527

25.4 小结 532

习题 533

第 26章 线程 534

26.1 概述 534

26.2 基本线程函数:创建和终止 535

26.3 使用线程的str_cli函数 537

26.4 使用线程的TCP回射服务器程序 538

26.5 线程特定数据 542

26.6 Web客户与同时连接 549

26.7 互斥锁 552

26.8 条件变量 555

26.9 Web客户与同时连接(续) 558

26.10 小结 560

习题 560

第 27章 IP选项 561

27.1 概述 561

27.2 IPv4选项 561

27.3 IPv4源路径选项 562

27.4 IPv6扩展首部 569

27.5 IPv6步跳选项和目的地选项 569

27.6 IPv6路由首部 573

27.7 IPv6粘附选项 577

27.8 历史性IPv6高级API 578

27.9 小结 579

习题 579

第 28章 原始套接字 580

28.1 概述 580

28.2 原始套接字创建 580

28.3 原始套接字输出 581

28.4 原始套接字输入 582

28.5 ping程序 584

28.6 traceroute程序 596

28.7 一个ICMP消息守护程序 608

28.8 小结 622

习题 622

第 29章 数据链路访问 623

29.1 概述 623

29.2 BPF:BSD分组过滤器 623

29.3 DLPI:数据链路提供者接口 625

29.4 Linux:SOCK_PACKET和

PF_PACKET 626

29.5 libpcap:分组捕获函数库 627

29.6 libnet:分组构造与输出函数库 627

29.7 检查UDP的校验和字段 628

29.8 小结 645

习题 645

第30章 客户/服务器程序设计范式 646

30.1 概述 646

30.2 TCP客户程序设计范式 648

30.3 TCP测试用客户程序 649

30.4 TCP迭代服务器程序 650

30.5 TCP并发服务器程序,

每个客户一个子进程 650

30.6 TCP预先派生子进程服务器程序,accept无上锁保护 653

30.7 TCP预先派生子进程服务器程序,accept使用文件上锁保护 659

30.8 TCP预先派生子进程服务器程序,accept使用线程上锁保护 662

30.9 TCP预先派生子进程服务器程序,传递描述符 663

30.10 TCP并发服务器程序,每个客户一个线程 667

30.11 TCP预先创建线程服务器程序,每个线程各自accept 669

30.12 TCP预先创建线程服务器程序,主线程统一accept 671

30.13 小结 673

习题 674

第31章 流 675

31.1 概述 675

31.2 概貌 675

31.3 getmsg和putmsg函数 678

31.4 getpmsg和putpmsg函数 679

31.5 ioctl函数 680

31.6 TPI:传输提供者接口 680

31.7 小结 689

习题 689

附录A IPv4、IPv6、ICMPv4和ICMPv6 690

附录B 虚拟网络 704

附录C 调试技术 708

附录D 杂凑的源代码 714

附录E 精选习题答案 726

参考文献 756

索引 763

《UNIX网络编程》是2019年由人民邮电出版社出版,作者。

得书感谢您对《《UNIX网络编程》》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Go语言高级编程 电子书
Go语言进阶实战,CGO编程web编程书。
Python少儿趣味编程 电子书
适读人群 :任何想要学习Python或初次接触编程的人;Python语言的初学者、计算机专业的学生。尤其适合信息技术课教师或培训机构的老师以及青少年读者(初高中学生)阅读。 《Python少儿趣味编》由少儿编程畅销图书作者精心编写,是少儿学习Python编程的趣味指南,全书共17章,按照由简到难、逐步深入的方式组织各章内容。《Python少儿趣味编》精心选取内容,注重难易适度,语言通俗易懂,代码示例丰富。在每章的末尾,还给出了一些练习题并给出了解答。 《Python少儿趣味编》具有以下特色: ● 精心选取和组织内容,注重难易适度——涵盖基础知识、趣味应用和热门应用。 ● 坚持“做中学”的理念和方法——通过详细的示例和课后练习帮助读者学习和掌握。 ● 体现趣味性——用海龟给图绘制的机器猫、小猪佩奇等卡通角色,编写贪吃蛇游戏,对古典名著《西游记》分词。 ● 增强可拓展性——逐步扩展和改进的“成绩单”示例程序,章末习题既巩固知识,也拓展编程技能。 《Python少儿趣味编》适合想要学习Python 编程基础的少年儿童(尤其是10 岁以上的孩子)及想要教孩子学习编程的家长阅读,也适合少儿编程培训班的老师用作少儿编程培训的教材。 本书带领读者编写的趣味程序包括: ● 帮Johnson 找到回家的路; ● 逐步扩展和改进的“成绩单”示例程序; ● 用海龟绘图绘制的机器猫; ● 用海龟绘图绘制小猪佩奇; ● 弹球游戏; ● 编写贪吃蛇游戏; ● 对古典名著《西游记》分词。
Python游戏趣味编程 电子书
1.易于学习和理解:先讲解较少的语法知识,通过游戏案例逐步引入新的语法知识; 2.为初学者量身打造:案例从易到难,所有程序的代码均不超过100行; 3.趣味性强:12个案例,涵盖了多种游戏类型,寓教于乐; 4.可拓展性强:提供练习题和参考答案,巩固知识,训练逻辑思维; 5.配套素材齐全:提供完整源代码和分步骤源代码、游戏素材、游戏效果演示视频,可通过异步社区观看游戏开发步骤讲解视频; 6.全彩印刷。 美国教育家杜威曾说过:“大多数的人,只觉得五官能接触的、实用的东西才有趣味,书本上的趣味是没有的。” 《Python游戏趣味编程》通过介绍12个由易到难的有趣游戏案例的编写过程,带领读者学习用Python开发趣味游戏,从而提升读者对编程的兴趣和能力。 《Python游戏趣味编程》把趣味游戏开发应用于Python编程教学,通过介绍12个由易到难的有趣游戏案例的编写过程,带领读者从零基础开始学习。全书共13章,系统讲解了Python语言基本概念、开发环境搭建、循环、列表、数据类型、条件、复合运算符、字符串拼接、布尔变量、数组、函数、列表操作、面向对象编程等基础知识,还介绍了图片操作、文件读写、声音播放、异常处理等较为实用的编程技能,所有这些知识和技能,都通过游戏案例展示其用法。贯穿各章,还给出了一些练习,帮助读者巩固所学的知识。附录A给出了这些练习题的答案,附录B给出了Python语法知识在书中相关章节的索引。 《Python游戏趣味编程》适合不同年龄、不同层次的Python编程初学者阅读和自学,也可以作为中学生、大学生学习程序设计的教材和少儿编程培训机构的参考教材。 本书适合以下人群阅读: 想要让孩子学习Python编程的家长,或者想要自己教孩子编程的家长。 学习过其他编程语言,想要快速学习Python的人。 对计算机游戏感兴趣,想要尝试Python游戏编程的人。 想要学习Python编程的中学生和大学生。 少儿编程培训机构的老师和学生。 任何对计算机编程感兴趣、特别是初次接触编程的人。 本书中制作和讲解的小游戏 弹跳的小球 美丽的圆圈画 疯狂的小圆圈 飞翔的小鸟 见缝插针 飞机大战 勇闯地下一百层 贪吃蛇 拼图游戏 消灭星星 坚持一百秒 趣味图像生成
Python编程轻松进阶 电子书
阅读本书,理解代码底层逻辑,像职业程序员一样使用Python。
趣味掌控板编程 电子书
本书适合5~8年级编程初学者自学,也适合中小学和校外培训机构的信息技术教师、创客教师教学使用。