⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc1883.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 5 页
字号:
Deering & Hinden            Standards Track                    [Page 12]RFC 1883                   IPv6 Specification              December 19954.4  Routing Header   The Routing header is used by an IPv6 source to list one or more   intermediate nodes to be "visited" on the way to a packet's   destination.  This function is very similar to IPv4's Source Route   options.  The Routing header is identified by a Next Header value of   43 in the immediately preceding header, and has the following format:   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Next Header  |  Hdr Ext Len  |  Routing Type | Segments Left |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                                                               |   .                                                               .   .                       type-specific data                      .   .                                                               .   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   Next Header          8-bit selector.  Identifies the type of header                        immediately following the Routing header.                        Uses the same values as the IPv4 Protocol field                        [RFC-1700 et seq.].   Hdr Ext Len          8-bit unsigned integer.  Length of the                        Routing header in 8-octet units, not including                        the first 8 octets.   Routing Type         8-bit identifier of a particular Routing                        header variant.   Segments Left        8-bit unsigned integer.  Number of route                        segments remaining, i.e., number of explicitly                        listed intermediate nodes still to be visited                        before reaching the final destination.   type-specific data   Variable-length field, of format determined by                        the Routing Type, and of length such that the                        complete Routing header is an integer multiple                        of 8 octets long.Deering & Hinden            Standards Track                    [Page 13]RFC 1883                   IPv6 Specification              December 1995   If, while processing a received packet, a node encounters a Routing   header with an unrecognized Routing Type value, the required behavior   of the node depends on the value of the Segments Left field, as   follows:      If Segments Left is zero, the node must ignore the Routing header      and proceed to process the next header in the packet, whose type      is identified by the Next Header field in the Routing header.      If Segments Left is non-zero, the node must discard the packet and      send an ICMP Parameter Problem, Code 0, message to the packet's      Source Address, pointing to the unrecognized Routing Type.Deering & Hinden            Standards Track                    [Page 14]RFC 1883                   IPv6 Specification              December 1995   The Type 0 Routing header has the following format:   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Next Header  |  Hdr Ext Len  | Routing Type=0| Segments Left |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |   Reserved    |             Strict/Loose Bit Map              |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                                                               |   +                                                               +   |                                                               |   +                           Address[1]                          +   |                                                               |   +                                                               +   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                                                               |   +                                                               +   |                                                               |   +                           Address[2]                          +   |                                                               |   +                                                               +   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   .                               .                               .   .                               .                               .   .                               .                               .   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                                                               |   +                                                               +   |                                                               |   +                           Address[n]                          +   |                                                               |   +                                                               +   |                                                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   Next Header          8-bit selector.  Identifies the type of header                        immediately following the Routing header.                        Uses the same values as the IPv4 Protocol field                        [RFC-1700 et seq.].   Hdr Ext Len          8-bit unsigned integer.  Length of the                        Routing header in 8-octet units, not including                        the first 8 octets.  For the Type 0 Routing                        header, Hdr Ext Len is equal to two times the                        number of addresses in the header, and must                        be an even number less than or equal to 46.   Routing Type         0.Deering & Hinden            Standards Track                    [Page 15]RFC 1883                   IPv6 Specification              December 1995   Segments Left        8-bit unsigned integer.  Number of route                        segments remaining, i.e., number of explicitly                        listed intermediate nodes still to be visited                        before reaching the final destination.                        Maximum legal value = 23.   Reserved             8-bit reserved field.  Initialized to zero for                        transmission; ignored on reception.   Strict/Loose Bit Map                        24-bit bit-map, numbered 0 to 23, left-to-right.                        Indicates, for each segment of the route, whether                        or not the next destination address must be a                        neighbor of the preceding address: 1 means strict                        (must be a neighbor), 0 means loose (need not be                        a neighbor).   Address[1..n]        Vector of 128-bit addresses, numbered 1 to n.   Multicast addresses must not appear in a Routing header of Type 0, or   in the IPv6 Destination Address field of a packet carrying a Routing   header of Type 0.   If bit number 0 of the Strict/Loose Bit Map has value 1, the   Destination Address field of the IPv6 header in the original packet   must identify a neighbor of the originating node.  If bit number 0   has value 0, the originator may use any legal, non-multicast address   as the initial Destination Address.   Bits numbered greater than n, where n is the number of addresses in   the Routing header, must be set to 0 by the originator and ignored by   receivers.   A Routing header is not examined or processed until it reaches the   node identified in the Destination Address field of the IPv6 header.   In that node, dispatching on the Next Header field of the immediately   preceding header causes the Routing header module to be invoked,   which, in the case of Routing Type 0, performs the following   algorithm:Deering & Hinden            Standards Track                    [Page 16]RFC 1883                   IPv6 Specification              December 1995   if Segments Left = 0 {      proceed to process the next header in the packet, whose type is      identified by the Next Header field in the Routing header   }   else if Hdr Ext Len is odd or greater than 46 {         send an ICMP Parameter Problem, Code 0, message to the Source         Address, pointing to the Hdr Ext Len field, and discard the         packet   }   else {      compute n, the number of addresses in the Routing header, by      dividing Hdr Ext Len by 2      if Segments Left is greater than n {         send an ICMP Parameter Problem, Code 0, message to the Source         Address, pointing to the Segments Left field, and discard the         packet      }      else {         decrement Segments Left by 1;         compute i, the index of the next address to be visited in         the address vector, by subtracting Segments Left from n         if Address [i] or the IPv6 Destination Address is multicast {            discard the packet         }         else {            swap the IPv6 Destination Address and Address[i]            if bit i of the Strict/Loose Bit map has value 1 and the            new Destination Address is not the address of a neighbor            of this node {               send an ICMP Destination Unreachable -- Not a Neighbor               message to the Source Address and discard the packet            }            else if the IPv6 Hop Limit is less than or equal to 1 {               send an ICMP Time Exceeded -- Hop Limit Exceeded in               Transit message to the Source Address and discard the               packet            }            else {               decrement the Hop Limit by 1               resubmit the packet to the IPv6 module for transmission               to the new destination            }         }      }   }Deering & Hinden            Standards Track                    [Page 17]RFC 1883                   IPv6 Specification              December 1995   As an example of the effects of the above algorithm, consider the   case of a source node S sending a packet to destination node D, using   a Routing header to cause the packet to be routed via intermediate   nodes I1, I2, and I3.  The values of the relevant IPv6 header and   Routing header fields on each segment of the delivery path would be   as follows:   As the packet travels from S to I1:        Source Address = S                  Hdr Ext Len = 6        Destination Address = I1            Segments Left = 3                                            Address[1] = I2        (if bit 0 of the Bit Map is 1,      Address[2] = I3         S and I1 must be neighbors;        Address[3] = D         this is checked by S)   As the packet travels from I1 to I2:        Source Address = S                  Hdr Ext Len = 6        Destination Address = I2            Segments Left = 2                                            Address[1] = I1        (if bit 1 of the Bit Map is 1,      Address[2] = I3         I1 and I2 must be neighbors;       Address[3] = D         this is checked by I1)   As the packet travels from I2 to I3:        Source Address = S                  Hdr Ext Len = 6        Destination Address = I3            Segments Left = 1                                            Address[1] = I1        (if bit 2 of the Bit Map is 1,      Address[2] = I2         I2 and I3 must be neighbors;       Address[3] = D         this is checked by I2)   As the packet travels from I3 to D:        Source Address = S                  Hdr Ext Len = 6        Destination Address = D             Segments Left = 0                                            Address[1] = I1        (if bit 3 of the Bit Map is 1,      Address[2] = I2         I3 and D must be neighbors;        Address[3] = I3         this is checked by I3)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -