首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 图书频道 > 教育科技 > 电子与通信 >

IPv6详解(卷1):核心协议实现

2010-03-22 
基本信息·出版社:人民邮电出版社 ·页码:846 页 ·出版日期:2009年01月 ·ISBN:9787115189509 ·条形码:9787115189509 ·版本:第1版 ·装帧:平装 ...
商家名称 信用等级 购买信息 订购本书
IPv6详解(卷1):核心协议实现 去商家看看
IPv6详解(卷1):核心协议实现 去商家看看

 IPv6详解(卷1):核心协议实现


基本信息·出版社:人民邮电出版社
·页码:846 页
·出版日期:2009年01月
·ISBN:9787115189509
·条形码:9787115189509
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:图灵计算机科学丛书
·外文书名:IPv6 core protocols implementation

内容简介 《IPv6详解》全面讲解IPv6及相关协议实现的事实标准KAME,揭示了KAME IPv6协议栈的所有细节,对每行代码到底做了什么以及为什么要这样设计都进行了解释。共分7章,分别介绍IPv6地址结构、IPv6、ICMPv6、邻居发现和无状态地址自动配置、传输层协议及套接字API扩展。每章都包含两个主要部分:第一部分提供了作为RFC发布的主要协议规范的摘要,定义各种协议分组,解释每个分组中每个字段的含义和目的;第二部分则描述实现这些RFC的KAME的数据结构及功能。书的最后还提供了一些例子,说明如何编写既可以在IPv4网络上运行、又可以在IPv6网络上运行的可移植应用程序。
《IPv6详解》是IPv6的权威参考书,适合网络设计和开发人员阅读。此外,还适合作为高校相关专业网络课程的教学参考书。
作者简介 Qing Li(李清),Blue Coat系统公司资深架构师,负责领导下一代支持IPV6的安全代理应用系统的设计和开发工作。他曾在风河系统公司工作8年,是风河嵌入式IPV6产品的首席架构师。他拥有多项美国专利,并著有Real-Time Concepts for Embedded Systems等畅销书。他还是FreeBSD操作系统项目活跃的开发者。
Tatuya Jinmei(神明达哉),东芝公司研究与开发中心的科学。KAME项目核心开发人员。2003年在日本庆应义塾大学获得博士学位。
Keiichi Shima(岛庆一),日本Internet Initiative公司的资深研究人员。他的研究领域是IPv6和IPv6移动性。KAME项目核心开发人员,开发了移动IPv6/NEMO基本支持协议栈。现在正致力于BSD操作系统中新的移动栈(SHISA栈)的研究。
编辑推荐 “阅读《IPv6详解》是一种享受,让我想起了Riehard Stevens的《TCP/IP详解》,《IPv6详解》的技术深度完一可以与之媲美。”
——Jim Bound 北美IPV6工作组主席
“在IPV6时代,《IPv6详解》将取代Riehard Stevens的《TCP/IP详解》一书。我强烈推荐给所有程序员阅读。”
——Junichiro Hagino EAME项目核心开发者

目录
第1章 绪论 1
 1.1 引言 1
 1.2 IPv6和KAME的简史 1
 1.3 KAME发行版概述 5
 1.3.1 源代码树结构 5
 1.3.2 构建过程 6
 1.4 BSD网络实现概述 8
 1.5 源代码描述 10
 1.5.1 排版约定 10
 1.5.2 源代码描述示例 11
 1.5.3 预处理器变量 12
 1.5.4 网络设备与体系结构假设 12
 1.6 mbuf与IPv6 13
 1.6.1 常见的mbuf操纵宏和函数 14
 1.6.2 mbuf标签 14
 1.6.3 IPv6的mbuf要求 18
 1.6.4 诊断mbuf链 20
