图书介绍

用TCP/IP进行网际互连 设计、实现与内核 ANSI C版 ANSI C version:design, implementation, and internals 第2卷【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

用TCP/IP进行网际互连 设计、实现与内核 ANSI C版 ANSI C version:design, implementation, and internals 第2卷
  • (美)DouglasE.Comer,(美)DavidL.Stevens著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121073854
  • 出版时间:2008
  • 标注页数:520页
  • 文件大小:94MB
  • 文件页数:543页
  • 主题词:计算机网络-通信协议-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

用TCP/IP进行网际互连 设计、实现与内核 ANSI C版 ANSI C version:design, implementation, and internals 第2卷PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 引言与概述1

1.1TCP/IP协议1

1.2了解细节的必要性1

1.3协议间交互作用的复杂性1

1.4本书采用的方法2

1.5研究代码的重要性2

1.6 Xinu操作系统2

1.7本书其余部分的组织3

1.8小结3

深入研究4

第2章 操作系统中的TCP/IP软件结构5

2.1引言5

2.2进程的概念5

2.3进程的优先级6

2.4进程的同步通信6

2.5进程间通信8

2.5.1端口8

2.5.2消息传送9

2.6设备驱动程序和输入、输出程序9

2.7网络的输入和中断10

2.8向高层协议传递分组11

2.9 IP协议与传输协议之间的数据报传递12

2.9.1将传入的数据报发送给TCP12

2.9.2将传入的数据报发送给UDP12

2.10向应用程序的传递操作13

2.11输出时的信息流13

2.12从TCP经过IP到网络输出14

2.13 UDP输出处理15

2.14小结15

深入研究16

习题16

第3章 网络接口层18

3.1引言18

3.2网络接口抽象模型18

3.2.1接口数据结构18

3.3以太网的基本定义21

3.3.1应用中的统计数据24

3.4接口的逻辑状态24

3.5本地主机接口24

3.6缓冲区管理25

3.6.1大缓冲区方案25

3.6.2链表方案(mbuf)26

3.6.3方案举例26

3.6.4有关缓冲区的其他议题26

3.7传入分组的多路分解27

3.8小结28

深入研究29

习题29

第4章 地址的发现及绑定(ARP)30

4.1引言30

4.2 ARP软件在理论上的结构30

4.3 ARP设计方案举例30

4.4 ARP高速缓存的数据结构31

4.5 ARP输出处理34

4.5.1搜索ARP高速缓存34

4.5.2 ARP请求分组的广播35

4.5.3输出过程36

4.6 ARP输入处理38

4.6.1向表中增加已转换的表项38

4.6.2发送等待发送的分组39

4.6.3 ARP输入过程40

4.7 ARP高速缓存的管理42

4.7.1高速缓存表项的分配42

4.7.2高速缓存的定期维护管理43

4.7.3释放队列中的分组44

4.8 ARP初始化45

4.9 ARP参数配置46

4.10小结46

深入研究47

习题47

第5章 IP:软件的总体结构48

5.1引言48

5.2中心环节48

5.3 IP软件设计思想48

5.4 IP软件结构和数据报流程49

5.4.1选择传入数据报的策略49

5.4.2允许IP进程被阻塞51

5.4.3 IP使用的常量的定义54

5.4.4校验和的计算57

5.4.5处理定向广播57

5.4.6识别一个广播地址59

5.5 IP首部中的字节顺序60

5.6向IP发送数据报61

5.6.1发送本地生成的数据报61

5.6.2发送传入数据报63

5.7表格的维护63

5.8小结65

深入研究65

习题65

第6章 IP:选路表和选路算法67

6.1引言67

6.2路由维护和查找67

6.3选路表结构67

6.4选路表数据结构68

6.5路由的生成源及保持时间70

6.6为数据报选择路由70

6.6.1实用过程70

6.6.2获得一个路由73

6.6.3数据结构初始化74

6.7选路表的定期维护75

6.7.1增加路由77

6.7.2删除路由80

6.8 IP选项处理82

6.9小结83

深入研究83

习题84

第7章 IP:分片与重组85

7.1引言85

7.2数据报的分片85

7.2.1为一个数据报片再次分片85

7.3分片的实现85

7.3.1发送一个数据报片87

7.3.2复制数据报首部89

7.4数据报的重组90

7.4.1数据结构90

7.4.2互斥操作91

7.4.3在链表中加入一个数据报片91

7.4.4溢出时的丢弃93

7.4.5测试一个完整的数据报94

7.4.6将数据报片组装成完整的数据报96

7.5数据报片链表的维护管理97

7.6初始化99

7.7小结99

深入研究100

习题100

第8章 IP:差错处理(ICMP)101

8.1引言101

8.2 ICMP报文格式101

8.3 ICMP报文的实现101

8.4传入ICMP报文的处理103

8.5 ICMP重定向报文的处理105

8.6设置子网掩码107

8.7为一个ICMP分组选择源地址108

8.8生成ICMP差错报文109

8.9避免出现关于差错报文的差错报文111

8.10为ICMP报文分配缓冲区112

8.11 ICMP报文中的数据部分114

8.12 ICMP重定向报文的生成116

8.13小结117

深入研究117

习题117

第9章 IP:组播处理(IGMP)119

9.1引言119

9.2维护组播主机群的成员信息119

9.3主机群表119

9.4查找一个主机群121

9.5向主机群表中增加一个表项122

9.6为一个组播地址设置网络接口124

9.7 IP组播地址和硬件组播地址之间的转换125

9.8从主机群表中删除一个组播地址126

9.9加入一个主机群127

9.10维持与一个组播路由器的联系129

9.11 IGMP成员关系报告的实现130

9.12计算随机时延131

9.13发送IGMP报告的进程132

9.14处理输入的IGMP报文133

9.15脱离主机群134

9.16 IGMP数据结构的初始化136

9.17小结137

深入研究137

习题137

第10章 UDP:用户数据报138

10.1引言138

10.2 UDP端口和多路分解处理138

10.2.1成对通信使用的端口138

10.2.2多对一通信使用的端口138

10.2.3操作模式139

10.2.4多路分解处理中的细节问题139

10.3 UDP的输入处理141

10.3.1 UDP数据结构的说明141

10.3.2传入数据报队列的说明142

10.3.3 UDP端口号与队列的映射144

10.3.4分配空闲队列144

10.3.5网络字节顺序与本机字节顺序之间的相互转换145

10.3.6处理一个已到达的数据报146

10.3.7 UDP校验和的计算148

10.4 UDP输出的处理149

10.4.1一个UDP数据报的发送150

10.5小结151

深入研究152

习题152

第11章 TCP:数据结构和输入处理153

11.1引言153

11.2 TCP软件概览153

11.3传输控制块153

11.4 TCP报文段格式158

11.5序列空间中的比较159

11.6 TCP有限状态机160

11.7状态变迁举例160

11.8有限状态机的说明161

11.9 TCB的分配及初始化163

11.9.1分配一个TCB163

11.9.2释放一个TCB164

11.10有限状态机的实现165

11.11处理一个输入报文段165

11.11.1将TCP首部转换为本地字节顺序167

11.11.2计算TCP的校验和168

11.11.3为报文段查找对应的TCB169

11.11.4检查报文段的有效性171

11.11.5为当前状态选择一个过程172

11.12小结173

深入研究173

习题173

第12章 TCP:有限状态机的实现175

12.1引言175

12.2 CLOSED状态处理175

12.3从容关闭175

12.4关闭后的延迟计时176

12.5 TIME-WAIT状态处理177

12.6 CLOSING状态处理178

12.7 FIN-WAIT-2状态处理179

12.8 FIN-WAIT-1状态处理180

12.9 CLOSE-WAIT状态处理181

12.10 LAST-ACK状态处理182

12.11 ESTABLISHED状态处理183

12.12处理报文段中的紧急数据184

12.13处理报文段中的其他数据186

12.14经常注意已接收的八位组188

12.15终止一个TCP连接190

12.16建立TCP连接191

12.17初始化TCB191

12.18 SYN-SENT状态处理193

12.19 SYN-RECEIVED状态处理194

12.20 LISTEN状态处理196

12.21为一个新TCB初始化窗口变量197

12.22小结199

深入研究199

习题199

第13章 TCP:输出处理200

13.1引言200

13.2 TCP输出控制的复杂性200

13.3 TCP输出的四种状态200

13.4作为一个进程的TCP输出201

13.5 TCP输出报文201

13.6对输出状态和TCB编号的编码202

13.7 TCP输出进程的实现202

13.8互斥操作203

13.9 IDLE状态的实现203

13.10 PERSIST状态的实现204

13.11 TRANSMIT状态的实现205

13.12 RETRANSMIT(重发)状态的实现206

13.13发送一个报文段206

13.14计算TCP数据长度210

13.15序号计算210

13.16其他TCP过程211

13.16.1发送复位211

13.16.2转换成网络字节顺序213

13.16.3等待输出缓冲空间213

13.16.4唤醒等待TCB的进程214

13.16.5选择初始序号216

13.17小结217

深入研究217

习题217

第14章 定时器管理218

14.1引言218

14.2定时事件的通用数据结构218

14.3 TCP事件使用的数据结构219

14.4定时器、事件和报文220

14.5 TCP定时器进程220

