《TCP/IP详解 卷2 实现 英文版》PDF下载

  • 购买积分:28 如何计算积分?
  • 作  者:(美)赖特,(美)史蒂文斯著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2016
  • ISBN:9787115401281
  • 页数:1134 页
图书介绍:本书是TCP/IP领域的经典之作!书中完整而详细地介绍了TCP/IP协议是如何实现的。本书介绍了一个实际的TCP/IP实现,并给出了这一实现的完整源代码,帮助读者全面掌握TCP/IP的实现。本书内容详尽且具权威性,几乎每章都提供精选的习题,并在附录中提供了部分习题的答案。

Chapter 1.概述 1

1.1 概述 1

1.2 源代码表示 1

1.3 历史 3

1.4 应用编程接口 5

1.5 示例程序 5

1.6 系统调用和库函数 7

1.7 网络实现概述 9

1.8 描述符 10

1.9 Mbuf与输出处理 15

1.10 输入处理 19

1.11 网络实现概述(续) 22

1.12 中断级别与并发 23

1.13 源代码组织 26

1.14 测试网络 28

1.15 小结 29

Chapter 2.Mbuf:存储器缓冲区 31

2.1 概述 31

2.2 代码介绍 36

2.3 Mbuf定义 37

2.4 mbuf结构 38

2.5 简单的Mbuf宏和函数 40

2.6 m_devget和m_pullup函数 44

2.7 Mbuf宏和函数小结 51

2.8 Nef/3联网数据结构小结 54

2.9 m_copy和簇引用计数 56

2.10 其他选择 60

2.11 小结 60

Chapter 3.接口层 63

3.1 概述 63

3.2 代码介绍 64

3.3 ifnet结构 65

3.4 ifaddr结构 73

3.5 sockaddr结构 74

3.6 ifnet和ifaddr专用化 76

3.7 网络初始化概述 77

3.8 以太网初始化 80

3.9 SLIP初始化 82

3.10 环回初始化 85

3.11 if_attach函数 85

3.12 ifinit函数 93

3.13 小结 94

Chapter 4.接口:以太网 95

4.1 概述 95

4.2 代码介绍 96

4.3 以太网接口 98

4.4 ioctl系统调用 114

4.5 小结 125

Chapter 5.接口:SLIP和环回 127

5.1 概述 127

5.2 代码介绍 127

5.3 SLIP接口 128

5.4 环回接口 150

5.5 小结 153

Chapter 6.IP编址 155

6.1 概述 155

6.2 代码介绍 158

6.3 接口和地址小结 158

6.4 sockaddr in结构 160

6.5 in ifaddr结构 161

6.6 地址指派 161

6.7 接口ioctl处理 177

6.8 Internet实用函数 181

6.9 ifnet实用函数 182

6.10 小结 183

Chapter 7.域和协议 185

7.1 概述 185

7.2 代码介绍 186

7.3 domain结构 187

7.4 protosw结构 188

7.5 IP的domain和protosw结构 191

7.6 pffindproto和pffindtype函数 196

7.7 pfctlinput函数 198

7.8 IP初始化 199

7.9 sysctl系统调用 201

7.10 小结 204

Chapter 8.IP:网际协议 205

8.1 概述 205

8.2 代码介绍 206

8.3 IP分组 210

8.4 输入处理:ipintr函数 212

8.5 转发:ip_forward函数 220

8.6 输出处理:ip_output函数 228

8.7 Internet检验和:in_cksum函数 234

8.8 setsockopt和getsockopt系统调用 239

8.9 ip_sysctl函数 244

8.10 小结 245

Chapter 9.IP选项处理 247

9.1 概述 247

9.2 代码介绍 247

9.3 选项格式 248

9.4 ip_dooptions函数 249

9.5 记录路由选项 252

9.6 源站和记录路由选项 254

9.7 时间戳选项 261

9.8 ip_insertoptions函数 265

9.9 ip_pcbopts函数 269

9.10 一些限制 272

9.11 小结 272

Chapter 10.IP分片与重装 275

10.1 概述 275

10.2 代码介绍 277

10.3 分片 278

10.4 ip_optcopy函数 282

10.5 重装 283

10.6 ip_reass函数 286

10.7 ip_slowtimo函数 298

10.8 小结 300

Chapter 11.ICMP:因特网控制消息协议 301

11.1 概述 301

11.2 代码介绍 305

11.3 icmp结构 308

11.4 ICMP的protosw结构 309

11.5 输入处理:icmp_input函数 310

11.6 错误处理 313

11.7 请求处理 316

11.8 重定向处理 321

11.9 回答处理 323

11.10 输出处理 324

11.11 icmp_error函数 324

11.12 icmp_reflect函数 328

11.13 icmp_send函数 333

11.14 icmp_sysctl函数 334

11.15 小结 335

Chapter 12.IP多播 337

12.1 概述 337

12.2 代码介绍 340

12.3 以太网多播地址 341

12.4 ether_multi结构 342

12.5 以太网多播接收 344

12.6 in_multi结构 345

12.7 ip_moptions结构 347