第2章 IPv6编址体系结构 22
 2.1 引言 22
 2.2 IPv6地址 22
 2.3 IPv6地址的文本表示 23
 2.4 地址范围 24
 2.4.1 范围区域 25
 2.4.2 区域索引 27
 2.4.3 范围受限地址的文本表示 29
 2.4.4 单播站点本地地址的废弃 30
 2.5 IPv6地址格式 31
 2.5.1 接口标识符的产生 32
 2.5.2 有关地址格式的注解 33
 2.5.3 多播地址格式 33
 2.6 节点地址要求 35
 2.7 IPv6地址空间管理 35
 2.8 代码介绍 36
 2.8.1 IPv6地址结构:in6_addr{}与sockaddr_in6{} 36
 2.8.2 宏与变量 37
 2.9 对范围区域的处理 39
 2.9.1 范围区域的初始化 39
 2.9.2 范围区域ID 40
 2.9.3 地址结构中的区域ID 41
 2.9.4 与范围相关的实用函数 43
 2.10 接口地址结构 49
 2.10.1 ifaddr{}和in6_ifaddr{}结构 50
 2.10.2 in6_ifreq{}和in6_aliasreq{}结构 52
 2.10.3 多播地址结构 53
 2.11 IPv6前缀结构 56
 2.12 地址操纵程序概述 57
 2.13 IPv6的接口初始化 60
 2.13.1 in6_if_up()函数 60
 2.13.2 in6_ifattach()函数 61
 2.13.3 in6_ifattach_loopback{}函数 64
 2.13.4 in6_ifattach_linklocal()函数 65
 2.13.5 get_ifid()函数 69
 2.13.6 get_hw_ifid()函数 71
 2.13.7 get_rand_ifid()函数 75
 2.13.8 in6if_do_dad()函数 76
 2.14 IPv6接口地址配置 77
 2.14.1 in6_control()函数 77
 2.14.2 in6_update_ifa()函数 83
 2.14.3 in6_joingroup()和in6_leavegroup()函数 95
 2.14.4 in6_addmulti()和in6_delmulti()函数 96
 2.14.5 in6_ifinit()函数 98
 2.14.6 in6_ifaddloop()和in6_ ifloop_request()函数 100
 2.15 删除IPv6地址 102
 2.15.1 in6_purgeaddr()函数 103
 2.15.2 in6_ifremloop()函数 104
 2.15.3 in6_unlink_ifa()函数 105
 2.16 用地址配置工具进行的操作 106
第3章 IPv6 110
 3.1 引言 110
 3.2 IPv6首部格式 110
 3.3 IPv6扩展首部 112
 3.3.1 扩展首部的顺序 113
 3.3.2 逐跳选项首部 113
 3.3.3 目的选项首部 114
 3.3.4 路由首部 114
 3.3.5 片首部 116
 3.3.6 IPv6选项 118
 3.4 源地址选择 120
 3.4.1 默认地址选择 120
 3.4.2 源地址选择 121
 3.4.3 目的地址选择 123
 3.5 代码介绍 124
 3.5.1 统计数据 125
 3.5.2 首部结构 126
 3.5.3 ip6protosw{}结构 130
 3.6 mbuf中的IPv6分组地址信息 132
 3.6.1 ip6_setdstifaddr()函数 134
 3.6.2 ip6_getdstifaddr()函数 134
 3.6.3 ip6_setpktaddrs()函数 134
 3.6.4 ip6_getpktaddrs()函数 136
 3.7 输入处理:ip6_input()函数 136
 3.8 逐跳选项首部的处理:ip6_hopopts_input()函数 150
 3.8.1 对每个选项进行处理:ip6_ process_hopopts()函数 151
 3.8.2 处理未知选项:ip6_unknown_opt()函数 155
 3.9 对目的选项首部的处理:dest6_input()函数 156
 3.10 已分片分组的重装 157
 3.10.1 用于分组重装的结构 157
 3.10.2 frag6_input()函数 160
 3.11 对路由首部的处理:route6_input()函数 172
 3.12 转发:ip6_forward()函数 177
 3.13 输出处理 186
 3.13.1 源地址选择:in6_selectsrc()函数 187
 3.13.2 路由选择:ip6_selectroute()函数 199
 3.13.3 ip6_output()函数 206
 3.13.4 构建扩展首部:ip6_copyexthdr()函数 237
 3.13.5 分割首部:ip6_splithdr()函数 237
 3.13.6 插入特大净荷选项:ip6_insert_jumboopt()函数 238
 3.13.7 分片:ip6_insertfraghdr()函数 241
 3.13.8 路径MTU判断:ip6_getpmtu()函数 242
 3.13.9 多播环回:ip6_mloopback()函数 245