14.6删除TCP定时器事件222

14.7删除一个TCB的所有事件223

14.8确定出现一个事件的尚需时间224

14.9插入TCP定时器事件225

14.10启动无时延的TCP输出227

14.11小结227

深入研究228

习题228

第15章 流量控制和自适应重发229

15.1引言229

15.2自适应重发中的难题229

15.3自适应重发的调整229

15.4重发定时器和退避230

15.4.1 Karn算法230

15.4.2重发输出状态的处理230

15.5基于窗口的流量控制231

15.5.1糊涂窗口综合症232

15.5.2接收方预防糊涂窗口232

15.5.3零窗口之后的性能优化233

15.5.4调整发送方的窗口233

15.6最大报文段长度的计算235

15.6.1发送方的最大报文段长度235

15.6.2选项处理236

15.6.3通告一个最大输入报文段长度238

15.7网络拥塞预防与控制239

15.7.1成倍递减法239

15.8慢启动和拥塞预防239

15.8.1慢启动239

15.8.2超过上限后减速递增240

15.8.3递增拥塞窗口尺寸的实现240

15.9平均往返时间估值及超时242

15.9.1一种快速平均值更新算法242

15.9.2传入确认的处理243

15.9.3为窗口外的数据创建确认报文段245

15.9.4接收到一个确认后改变输出状态246

15.10技巧和注意事项247

15.11小结247

深入研究248

习题248

第16章 紧急数据处理和推功能250

16.1引言250

16.2带外信令250

16.3紧急数据250

16.4标准的解释250

16.4.1带外数据的解释法251

16.4.2数据标记解释法252

16.5为Berkeley紧急指针解释法而进行的配置252

16.6通知应用程序253

16.6.1多个并发应用程序253

16.7从TCP中读取数据254

16.8发送紧急数据255

16.9 TCP的推功能256

16.10在失序交付时对推数据的解释257

16.11输入时推功能的实现257

16.12小结258

深入研究258

习题259

第17章 套接层的接口260

17.1引言260

17.2通过设备形成的接口260

17.2.1单字节I/O261

17.2.2其他一些非传送的函数261

17.3作为设备的TCP连接262

17.4 TCP客户程序举例262

17.5 TCP服务器程序举例263

17.6 TCP主设备的实现265

17.6.1 TCP主设备打开功能265

17.6.2被动TCP连接的形成266

17.6.3主动TCP连接的形成267

17.6.4分配一个未使用的本地端口268

17.6.5主动连接的完成269

17.6.6 TCP主设备的控制271

17.7 TCP从设备的实现271

17.7.1由TCP从设备输入数据271

17.7.2由TCP从设备输入单字节273

17.7.3通过TCP从设备的输出274

17.7.4 TCP连接的关闭276

17.7.5 TCP从设备的控制操作278

17.7.6接受来自被动设备的连接279

17.7.7改变LISTEN队列的长度279

17.7.8获取从设备中的统计数据280

17.7.9设置或清除TCP选项282

17.8从设备的初始化283

17.9小结284

深入研究284

习题284

第18章 RIP:主动路由传播和被动获取286

18.1引言286

18.2主动和被动模式的参与者286

18.3基本的RIP算法和费用度量286

18.4不稳定性及解决方案287

18.4.1计数到无穷大287

18.4.2网关瘫痪和路由超时288

18.4.3水平划分288

18.4.4毒性逆转288

18.4.5具有毒性逆转的路由超时289

18.4.6触发更新289

18.4.7随机化以防止广播风暴289

18.5报文类型290

18.6协议特性290

18.7 RIP的具体实现291

18.7.1实现的两种形式291

18.7.2定义291

18.7.3输出的理论结构293

18.8基本RIP进程294

18.8.1“必须为零”的字段内容必须为零295

18.8.2处理一个传入响应296

18.8.3在更新期间的锁定298

18.8.4验证一个地址298

18.9对输入请求的响应299

18.10生成更新报文300

18.11初始化一个更新报文的副本301

18.11.1向更新报文的副本中添加路由302

18.11.2计算一个待通告的费用值304

18.11.3为RIP报文分配数据报305

18.12生成定期的RIP输出306

18.13 RIP的局限性307

18.14小结307

深入研究307

习题307

第19章 OSPF:使用SPF算法的路由传播308

19.1引言308

19.2 OSPF配置和选项308

19.3 OSPF的图论模型308

19.4 OSPF的说明311

19.4.1 OSPF分组格式的说明311

19.4.2 OSPF接口说明313

19.4.3全局常量和数据结构的说明314

19.5邻接关系和链路状态信息的传播316

19.6用Hello发现相邻网关317

19.7 Hello分组的发送319

