图书介绍

用TCP/IP进行网际互联 第2卷 设计、实现与内核 第3版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

用TCP/IP进行网际互联 第2卷 设计、实现与内核 第3版
  • (美)Douglas E.Comer,(美)David L.Stevens著;张娟等译 著
  • 出版社: 北京:电子工业出版社
  • ISBN:7505366300
  • 出版时间:2001
  • 标注页数:520页
  • 文件大小:19MB
  • 文件页数:543页
  • 主题词:

PDF下载


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

下载说明

用TCP/IP进行网际互联 第2卷 设计、实现与内核 第3版PDF格式电子书版下载

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

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

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

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

图书目录

第1章 引言与概述1

1.1 TCP/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.4 进程的同步通信6

2.3 进程的优先级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.1 高速缓存表项的分配42

4.7 ARP高速缓存的管理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.6 为数据报选择路由70

6.6.1 实用过程70

6.5 路由的生成源及保持时间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.2 数据报的分片85

7.3 分片的实现85

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

7.1 引言85

第7章 IP:分片与重组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.2 ICMP报文格式101

8.3 ICMP报文的实现101

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

8.1 引言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.2 维护组播主机群的成员信息119

9.3 主机群表119

9.1 引言119

第9章 IP:组播处理(IGMP)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

习题137

9.17 小结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.1 分配一个TCB163

11.9 TCB的分配及初始化163

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.2 CLOSED状态处理175

12.3 从容关闭175

12.1 引言175

第12章 TCP:有限状态机的实现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.5 TCP输出报文201

13.4 作为一个进程的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.13 发送一个报文段206

13.12 RETRANSMIT(重发)状态的实现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.5 TCP定时器进程220

14.4 定时器、事件和报文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.1 Karn算法230

15.4.2 重发输出状态的处理230

15.4 重发定时器和退避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.1 一种快速平均值更新算法242

15.9 平均往返时间估值及超时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.5 为Berkeley紧急指针解释法而进行的配置252

16.4.2 数据标记解释法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.4 TCP客户程序举例262

17.3 作为设备的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.7 改变LISTEN队列的长度279

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

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

17.7.9 设置或清除TCP选项282

17.8 从设备的初始化283

17.9 小结284

深入研究284

习题284

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

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

18.1 引言286

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

18.4 不稳定性及解决方案287

18.4.1 计数到无穷大287

18.4.2 网关瘫痪和路由超时288

18.4.3 水平划分288

18.4.4 毒性逆转288

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

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

18.4.6 触发更新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 处理EXSTART状态下的分组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.1 表格中的字段359

20.3 MIB变量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.1 长度表示法382

20.17 ASN.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

热门推荐