第4章 ICMPv6 247
 4.1 引言 247
 4.2 ICMPv6报文 247
 4.2.1 目的不可达报文 248
 4.2.2 分组太长报文 249
 4.2.3 超时报文 250
 4.2.4 参数问题报文 251
 4.2.5 回送请求报文 252
 4.2.6 回送应答报文 252
 4.2.7 ICMPv6报文处理规则 253
 4.3 PMTU发现机制 253
 4.4 节点信息查询 254
 4.4.1 节点信息报文的格式 255
 4.4.2 NOOP查询 257
 4.4.3 支持的Qtype查询 257
 4.4.4 节点名查询 257
 4.4.5 节点地址查询 258
 4.4.6 IPv4地址查询 259
 4.5 代码介绍 260
 4.5.1 统计数据 260
 4.5.2 ICMPv6首部 262
 4.6 ICMPv6输入处理 263
 4.6.1 icmp6_input()函数 263
 4.6.2 错误通知:icmp6_notify_error()函数 272
 4.7 PMTU发现的实现 280
 4.8 ICMPv6输出处理 283
 4.8.1 发送错误:icmp6_error()函数 284
 4.8.2 错误速率限制:icmp6_ratelimit()函数 290
 4.8.3 icmp6_reflect()函数 291
 4.9 节点信息查询的实现 297
 4.9.1 类型和变量 297
 4.9.2 ping6命令:发送查询 298
 4.9.3 ping6命令:接收应答 303
 4.9.4 ping6命令:打印支持的Qtype 309
 4.9.5 ping6命令:打印节点地址 312
 4.9.6 查询处理:ni6_input()函数 314
 4.9.7 节点名的操作 322
 4.9.8 创建节点地址应答:ni6_store_addrs()函数 330
 4.10 节点信息操作 333
