当前位置:首页 > 工业技术
UNIX网络编程 第1卷 套接口API
UNIX网络编程 第1卷 套接口API

UNIX网络编程 第1卷 套接口APIPDF电子书下载

工业技术

  • 电子书积分:22 积分如何计算积分?
  • 作 者:(美)W. Richard Stevens,(美)Bill Fenner,(美)Andrew M. Rudoff著;杨继张译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302119740
  • 页数:848 页
图书介绍:本书第1版和第2版由已故UNIX网络专家W.Richard Stevens博士独自编写。第3版为第2版的全面修订版本,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。本书全面深入地介绍了如何使用套接口API进行网络编程。全书从对套接口API的综合讨论开始,论述了基本编程内容后,即转入高级套接口编程的相关主题,包括IPv4与IPv6的互操作性、UNIX域协议、非阻塞IO、路由套接口、广播、多播、线程、原始套接口、数据链路访问等,对于客户-服务器程序的各种设计方法也作了完整的探讨,最后还对流这种设备驱动机制作了深入分析。在附录中给出了IPv6、ICMPv6、虚拟网络等内容以及部分习题答案。本书内容详尽且具权威性,几乎每章都提供精选的习题,是计算机和网络专业高年级本科生和研究生的首选教材,本书也可作为网络研究和开发人员的自学教材和参考书。
《UNIX网络编程 第1卷 套接口API》目录

目录 1

第1部分 简介和TCP/IP 1

第1章 简介 1

1.1 概述 1

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

1.3 协议无关性 9

1.4 错误处理:包裹函数 10

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

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

1.7 OSI模型 16

1.8 BSD网络支持历史 17

1.9 测试用网络及主机 18

1.10 Unix标准 21

1.11 64位体系结构 24

1.12 小结 25

1.13 习题 26

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

2.1 概述 27

2.2 总图 27

2.3 UDP:用户数据报协议 30

2.4 TCP:传输控制协议 30

2.5 SCTP:流控制传输协议 31

2.6 TCP连接的建立和终止 32

2.7 TIME_WAIT状态 38

2.8 SCTP关联的建立和终止 39

2.9 端口号 43

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

2.11 缓冲区大小及限制 47

2.12 标准因特网服务 52

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

2.14 小结 54

2.15 习题 55

第2部分 基本套接口编程 56

第3章 套接口编程简介 56

3.1 概述 56

3.2 套接口地址结构 56

3.3 值-结果参数 62

3.4 字节排序函数 64

3.5 字节操纵函数 67

3.6 inet_aton、inet_addr和inet_ntoa函数 68

3.7 inet_pton和inet_ntop函数 69

3.8 sock_ntop和相关函数 71

3.9 readn、writen和readline函数 73

3.10 小结 77

3.11 习题 78

第4章 基本TCP套接口编程 79

4.1 概述 79

4.2 socket函数 79

4.3 connect函数 82

4.4 bind函数 84

4.5 listen函数 87

4.6 accept函数 92

4.7 fork和exec函数 94

4.8 并发服务器 96

4.9 close函数 98

4.10 getsockname和getpeername函数 99

4.11 小结 101

4.12 习题 101

第5章 TCP客户/服务器程序例子 103

5.1 概述 103

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

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

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

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

5.6 正常启动 107

5.7 正常终止 109

5.8 POSIX信号处理 110

5.9 处理SIGCHLD信号 113

5.10 wait和waitpid函数 115

5.11 accept返回前连接夭折 119

5.12 服务器进程终止 120

5.13 SIGPIPE信号 122

5.14 服务器主机崩溃 123

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

5.16 服务器主机关机 124

5.17 TCP程序例子小结 125

5.18 数据格式 126

5.19 小结 129

5.20 习题 130

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

6.1 概述 131

6.2 I/O模型 131

6.3 select函数 137

6.4 str_cli函数(修订版) 142

6.5 批量输入 144

6.6 shutdown函数 146

6.7 str_cli函数(再修订版) 148

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

6.9 pselect函数 154

6.10 poll函数 155

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

6.12 小结 160

6.13 习题 161

第7章 套接口选项 162

7.1 概述 162

7.2 getsockopt和setsockopt函数 162

7.3 检查选项是否受支持并获取缺省值 165

7.4 套接口状态 168

7.5 通用套接口选项 169

7.6 IPv4套接口选项 182

7.7 ICMPv6套接口选项 184

7.8 IPv6套接口选项 184

7.9 TCP套接口选项 186

7.10 SCTP套接口选项 189

7.11 fcntl函数 198

7.12 小结 200

7.13 习题 201

第8章 基本UDP套接口编程 203

8.1 概述 203