12.8 多播的套接字选项 348

12.9 多播的TTL值 348

12.10 ip_setmoptions函数 351

12.11 加入一个IP多播组 355

12.12 离开一个IP多播组 366

12.13 ip_getmoptions函数 371

12.14 多播输入处理:ipintr函数 373

12.15 多播输出处理:ip_output函数 375

12.16 性能的考虑 379

12.17 小结 379

Chapter 13.因特网组管理协议 381

13.1 概述 381

13.2 代码介绍 382

13.3 igmp结构 384

13.4 IGMP的protosw结构 384

13.5 加入一个组:igmp_joingroup函数 386

13.6 igmp_fasttimo函数 387

13.7 输入处理:igmp_input函数 391

13.8 离开一个组:igmp_leavegroup函数 395

13.9 小结 396

Chapter 14.IP多播选路 397

14.1 概述 397

14.2 代码介绍 398

14.3 多播输出处理(续) 399

14.4 mrouted守护进程 401

14.5 虚拟接口 404

14.6 IGMP(续) 411

14.7 多播选路 416

14.8 多播转发:ip_mforward函数 424

14.9 清理:ip_mrouter_done函数 433

14.10 小结 434

Chapter 15.套接字层 435

15.1 概述 435

15.2 代码介绍 436

15.3 socket结构 437

15.4 系统调用 441

15.5 进程、描述符和套接字 445

15.6 socket系统调用 447

15.7 getsock和sockargs函数 451

15.8 bind系统调用 453

15.9 1isten系统调用 455

15.10 tsleep和wakeup函数 456

15.11 accept系统调用 457

15.12 sonewconn和soisconnected函数 461

15.13 connect系统调用 464

15.14 shutdown系统调用 468

15.15 close系统调用 471

15.16 小结 474

Chapter 16.套接字I/O 475

16.1 概述 475

16.2 代码介绍 475

16.3 套接字缓冲区 476

16.4 write、writev、sendto和sendmsg系统调用 480

16.5 sendmsg系统调用 483

16.6 sendit函数 485

16.7 sosend函数 489

16.8 read、readv、recvfrom和recvmsg系统调用 500

16.9 recvmsg系统调用 501

16.10 recvit函数 503

16.11 soreceive函数 505

16.12 soreceive代码 510

16.13 select系统调用 524

16.14 小结 534

Chapter 17.套接字选项 537

17.1 概述 537

17.2 代码介绍 538

17.3 setsockopt系统调用 539

17.4 getsockopt系统调用 545

17.5 fontl和ioctl系统调用 548

17.6 getsockname系统调用 554

17.7 getpeername系统调用 554

17.8 小结 557

Chapter 18.Radix树选路表 559

18.1 概述 559

18.2 选路表结构 560

18.3 选路套接字 569

18.4 代码介绍 570

18.5 Radix节点数据结构 573

18.6 选路结构 578

18.7 初始化:route_init和rtable_init函数 581

18.8 初始化:rn_init和rn_inithead函数 584

18.9 重复键和掩码列表 587

18.10 rn_match函数 591

18.11 rn_search函数 599

18.12 小结 599

Chapter 19.选路请求和选路消息 601

19.1 概述 601

19.2 rtalloc和rtallocl函数 601

19.3 RTFREE宏和rtfree函数 604

19.4 rtrequest函数 607

19.5 rt_setgate函数 612

19.6 rtinit函数 615

19.7 rtredirect函数 617

19.8 选路消息结构 621

19.9 rt_missmsg函数 625

19.10 rt_ifmsg函数 627

19.11 rt_newaddrmsg函数 628

19.12 rt_msgl函数 630

19.13 rt_msg2函数 632

19.14 sysctl_rtable函数 635

19.15 sysctl_dumpentry函数 640

19.16 sysctl_iflist函数 642

19.17 小结 644

Chapter 20.选路套接字 645

20.1 概述 645

20.2 routedomain和protosw结构 646

20.3 选路控制块 647

20.4 raw_init函数 647

20.5 route_output函数 648

20.6 rt_xaddrs函数 660

20.7 rt_setmetrics函数 661

20.8 raw_input函数 662

20.9 route_usrreq函数 664

20.10 raw_usrreq函数 666

20.11 raw_attach、raw_detach和raw_disconnect函数 671

20.12 小结 672

Chapter 21.ARP:地址解析协议 675

21.1 概述 675

21.2 ARP及选路表 675

21.3 代码介绍 678

21.4 ARP结构 681

21.5 arpwhohas函数 683

21.6 arprequest函数 684

21.7 arpintr函数 687

21.8 in_arpinput函数 688

21.9 ARP定时器函数 694

21.10 arpresolve函数 696

21.11 arplookup函数 701

21.12 代理ARP 703

21.13 arp_rt request函数 704

21.14 ARP和多播 710

21.15 小结 711

Chapter 22.协议控制块 713

22.1 概述 713

22.2 代码介绍 715

22.3 inpcb结构 716

22.4 in_pcballoc和 in_pcbdetach函数 717

22.5 绑定、连接和多路分配 719