第5章 邻居发现和无状态地址自动配置 335
 5.1 引言 335
 5.2 邻居发现协议概述 336
 5.3 无状态地址自动配置概述 336
 5.4 邻居发现协议报文 337
 5.5 邻居发现协议报文的交换示例 338
 5.6 邻居发现协议分组类型及格式 340
 5.6.1 路由器请求报文 340
 5.6.2 路由器广告报文 341
 5.6.3 邻居请求报文 344
 5.6.4 邻居广告报文 344
 5.6.5 重定向报文 346
 5.7 邻居发现选项类型及格式 347
 5.7.1 链路层地址选项 347
 5.7.2 前缀信息选项 348
 5.7.3 重定向首部选项 349
 5.7.4 MTU选项 349
 5.7.5 路由信息选项 350
 5.8 下一跳判定和地址解析 351
 5.9 邻居不可达检测算法 351
 5.10 无状态地址自动配置 352
 5.10.1 地址的构成和地址状态 353
 5.10.2 重复地址检测算法 354
 5.10.3 处理路由器广告 355
 5.10.4 隐私扩展 356
 5.11 路由器特有的操作 357
 5.11.1 发送未经请求的路由器广告 359
 5.11.2 处理路由器请求 359
 5.11.3 处理路由器广告 360
 5.12 主机特有的操作 360
 5.12.1 发送路由器请求 361
 5.12.2 处理路由器广告 361
 5.12.3 默认路由器选项 362
 5.13 代码介绍 362
 5.13.1 邻居发现报文定义 362
 5.13.2 邻居缓存:llinfo_nd6{}结构 365
 5.13.3 操作变量:nd_ifinfo{}结构 367
 5.13.4 默认路由器:nd_defrouter{}结构 368
 5.13.5 前缀:nd_prefix{}结构 369
 5.13.6 前缀控制:nd_prefixctl{}结构 370
 5.13.7 邻居发现报文选项:nd_opts{}结构 371
 5.13.8 DAD队列条目:dadq{}结构 372
 5.13.9 IPv6地址:in6_ifaddr{}结构 372
 5.13.10 目的地缓存 372
 5.13.11 操作常量 372
 5.14 初始化函数 373
 5.14.1 nd6_init()函数 373
 5.14.2 nd6_ifattach()函数 374
 5.15 邻居缓存管理函数 375
 5.15.1 nd6_rtrequest()函数 375
 5.15.2 nd6_cache_lladdr()函数 385
 5.15.3 nd6_lookup()函数 395
 5.15.4 nd6_free()函数 398
 5.15.5 nd6_timer函数 401
 5.16 邻居发现协议报文处理函数 408
 5.16.1 nd6_ns_output()函数 408
 5.16.2 nd6_ns_input()函数 414
 5.16.3 nd6_na_input()函数 422
 5.16.4 nd6_na_output()函数 432
 5.16.5 nd6_rs_input()函数 437
 5.16.6 nd6_ra_input()函数 440
 5.16.7 icmp6_redirect_input()函数 447
 5.16.8 icmp6_redirect_output()函数 454
 5.17 邻居发现协议报文选项处理函数 461
 5.17.1 nd6_option_init()函数 461
 5.17.2 nd6_option()函数 462
 5.17.3 nd6_options()函数 463
 5.18 默认路由器管理函数 465
 5.18.1 defrouter_addreq()函数 465
 5.18.2 defrouter_delreq()函数 466
 5.18.3 defrouter_addifreq()函数 467
 5.18.4 defrouter_delifreq()函数 469
 5.18.5 defrouter_lookup()函数 470
 5.18.6 defrouter_select()函数 471
 5.18.7 defrtrlist_del()函数 475
 5.18.8 defrtrlist_update()函数 477
 5.19 前缀管理函数 479
 5.19.1 nd6_prelist_add()函数 479
 5.19.2 prelist_remove()函数 481
 5.19.3 prelist_update()函数 482
 5.19.4 find_pfxlist_reachable_router()函数 491
 5.19.5 与在链条件有关的前缀和地址状态 491
 5.19.6 pfxlist_onlink_check()函数 493
 5.19.7 nd6_prefix_onlink()函数 497
 5.19.8 nd6_prefix_offlink()函数 500
 5.20 无状态地址自动配置函数 503
 5.20.1 in6_ifadd()函数 503
 5.20.2 in6_tmpifadd()函数 506
 5.20.3 regen_tmpaddr()函数 509
 5.21 重复地址检测函数 511
 5.21.1 nd6_dad_find()函数 511
 5.21.2 nd6_dad_starttimer()函数 512
 5.21.3 nd6_dad_stoptimer()函数 512
 5.21.4 nd6_dad_start()函数 512
 5.21.5 nd6_dad_stop()函数 515
 5.21.6 nd6_dad_timer()函数 516
 5.21.7 nd6_dad_duplicated()函数 519
 5.21.8 nd6_dad_ns_output()函数 520
 5.21.9 nd6_dad_ns_input()函数 521
 5.21.10 nd6_dad_na_input()函数 522
 5.22 其他函数 523
 5.22.1 nd6_is_addr_neighbor()函数 523
 5.22.2 nd6_output()函数 525
 5.22.3 rt6_flush()函数 531
 5.22.4 nd6_rtmsg()函数 533