8.2 recvfrom和sendto函数 204

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

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

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

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

8.7 数据报的丢失 208

8.8 验证接收到的响应 209

8.9 服务器进程未运行 211

8.10 UDP程序例子小结 212

8.11 UDP的connect函数 214

8.12 dg_cli函数(修订版) 218

8.13 UDP缺乏流量控制 219

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

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

8.16 小结 225

8.17 习题 225

第9章 基本SCTP套接口编程 227

9.1 概述 227

9.2 接口模型 227

9.3 sctp_bindx函数 231

9.6 sctp_freepaddrs函数 233

9.4 sctp_connectx函数 233

9.5 sctp_getpaddrs函数 233

9.7 sctp_getladdrs函数 234

9.8 sctp_freeladdrs函数 234

9.9 sctp_sendmsg函数 234

9.10 sctp_recvmsg函数 235

9.11 sctp_opt_info函数 235

9.12 sctp_peeloff函数 236

9.13 shutdown函数 236

9.14 通知 237

9.15 小结 242

9.16 习题 243

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

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

10.1 概述 244

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

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

10.5 探究头端阻塞 249

10.6 控制流的数目 255

10.7 控制终结 255

10.8 小结 257

10.9 习题 257

第11章 名字与地址转换 258

11.1 概述 258

11.2 域名系统 258

11.3 gethostbyname函数 261

11.4 gethostbyaddr函数 264

11.5 getservbyname和getservbyport函数 265

11.6 getaddrinfo函数 269

11.7 gai_strerror函数 274

11.8 freeaddrinfo函数 275

11.9 getaddrinfo函数:IPv6 275

11.10 getaddrinfo函数:例子 276

11.11 host_serv函数 278

11.12 tcp_connect函数 279

11.13 tcp_listen函数 282

11.14 udp_client函数 286

11.15 udp_connect函数 289

11.16 udp_server函数 290

11.17 getnameinfo函数 291

11.18 可重入函数 293

11.19 gethostbyname_r和gethostbyaddr_r函数 296

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

11.21 其他网络相关信息 298

11.22 小结 299

11.23 习题 300

第3部分 高级套接口编程 302

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

12.1 概述 302

12.2 IPv4客户与IPv6服务器 302

12.3 IPv6客户与IPv4服务器 306

12.4 IPv6地址测试宏 308

12.5 源代码可移植性 309

12.6 小结 310

12.7 习题 310

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

13.1 概述 311

13.2 syslogd守护进程 311

13.3 syslog函数 312

13.4 daemon init函数 315

13.5 inetd守护进程 318

13.6 daemon inetd函数 324

13.7 小结 325

13.8 习题 326

14.2 套接口超时 327

第14章 高级I/O函数 327

14.1 概述 327

14.3 recv和send函数 332

14.4 readv和writev函数 333

14.5 recvmsg和sendmsg函数 334

14.6 辅助数据 338

14.7 排队的数据量 342

14.8 套接口和标准I/O 342

14.9 高级轮询技术 345

14.10 T/TCP:事务目的TCP 350

14.11 小结 352

14.12 习题 353

15.2 Unix域套接口地址结构 354

第15章 Unix域协议 354

15.1 概述 354

15.3 socketpair函数 356

15.4 套接口函数 357

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

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

15.7 描述字传递 361

15.8 接收发送者的凭证 368

15.9 小结 371

15.10 习题 371

第16章 非阻塞I/O 373

16.1 概述 373

16.2 非阻塞读和写:str_cli函数(修订版) 374

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

16.3 非阻塞connect 384

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

16.6 非阻塞accept 395

16.7 小结 397

16.8 习题 397

第17章 ioctl操作 398

17.1 概述 398

17.2 ioctl函数 398

17.3 套接口操作 400

17.4 文件操作 400

17.5 接口配置 401

17.6 get_ifi_info函数 402

17.7 接口操作 412

17.8 ARP高速缓存操作 413

17.9 路由表操作 415

17.10 小结 415

17.11 习题 416

第18章 路由套接口 417

18.1 概述 417

18.2 数据链路套接口地址结构 418

18.3 读和写 418

18.4 sysctl操作 426

18.5 get_ifi_info函数 429

18.6 接口名字和索引函数 432

18.8 习题 437

18.7 小结 437

第19章 密钥管理套接口 438

19.1 概述 438

19.2 读和写 439

19.3 倾泻安全关联数据库 440

19.4 创建静态安全关联 443

19.5 动态维护安全关联 449

19.6 小结 452

19.7 习题 453

第20章 广播 454

20.1 概述 454

20.2 广播地址 455

20.3 单播和广播的比较 457

20.4 使用广播的dg_cli函数 459