22.6 in_pcblookup函数 724

22.7 in_pcbbind函数 728

22.8 in_pcbconnect函数 735

22.9 in_pcbdisconnect函数 741

22.10 in_setsockaddr和in_setpeeraddr函数 741

22.11 in_pcbnotify、in_rtchange和in_losing函数 742

22.12 实现细化 750

22.13 小结 751

Chapter 23.UDP:用户数据报协议 755

23.1 概述 755

23.2 代码介绍 755

23.3 UDP的protosw结构 758

23.4 UDP首部 759

23.5 udp_init函数 760

23.6 udp_output函数 760

23.7 udp_input函数 769

23.8 udp_saveopt函数 781

23.9 udp_ctlinput函数 782

23.10 udp_usrreq函数 784

23.11 udp_sysctl函数 790

23.12 实现细化 791

23 13 小结 793

Chapter 24.TCP:传输控制协议 795

24.1 概述 795

24.2 代码介绍 795

24.3 TCP的protosw结构 801

24.4 TCP首部 801

24.5 TCP控制块 803

24.6 TCP状态变迁图 805

24.7 TCP序列号 807

24.8 tcp_init函数 812

24.9 小结 815

Chapter 25.TCP定时器 817

25.1 概述 817

25.2 代码介绍 819

25.3 tcp_canceltimers函数 821

25.4 tcp_fasttimo函数 821

25.5 tcp_slowtimo函数 822

25.6 tcp_timers函数 824

25.7 重传定时器计算 831

25.8 tcp_newtcpcb函数 833

25.9 tcp_setpersist函数 835

25.10 tcp_xmit timer函数 836

25.11 重传超时:tcp_timers函数 841

25.12 RTT示例 846

25.13 小结 848

Chapter 26.TCP输出 851

26.1 概述 851

26.2 tcp_output概述 852

26.3 确定一个段是否应该发送 852

26.4 TCP选项 864

26 5 窗口缩放选项 866

26.6 时间戳选项 866

26.7 发送一个段 871

26.8 tcp_template函数 884

26.9 tcp_respond函数 885

26.10 小结 888

Chapter 27.TCP函数 891

27.1 概述 891

27.2 tcp_drain函数 892

27.3 tcp_drop函数 892

27.4 tcp_close函数 893

27.5 tcp_mss函数 897

27.6 tcp_ctlinput函数 904

27.7 tcp_notify函数 904

27.8 tcp_quench函数 906

27.9 TCP_REASS宏tcp reass函数 906

27.10 tcp_trace函数 916

27.11 小结 920

Chapter 28.TCP输入 923

28.1 概述 923

28.2 初步处理 925

28.3 tcp_dooptions函数 933

28 4 首部预测 934

28 5 TCP输入:慢路径处理 941

28.6 被动打开的开始,主动打开的完成 942

28.7 PAWS:包装序列号保护 951

28.8 修剪段使数据在窗口中 954

28.9 自连接和同时打开 960

28.10 记录时间戳 963

28.11 RST处理 963

28.12 小结 965

Chapter29.TCP输入(续) 967

29.1 概述 967

29.2 ACK处理概述 967

29.3 被动打开和同时打开的完成 967

29.4 快速重传及快速恢复算法 970

29.5 ACK处理 974

29.6 更新窗口信息 981

29.7 紧急模式处理 983

29.8 tcp_pulloutofband函数 986

29.9 接收到的数据的处理 988

29.10 FIN处理 990

29.11 最终处理 992

29.12 实现细化 994

29.13 首部压缩 995

29.14 小结 1004

Chapter 30.TCP用户请求 1007

30.1 概述 1007

30.2 tcp_usrreq函数 1007

30.3 tcp_attach函数 1018

30.4 tcp_disconnect函数 1019

30.5 tcp_usrclosed函数 1021

30.6 tcp_ctloutput函数 1022

30.7 小结 1025

Chapter 31.BPF:BSD分组过滤程序 1027

31.1 概述 1027

31.2 代码介绍 1028

31.3 bpf_if结构 1029

31.4 bpf_d结构 1032

31.5 BPF输入 1040

31.6 BPF输出 1046

31.7 小结 1047

Chapter 32.原始IP 1049

32.1 概述 1049

32.2 代码介绍 1050

32.3 原始IP的protosw结构 1051

32.4 rip_init函数 1053

32.5 rip_input函数 1053

32.6 rip_output函数 1056

32.7 rip_usrreq函数 1058

32.8 rip_ctloutput函数 1063

32.9 小结 1065

后记 1067

Appendix A.精选习题的解答 1069

Appendix B.源代码的获取 1093

Appendix C.RFC 1122的有关内容 1097

C.1 链路层要求 1097

C.2 IP要求 1098

C.3 IP选项要求 1102

C.4 分片和组装要求 1104

C.5 ICMP要求 1105

C.6 多播要求 1110

C.7 IGMP要求 1111

C.8 选路要求 1111

C.9 ARP要求 1113

C.10 UDP要求 1113

C.11 TCP要求 1115

参考文献 1125