第6章 传输层的实现 534
 6.1 简介 534
 6.2 IPv6上的TCP和UDP 534
 6.3 IPv6的伪首部 535
 6.4 IPv4校验和与IPv6校验和的区别 536
 6.5 IPv4映射的IPv6地址的用法 536
 6.6 代码介绍 536
 6.7 对PCB和套接字的一般操作 544
 6.7.1 IPv6 PCB的分配:in_pcballoc()函数 544
 6.7.2 绑定本地地址:in6_pcbbind()函数 546
 6.7.3 固定远程地址:in6_pcbconnect()函数 554
 6.7.4 in6_pcbladdr()函数 556
 6.7.5 搜索PCB条目:in6_ pcblookup_local()函数 558
 6.7.6 搜索IPv4映射的PCB:in_pcblookup_local()函数 561
 6.7.7 搜索PCB条目:in6_pcblookup_hash()函数 563
 6.7.8 搜索IPv4映射的PCB:in_pcblookup_hash()函数 565
 6.7.9 分离一个IPv6 PCB:in6_pcbdetach()函数 567
 6.7.10 控制报文信令:in6_pcbnotify()函数 569
 6.7.11 清空PCB缓存路由:in6_rtchange()函数 573
 6.7.12 获取对等实体地址:in6_setpeeraddr()函数 573
 6.7.13 获取本地地址:in6_setsockaddr()函数 575
 6.8 IPv6上的TCP 576
 6.8.1 ip6protosw{}的IPv6上的TCP实例 576
 6.8.2 TCP输出 577
 6.8.3 初始化首部:tcp_fillheaders()函数 582
 6.8.4 TCP输入:tcp6_input()和tcp_input()函数 582
 6.8.5 TCP控制输入:tcp6_ctlinput()函数 587
 6.8.6 TCP用户请求 590
 6.9 IPv6上的UDP 596
 6.9.1 ip6protosw{}的IPv6上的UDP实例 596
 6.9.2 UDP输出:udp6_output()函数 597
 6.9.3 UDP输入:udp6_input()函数 602
 6.9.4 UDP控制输入:udp6_ctlinput()函数 609
 6.9.5 UDP用户请求的处理 612
 6.10 原始IPv6 618
 6.10.1 原始IPv6统计数据 619
 6.10.2 原始IPv6输出:rip6_output()函数 619
 6.10.3 原始IPv6输入:rip6_input()函数 623
 6.10.4 ICMPv6输入:icmp6_rip6_input()函数 627
 6.10.5 原始IPv6控制输入:rip6_ctlinput()函数 632
 6.10.6 原始IPv6控制输出:rip6_ctloutput()函数 633
 6.10.7 原始IPv6用户请求处理 637
 6.11 对IPv4映射的IPv6地址操作的总结 644
 6.12 用netstat查看IPv6连接 648
 6.13 配置IPv4映射的IPv6地址支持 650
第7章 套接字API扩展 652
 参考文献 797
 索引 801

……
序言 无论是在学术界还是在商业界,KAME的IPv6实现都已经被当作IPv6实现的事实参考。世界上无数研究人员都将他们对IPv6及下一代因特网的研究建立在实现了KAME的系统上。对KAME的接受已经超出了纯学术研究的范畴,而成为了很多商业产品的一个组成部分。
本系列书通过KAME实现对IPv6及相关协议进行了详细的描述。书中采用的方式与W.Richard Stevens和Gary R. Wright编写《TCP/IP详解》所采用的方式类似,《TCP/IP详解》为20世纪90年代的开发人员提供了对TCP/IPv4网络本质的真知灼见。我们希望在本系列书中与读者分享我们在KAME和1Pv6方面的深刻理解和开发经验,帮助读者投入到这个全新的、普遍连通的美妙世界中。
现在关于IPv6的书有很多,在Amazon上搜一下书名中包含IPv6的书就能得到不下几十个结果。

文摘 第1章 绪论
1.1 引言
KAME网络软件已经被网络工程人员当成了一个非常可靠的IPv6(网际协议版本6)的工作参考。正如BSD(Berkeley Software Distribution)操作系统的IPv4(网际协议版本4)源代码为人们理解网际协议如何工作提供了极大的帮助,以及[Ste94]为人们理解BSD的网络实现提供了极大的帮助一样,本书的目标就是通过KAME件实现,从规范到操作对IPv6进行描述。
本章提供了一些概要背景信息,并为后续章节提供了背景知识。本章从IPV6和KAME项目的简要历史开始;然后为那些不太熟悉BsD操作系统的读者介绍了它们的网络层体系结构,KAME就是构建在此之上的;接着,在这些基础知识之上,对整个KAME实现进行了概要介绍;最后,描述了一种被称为mbuf的、BsD特有的数据结构,并通过一些额外的注释说明了KAME扩展对mbuffiff做的修改,在贯穿本书的代码描述中会经常用到这种数据结构。
热点排行