20.5 竞争状态 462

20.6 小结 469

20.7 习题 470

第21章 多播 471

21.1 概述 471

21.2 多播地址 471

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

21.4 广域网上的多播 477

21.5 源特定多播 479

21.6 多播套接口选项 480

21.7 mcast_join和相关函数 485

21.8 使用多播的dg_cli函数 489

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

21.10 发送和接收 494

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

21.12 小结 501

21.13 习题 501

第22章 高级UDP套接口编程 503

22.1 概述 503

22.2 接收标志、宿IP地址和接口索引 503

22.3 数据报截断 509

22.4 何时改用UDP代替TCP 509

22.5 给UDP应用增加可靠性 511

22.6 捆绑接口地址 521

22.7 并发UDP服务器 525

22.8 IPv6分组信息 527

22.9 IPv6路径MTU控制 530

22.10 小结 531

22.11 习题 531

第23章 高级SCTP套接口编程 533

23.1 概述 533

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

23.3 部分递送 534

23.4 通知 536

23.5 无序的数据 540

23.6 捆绑地址子集 540

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

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

23.9 心搏和地址不可达 546

23.10 关联剥离 547

23.11 定时控制 548

23.12 何时改用SCTP代替TCP 550

23.13 小结 551

23.14 习题 551

第24章 带外数据 553

24.1 概述 553

24.2 TCP带外数据 553

24.3 sockatmark函数 560

24.4 TCP带外数据小结 565

24.5 客户-服务器心博函数 566

24.6 小结 570

24.7 习题 571

第25章 信号驱动I/O 572

25.1 概述 572

25.2 套接口的信号驱动I/O 572

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

25.4 小结 580

25.5 习题 580

第26章 线程 581

26.1 概述 581

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

26.3 使用线程的str_cli函数 584

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

26.5 线程特定数据 590

26.6 Web客户与同时连接 597

26.7 互斥锁 600

26.8 条件变量 604

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

26.10 小结 609

26.11 习题 609

第27章 IP选项 611

27.1 概述 611

27.2 IPv4选项 611

27.3 IP源路径选项 613

27.4 IPv6扩展头部 620

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

27.6 IPv6路由头部 625

27.7 IPv6粘附选项 630

27.8 历史性IPv6高级API 631

27.9 小结 632

27.10 习题 632

第28章 原始套接口 633

28.1 概述 633

28.2 原始套接口创建 633

28.3 原始套接口输出 634

28.4 原始套接口输入 636

28.5 ping程序 638

28.6 traceroute程序 650

28.7 一个ICMP消息守护程序 663

28.8 小结 677

28.9 习题 678

第29章 数据链路访问 679

29.1 概述 679

29.2 BPF:BSD分组过滤器 679

29.3 DLpI:数据链路提供者接口 681

29.4 Linux:SOCK_PACKET和PF_PACKET 682

29.5 libpcap:分组捕获函数库 683

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

29.7 检查UDP的校验和字段 684

29.8 小结 702

29.9 习题 703

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

30.1 概述 704

30.2 TCP客户程序设计范式 706

30.3 TCP测试用客户程序 707

30.4 TCP迭代服务器程序 708

30.5 TCP并发服务器程序,每个客户一个子进程 709

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

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

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

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

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

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

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

30.13 小结 733

30.14 习题 734

31.2 概貌 735

第31章 流 735

31.1 概述 735

31.3 getmsg和putmsg函数 739

31.4 getpmsg和putpmsg函数 740

31.5 ioctl函数 741

31.6 TPI:传输提供者接口 741

31.7 小结 750

31.8 习题 750

第4部分 附录 751

附录A IPv4、IPv6、ICMPv4和ICMPv6 751

A.1 概述 751

A.2 IPv4头部 752

A.3 IPv6头部 753

A.4 IPv4地址 755

A.5 IPv6地址 759

A.6 ICMPv4和ICMPv6:网际控制消息协议 763

附录B 虚拟网络 767

B.1 概述 767

B.2 MBone 767

B.3 6bone 769

B.4 6t04:IPv6过渡 769

附录C 调试技术 772

C.1 系统调用跟踪 772

C.2 标准因特网服务 775

C.3 sock程序 775

C.6 netstat程序 778

C.4 小测试程序 778

C.5 tcpdump程序 778

C.7 lsof程序 779

附录D 杂凑的源代码 780

D.1 unp.h头文件 780

D.2 configh头文件 784

D.3 标准错误处理函数 788

附录E 部分习题解答 792

附录F 参考文献 824

附录G 函数和宏定义索引表 832

附录H 结构定义索引表 834

附录I 中英文对照词汇表 836

相关图书
作者其它书籍
返回顶部