Contents of "IPv6 Core Protocols Implementation"
Foreword<br>Preface<br>1 Introduction<br>1.1 Introduction<br>1.2 A Brief History of IPv6 and KAME<br>1.2.1 Commercial Success of KAME<br>1.3 Overview of the KAME Distribution<br>1.3.1 Source Tree Structure<br>1.3.2 Build Procedure<br>1.4 Overview of BSD Network Implementation<br>1.5 Source Code Narrations<br>1.5.1 Typographical Conventions<br>1.5.2 Sample Source Code Description<br>1.5.3 Preprocessor Variables<br>1.5.4 Networking Device and Architecture Assumptions<br>1.6 Mbufs and IPv6<br>1.6.1 Common Mbuf Manipulation Macros and Functions<br>1.6.2 Mbuf Tagging<br>1.6.3 Mbuf Requirement for IPv6<br>1.6.4 Diagnosing Mbuf Chain<br><br>2 IPv6 Addressing Architecture<br>2.1 Introduction<br>2.2 IPv6 Addresses<br>2.3 Textual Representation of IPv6 Addresses<br>2.4 Address Scopes<br>2.4.1 Scope Zones<br>2.4.2 Zone Indices<br>2.4.3 Textual Representation of Scoped Addresses<br>2.4.4 Deprecation of Unicast Site-local Addresses<br>2.5 IPv6 Address Format<br>2.5.1 Interface Identifier Generation<br>2.5.2 Notes about Address Format<br>2.5.3 Multicast Address Format<br>2.6 Node Address Requirements<br>2.7 IPv6 Address Space Management<br>2.8 Code Introduction<br>2.8.1 IPv6 Address Structures—in6_addr{} and sockaddr_in6{}<br>2.8.2 Macros and Variables<br>2.9 Handling Scope Zones<br>2.9.1 Initialization of Scope Zones<br>2.9.2 Scope Zone IDs<br>2.9.3 Zone IDs in Address Structures<br>2.9.4 Scope-Related Utility Functions<br>2.10 Interface Address Structures<br>2.10.1 ifaddr{} and in6_ifaddr{} Structures<br>2.10.2 in6_ifreq{} and in6_aliasreq{} Structures<br>2.10.3 Multicast Address Structures<br>2.11 IPv6 Prefix Structure<br>2.12 Overview of Address Manipulation Routines<br>2.13 Interface Initialization for IPv6<br>2.13.1 in6_if_up() Function<br>2.13.2 in6_ifattach() Function<br>2.13.3 in6_ifattach_loopback() Function<br>2.13.4 in6_ifattach_linklocal() Function<br>2.13.5 get_ifid() Function<br>2.13.6 get_hw_ifid() Function<br>2.13.7 get_rand_ifid() Function<br>2.13.8 in6if_do_dad() Function<br>2.14 IPv6 Interface Address Configuration<br>2.14.1 in6_control() Function<br>2.14.2 in6_update_ifa() Function<br>2.14.3 in6_joingroup() and in6_leavegroup() Functions<br>2.14.4 in6_addmulti() and in6_delmulti()Functions<br>2.14.5 in6_ifinit() Function<br>2.14.6 in6_ifaddloop() and in6_ifloop_request() Functions<br>2.15 Deleting an IPv6 Address<br>2.15.1 in6_purgeaddr() Function<br>2.15.2 in6_ifremloop() Function<br>2.15.3 in6_unlink_ifa() Function<br>2.16 Operation with Address Configuration Utility<br><br>3 Internet Protocol version 6<br>3.1 Introduction<br>3.2 IPv6 Header Format<br>3.2.1 Comparison to the IPv4 Header<br>3.3 IPv6 Extension Headers<br>3.3.1 Order of Extension Headers<br>3.3.2 Hop-by-Hop Options Header<br>3.3.3 Destination Options Header<br>3.3.4 Routing Header<br>3.3.5 Fragment Header<br>3.3.6 IPv6 Options<br>3.4 Source Address Selection<br>3.4.1 Default Address Selection<br>3.4.2 Source Address Selection<br>3.4.3 Destination Address Selection<br>3.5 Code Introduction<br>3.5.1 Statistics<br>3.5.2 Header Structures<br>3.5.3 ip6protosw{} Structure<br>3.6 IPv6 Packet Address Information in Mbuf<br>3.6.1 ip6_setdstifaddr() Function<br>3.6.2 ip6_getdstifaddr() Function<br>3.6.3 ip6_setpktaddrs() Function<br>3.6.4 ip6_getpktaddrs() Function<br>3.7 Input Processing: ip6_input() Function<br>3.8 Processing Hop-by-Hop Options Header: ip6_hopopts_input() Function<br>3.8.1 Processing Each Option: ip6_process_hopopts()Function<br>3.8.2 Processing Unknown Option: ip6_unknown_opt()Function<br>3.9 Processing Destination Options Header: dest6_input() Function<br>3.10 Reassembling Fragmented Packets<br>3.10.1 Structures for Packet Reassembly<br>3.10.2 frag6_input()F unction 1<br>3.11 Processing Routing Header: route6_input()Function<br>3.12 Forwarding: ip6_forward() Function<br>3.13 Output Processing<br>3.13.1 Source Address Selection—in6_selectsrc() Function<br>3.13.2 Route Selection: ip6_selectroute() Function<br>3.13.3 ip6_output() Function<br>3.13.4 Make Extension Headers: ip6_copyexthdr()Function<br>3.13.5 Split Headers: ip6_splithdr() Function<br>3.13.6 Insert Jumbo Payload Option: ip6_insert_jumboopt() Function<br>3.13.7 Fragmentation: ip6_insertfraghdr() Function<br>3.13.8 Path MTU Determination: ip6_getpmtu()Function<br>3.13.9 Multicast Loopback: ip6_mloopback() Function<br><br>4 Internet Control Message Protocol for IPv6<br>4.1 Introduction<br>4.2 ICMPv6 Message<br>4.2.1 Destination Unreachable Message<br>4.2.2 Packet Too Big Message<br>4.2.3 Time Exceeded Message<br>4.2.4 Parameter Problem Message<br>4.2.5 Echo Request Message<br>4.2.6 Echo Reply Message<br>4.2.7 ICMPv6 Message Processing Rules<br>4.3 Path MTU Discovery Mechanism<br>4.4 Node Information Query<br>4.4.1 Node Information Message Format<br>4.4.2 NOOP Query<br>4.4.3 Supported Qtypes Query<br>4.4.4 Node Name Query<br>4.4.5 Node Addresses Query<br>4.4.6 IPv4 Addresses Query<br>4.5 Code Introduction<br>4.5.1 Statistics<br>4.5.2 ICMPv6 Header<br>4.6 ICMPv6 Input Processing<br>4.6.1 icmp6_input() Function<br>4.6.2 Notifying Errors: icmp6_notify_error()Function<br>4.7 Path MTU Discovery Implementation<br>4.7.1 icmp6_mtudisc_update() Function<br>4.8 ICMPv6 Output Processing<br>4.8.1 Sending Error: icmp6_error() Function<br>4.8.2 Error Rate Limitation: icmp6_ratelimit()Function<br>4.8.3 icmp6_reflect() Function<br>4.9 Node Information Query Implementation<br>4.9.1 Types and Variables<br>4.9.2 ping6 Command: Send Queries<br>4.9.3 ping6 Command: Receive Replies<br>4.9.4 ping6 Command: Print Supported Qtypes<br>4.9.5 ping6 Command: Print Node Addresses<br>4.9.6 Query Processing: ni6_input() Function<br>4.9.7 Node Name Manipulation<br>4.9.8 Create Node Addresses Reply: ni6_store_addrs()Function<br>4.10 NodeInformation Operation<br><br>5 Neighbor Discovery and Stateless Address Autoconfiguration<br>5.1 Introduction<br>5.2 Neighbor Discovery Protocol Overview<br>5.3 Stateless Address Autoconfiguration Overview<br>5.4 ND Protocol Messages<br>5.5 Example Exchanges of ND Protocol Messages<br>5.6 ND Protocol Packet Types and Formats<br>5.6.1 Router Solicitation Message<br>5.6.2 Router Advertisement Message<br>5.6.3 Neighbor Solicitation Message<br>5.6.4 Neighbor Advertisement Message<br>5.6.5 Redirect Message<br>5.7 Neighbor Discovery Option Types and Formats<br>5.7.1 Link-Layer Address Options<br>5.7.2 Prefix Information Option<br>5.7.3 Redirected Header Option<br>5.7.4 MTU Option<br>5.7.5 Route Information Option<br>5.8 Next-Hop Determination and Address Resolution<br>5.9 Neighbor Unreachability Detection Algorithm<br>5.10 Stateless Address Autoconfiguration<br>5.10.1 Address Formation and Address States<br>5.10.2 Duplicate Address Detection Algorithm<br>5.10.3 Processing Router Advertisement<br>5.10.4 Privacy Extensions<br>5.11 Router Specific Operation<br>5.11.1 Sending Unsolicited Router Advertisements<br>5.11.2 Processing Router Solicitations<br>5.11.3 Processing Router Advertisements<br>5.12 Host Specific Operations<br>5.12.1 Sending Router Solicitations<br>5.12.2 Processing Router Advertisements<br>5.12.3 Default Router Selection<br>5.13 Code Introduction<br>5.13.1 ND Message Definitions<br>5.13.2 Neighbor Cache—llinfo_nd6{} Structure<br>5.13.3 Operational Variables—nd_ifinfo{} Structure<br>5.13.4 Default Router—nd_defrouter{} Structure<br>5.13.5 Prefix—nd_prefix{} Structure<br>5.13.6 Prefix Control—nd_prefixctl{} Structure<br>5.13.7 ND Message Options—nd_opts{} Structure<br>5.13.8 DAD Queue Entry—dadq{} Structure<br>5.13.9 IPv6 Address—in6_ifaddr{} Structure<br>5.13.10 Destination Cache<br>5.13.11 Operation Constants<br>5.14 Initialization Functions<br>5.14.1 nd6_init() Function<br>5.14.2 nd6_ifattach() Function<br>5.15 Neighbor Cache Management Functions<br>5.15.1 nd6_rtrequest() Function<br>5.15.2 nd6_cache_lladdr() Function<br>5.15.3 nd6_lookup() Function<br>5.15.4 nd6_free() Function<br>5.15.5 nd6_timer() Function<br>5.16 ND Protocol Messages Processing Functions<br>5.16.1 nd6_ns_output() Function<br>5.16.2 nd6_ns_input() Function<br>5.16.3 nd6_na_input() Function<br>5.16.4 nd6_na_output() Function<br>5.16.5 nd6_rs_input() Function<br>5.16.6 nd6_ra_input() Function<br>5.16.7 icmp6_redirect_input() Function<br>5.16.8 icmp6_redirect_output() Function<br>5.17 ND Protocol Message Options Processing Functions<br>5.17.1 nd6_option_init() Function<br>5.17.2 nd6_option() Function<br>5.17.3 nd6_options() Function<br>5.18 Default Router Management Functions<br>5.18.1 defrouter_addreq() Function<br>5.18.2 defrouter_delreq() Function<br>5.18.3 defrouter_addifreq() Function<br>5.18.4 defrouter_delifreq() Function<br>5.18.5 defrouter_lookup() Function<br>5.18.6 defrouter_select() Function<br>5.18.7 defrtrlist_del() Function<br>5.18.8 defrtrlist_update() Function<br>5.19 Prefix Management Functions<br>5.19.1 nd6_prelist_add() Function<br>5.19.2 prelist_remove() Function<br>5.19.3 prelist_update() Function<br>5.19.4 find_pfxlist_reachable_router() Function<br>5.19.5 Prefix and Address State about On-link Condition<br>5.19.6 pfxlist_onlink_check() Function<br>5.19.7 nd6_prefix_onlink() Function<br>5.19.8 nd6_prefix_offlink() Function<br>5.20 Stateless Address Autoconfiguration Functions<br>5.20.1 in6_ifadd() Function<br>5.20.2 in6_tmpifadd() Function<br>5.20.3 regen_tmpaddr() Function<br>5.21 Duplicate Address Detection Functions<br>5.21.1 nd6_dad_find() Function<br>5.21.2 nd6_dad_starttimer() Function<br>5.21.3 nd6_dad_stoptimer() Function<br>5.21.4 nd6_dad_start() Function<br>5.21.5 nd6_dad_stop() Function<br>5.21.6 nd6_dad_timer() Function<br>5.21.7 nd6_dad_duplicated() Function<br>5.21.8 nd6_dad_ns_output() Function<br>5.21.9 nd6_dad_ns_input() Function<br>5.21.10 nd6_dad_na_input() Function<br>5.22 Miscellaneous Functions<br>5.22.1 nd6_is_addr_neighbor() Function<br>5.22.2 nd6_output() Function<br>5.22.3 rt6_flush() Function<br>5.22.4 nd6_rtmsg() Function<br><br>6 Transport Layer Implications<br>6.1 Introduction<br>6.2 TCP and UDP over IPv6<br>6.3 Pseudo Header for IPv6<br>6.4 Checksum Difference between IPv4 and IPv6<br>6.5 IPv4-mapped IPv6 Address Usage<br>6.6 Code Introduction<br>6.6.1 Protocol Control Blocks for IPv6<br>6.7 General Operations on PCBs and Sockets<br>6.7.1 IPv6 PCB Allocation—in_pcballoc() Function<br>6.7.2 Bind Local Address—in6_pcbbind() Function<br>6.7.3 Fix Remote Address—in6_pcbconnect() Function<br>6.7.4 Function in6_pcbladdr()<br>6.7.5 Search for a PCB Entry—in6_pcblookup_local()Function<br>6.7.6 Search for IPv4-mapped PCB—in_pcblookup_local() Function<br>6.7.7 Search for a PCB Entry 您好!在这里看到您发表了关于IPV6 CORE PROTOCOL IMPLEMENTATION 的帖子,我是一名计算机的学生,想读读这本书,不知您能否给我一份电子版,不胜感激!<A href="mailto:tiejunzh@163.com">tiejunzh@163.com</A>,谢谢! 抱歉,我没有电子书,我看的是图书馆借的
页:
[1]