19.7.1 Hello分组的一个模板320

19.7.2 Hello分组输出进程321

19.8指定路由器323

19.9选出一个指定路由器324

19.10变动之后重建邻接关系327

19.11处理到达的Hello分组329

19.12在相邻网关表中增加一个网关331

19.13相邻网关状态的变迁332

19.14 OSPF定时器事件和重发333

19.15判断是否允许邻接关系335

19.16 OSPF输入的处理336

19.17链路状态处理中的说明和过程339

19.18数据库描述分组的生成341

19.19创建一个模板343

19.20传送数据库描述分组344

19.21处理到达的数据库描述分组345

19.21.1处理EXSTA RT状态下的分组347

19.21.2处理EXCHNG状态下的分组348

19.21.3处理FULL状态下的分组349

19.22处理链路状态请求分组350

19.23建立链路状态概要信息352

19.24 OSPF实用过程354

19.25小结356

深入研究357

习题357

第20章 SNMP:MIB变量、表示形式和绑定358

20.1引言358

20.2服务器的组织和名字的映射358

20.3 MIB变量359

20.3.1表格中的字段359

20.4 MIB变量名360

20.4.1变量名的数字表示形式360

20.5名字之间的字典顺序360

20.6除去前缀361

20.7在MIB变量上执行的操作361

20.8表格名362

20.9名字体系概念上的线索362

20.10 MIB变量的数据结构363

20.10.1使用独立的函数完成操作365

20.11用于快速查找的数据结构365

20.12散列表的实现366

20.13 MIB绑定的描述366

20.14绑定中使用的内部变量373

20.15散列表的查找374

20.16 SNMP的结构和常量376

20.17 ASN.1表示形式的处理382

20.17.1长度表示法382

20.17.2将整数转换为ASN.1格式384

20.17.3将对象标识符转换为ASN.1格式386

20.17.4用于转换对象值的例程389

20.18小结391

深入研究391

习题392

第21章 SNMP:客户与服务器393

21.1引言393

21.2服务器中数据的表示形式393

21.3服务器的实现393

21.4对SNMP报文的分析396

21.5绑定链表中ASN.1名字的转换400

21.6解析一个请求401

21.7对get-next操作的解释404

21.8操作的间接执行404

21.9表格的间接寻址407

21.10应答报文的反向生成408

21.11将内部格式转换为ASN.1表示形式410

21.12服务器使用的实用函数412

21.13一个SNMP客户的实现413

21.14变量初始化415

21.15小结417

深入研究417

习题417

第22章 SNMP:表格访问函数419

22.1引言419

22.2表格访问419

22.3表格的对象标识符419

22.4地址入口表函数420

22.4.1对地址入口表的get操作421

22.4.2对地址入口表的get-first操作423

22.4.3对地址入口表的get-next操作424

22.4.4地址入口表中的递增搜索425

22.4.5对地址入口表的set操作426

22.5地址转换表函数426

22.5.1对地址转换表的get操作428

22.5.2对地址转换表的get-first操作429

22.5.3对地址转换表的get_next操作431

22.5.4地址转换表中的递增搜索432

22.5.5乱中有序433

22.5.6对地址转换表的set操作434

22.6网络接口表的函数435

22.6.1接口表标识符的匹配435

22.6.2对网络接口表的get操作436

22.6.3对网络接口表的get-first操作440

22.6.4对网络接口表的get-next操作441

22.6.5对网络接口表的set操作442

22.7选路表函数443

22.7.1对选路表的get操作444

22.7.2对选路表的get-first操作446

22.7.3对选路表的get-next操作447

22.7.4选路表中的递增搜索449

22.7.5对选路表的set操作450

22.8 TCP连接表函数452

22.8.1对TCP连接表的get操作453

22.8.2对TCP连接表的get-first操作455

22.8.3对TCP连接表的get-next操作456

22.8.4 TCP连接表中的递增搜索457

22.8.5对TCP连接表的set操作458

22.9 UDP Listener表460

22.9.1对UDP Listener表的get操作461

22.9.2对UDP Listener表的get-first操作462

22.9.3对UDP Listener表的get-next操作463

22.9.4 UDP Listener表中的递增搜索464

22.9.5对UDP Listener表的set操作465

22.10 IP地址转换的实用例程466

22.11小结467

深入研究467

习题468

第23章 实现的回顾469

23.1引言469

23.2程序代码统计分析469

23.3各个协议的程序代码行数469

23.4每个协议所需的函数和过程470

23.5小结471

习题471

附录1 过程调用交叉参考表473

附录2 程序代码中使用到的C数据结构交叉参考表493

附录3 程序代码中使用到的Xinu函数和常量498

参考文献513

热门推荐