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

📄 rfc760.txt

📁 RFC 相关的技术文档
💻 TXT
📖 第 1 页 / 共 5 页
字号:
        |00000011| length |        source route        |        +--------+--------+--------+---------//--------+          Type=3        The source route option provides a means for the source of an        internet datagram to supply routing information to be used by        the gateways in forwarding the datagram to the destination.        The option begins with the option type code.  The second octet        is the option length which includes the option type code and the        length octet, as well as length-2 octets of source route data.        A source route is composed of a series of internet addresses.        Each internet address is 32 bits or 4 octets.  The length        defaults to two, which indicates the source route is empty and        the remaining routing is to be based on the destination address        field.        If the address in destination address field has been reached and        this option's length is not two, the next address in the source        route replaces the address in the destination address field, and        is deleted from the source route and this option's length is        reduced by four.  (The Internet Header Length Field must be        changed also.)        Must be copied on fragmentation.      Return Route        +--------+--------+--------+---------//--------+        |00000111| length |        return route        |        +--------+--------+--------+---------//--------+          Type=7        The return route option provides a means to record the route of        an internet datagram.        The option begins with the option type code.  The second octet        is the option length which includes the option type code and the        length octet, as well as length-2 octets of return route data.        A return route is composed of a series of internet addresses.        The length defaults to two, which indicates the return route is        empty.[Page 18]                                                               January 1980                                                                                                                   Internet Protocol                                                           Specification        When an internet module routes a datagram it checks to see if        the return route option is present.  If it is, it inserts its        own internet address as known in the environment into which this        datagram is being forwarded into the return route at the front        of the address string and increments the length by four.        Not copied on fragmentation, goes in first fragment only.      Stream Identifier        +--------+--------+---------+--------+        |00001000|00000010|     Stream ID    |        +--------+--------+---------+--------+          Type=8  Length=4        This option provides a way for the 16-bit SATNET stream        identifier to be carried through networks that do not support        the stream concept.        Must be copied on fragmentation.      General Error Report        +--------+--------+--------+--------+--------+----//----+        |00100001| length |err code|        id       |          |        +--------+--------+--------+--------+--------+----//----+         Type=33        The general error report is used to report an error detected in        processing an internet datagram to the source internet module of        that datagram.  The "err code" indicates the type of error        detected, and the "id" is copied from the identification field        of the datagram in error, additional octets of error information        may be present depending on the err code.        If an internet datagram containing the general error report        option is found to be in error or must be discarded, no error        report is sent.        ERR CODE:          0 - Undetermined Error, used when no information is available          about the type of error or the error does not fit any defined          class.  Following the id should be as much of the datagram          (starting with the internet header) as fits in the option          space.          1 - Datagram Discarded, used when specific information is                                                               [Page 19]                                                            January 1980Internet ProtocolSpecification          available about the reason for discarding the datagram can be          reported.  Following the id should be the original (4-octets)          destination address, and the (1-octet) reason.            Reason   Description            ------   -----------               0     No Reason               1     No One Wants It - No higher level protocol or                     application program at destination wants this                     datagram.               2     Fragmentation Needed & DF - Cannot deliver with out                     fragmenting and has don't fragment bit set.               3     Reassembly Problem - Destination could not                     reassemble due to missing fragments when time to                     live expired.               4     Gateway Congestion - Gateway discarded datagram due                     to congestion.        The error report is placed in a datagram with the following        values in the internet header fields:          Version:  Same as the datagram in error.          IHL:  As computed.          Type of Service:  Zero.          Total Length:  As computed.          Identification:  A new identification is selected.          Flags:  Zero.          Fragment Offset:  Zero.          Time to Live:  Sixty.          Protocol:  Same as the datagram in error.          Header Checksum:  As computed.          Source Address:  Address of the error reporting module.          Destination Address:  Source address of the datagram in error.          Options:  The General Error Report Option.          Padding:  As needed.        Not copied on fragmentation, goes with first fragment.      Internet Timestamp        +--------+--------+--------+--------+--------+--------+        |01000100|00000100|        time in milliseconds       |        +--------+--------+--------+--------+--------+--------+         Type=68  Length=6        The data of the timestamp is a 32 bit time measured in        milliseconds.[Page 20]                                                               January 1980                                                                                                                   Internet Protocol                                                           Specification        Not copied on fragmentation, goes with first fragment      Satellite Timestamp        +--------+--------+--------+--------+--------+--------+        |01000101|00000100|        time in milliseconds       |        +--------+--------+--------+--------+--------+--------+         Type=69  Length=6        The data of the timestamp is a 32 bit time measured in        milliseconds.        Not copied on fragmentation, goes with first fragment  Padding:  variable    The internet header padding is used to ensure that the internet    header ends on a 32 bit boundary.  The padding is zero.3.2.  Discussion  The implementation of a protocol must be robust.  Each implementation  must expect to interoperate with others created by different  individuals.  While the goal of this specification is to be explicit  about the protocol there is the possibility of differing  interpretations.  In general, an implementation should be conservative  in its sending behavior, and liberal in its receiving behavior.  That  is, it should be careful to send well-formed datagrams, but should  accept any datagram that it can interpret (e.g., not object to  technical errors where the meaning is still clear).  The basic internet service is datagram oriented and provides for the  fragmentation of datagrams at gateways, with reassembly taking place  at the destination internet protocol module in the destination host.  Of course, fragmentation and reassembly of datagrams within a network  or by private agreement between the gateways of a network is also  allowed since this is transparent to the internet protocols and the  higher-level protocols.  This transparent type of fragmentation and  reassembly is termed "network-dependent" (or intranet) fragmentation  and is not discussed further here.  Internet addresses distinguish sources and destinations to the host  level and provide a protocol field as well.  It is assumed that each  protocol will provide for whatever multiplexing is necessary within a  host.                                                               [Page 21]                                                            January 1980Internet ProtocolSpecification  Addressing    The 8 bit network number, which is the first octet of the address,    has a value as specified in reference [6].    The 24 bit local address, assigned by the local network, should    allow for a single physical host to act as several distinct internet    hosts.  That is, there should be mapping between internet host    addresses and network/host interfaces that allows several internet    addresses to correspond to one interface.  It should also be allowed    for a host to have several physical interfaces and to treat the    datagrams from several of them as if they were all addressed to a    single host.  Address mappings between internet addresses and    addresses for ARPANET, SATNET, PRNET, and other networks are    described in reference [4].  Fragmentation and Reassembly.    The internet identification field (ID) is used together with the    source and destination address, and the protocol fields, to identify    datagram fragments for reassembly.    The More Fragments flag bit (MF) is set if the datagram is not the    last fragment.  The Fragment Offset field identifies the fragment    location, relative to the beginning of the original unfragmented    datagram.  Fragments are counted in units of 8 octets.  The    fragmentation strategy is designed so than an unfragmented datagram    has all zero fragmentation information (MF = 0, fragment offset =    0).  If an internet datagram is fragmented, its data portion must be    broken on 8 octet boundaries.    This format allows 2**13 = 8192 fragments of 8 octets each for a    total of 65,536 octets.  Note that this is consistent with the the    datagram total length field.    When fragmentation occurs, some options are copied, but others    remain with the first fragment only.    Every internet module must be able to forward a datagram of 68    octets without further fragmentation.  This is because an internet    header may be up to 60 octets, and the minimum fragment is 8 octets.    Every internet destination must be able to receive a datagram of 576    octets either in one piece or in fragments to be reassembled.[Page 22]                                                               January 1980                                                                                                                   Internet Protocol                                                           Specification    The fields which may be affected by fragmentation include:      (1) options field      (2) more fragments flag      (3) fragment offset      (4) internet header length field      (5) total length field      (6) header checksum    If the Don't Fragment flag (DF) bit is set, then internet    fragmentation of this datagram is NOT permitted, although it may be    discarded.  This can be used to prohibit fragmentation in cases    where the receiving host does not have sufficient resources to    reassemble internet fragments.    General notation in the following pseudo programs: "=<" means "less    than or equal", "#" means "not equal", "=" means "equal", "<-" means    "is set to".  Also, "x to y" includes x and excludes y; for example,    "4 to 7" would include 4, 5, and 6 (but not 7).    Fragmentation Procedure      The maximum sized datagram that can be transmitted through the      next network is called the maximum transmission unit (MTU).      If the total length is less than or equal the maximum transmission      unit then submit this datagram to the next step in datagram      processing; otherwise cut the datagram into two fragments, the      first fragment being the maximum size, and the second fragment      being the rest of the datagram.  The first fragment is submitted      to the next step in datagram processing, while the second fragment      is submitted to this procedure in case it still too large.      Notation:        FO    -  Fragment Offset        IHL   -  Internet Header Length        MF    -  More Fragments flag        TL    -  Total Length        OFO   -  Old Fragment Offset        OIHL  -  Old Internet Header Length        OMF   -  Old More Fragments flag        OTL   -  Old Total Length        NFB   -  Number of Fragment Blocks        MTU   -  Maximum Transmission Unit                                                               [Page 23]                                                            January 1980Internet ProtocolSpecification      Procedure:        IF TL =< MTU THEN Submit this datagram to the next step             in datagram processing ELSE        To produce the first fragment:        (1)  Copy the original internet header;        (2)  OIHL <- IHL; OTL <- TL; OFO <- FO; OMF <- MF;        (3)  NFB <- (MTU-IHL*4)/8;        (4)  Attach the first NFB*8 data octets;        (5)  Correct the header:             MF <- 1;  TL <- (IHL*4)+(NFB*8);             Recompute Checksum;        (6)  Submit this fragment to the next step in             datagram processing;        To produce the second fragment:        (7)  Selectively copy the internet header (some options             are not copied, see option definitions);        (8)  Append the remaining data;        (9)  Correct the header:             IHL <- (((OIHL*4)-(length of options not copied))+3)/4;             TL <- OTL - NFB*8 - (OIHL-IHL)*4);             FO <- OFO + NFB;  MF <- OMF;  Recompute Checksum;        (10) Submit this fragment to the fragmentation test; DONE.    Reassembly Procedure      For each datagram the buffer identifier is computed as the      concatenation of the source, destination, protocol, and      identification fields.  If this is a whole datagram (that is both      the fragment offset and the more fragments  fields are zero), then      any reassembly resources associated with this buffer identifier      are released and the datagram is forwarded to the next step in      datagram processing.      If no other fragment with this buffer identifier is on hand then      reassembly resources are allocated.  The reassembly resources      consist of a data buffer, a header buffer, a fragment block bit      table, a total data length field, and a timer.  The data from the      fragment is placed in the data buffer according to its fragment      offset and length, and bits are set in the fragment block bit      table corresponding to the fragment blocks received.      If this is the first fragment (that is the fragment offset is      zero)  this header is placed in the header buffer.  If this is the      last fragment ( that is the more fragments field is zero) the      total data length is computed.  If this fragment completes the      datagram (tested by checking the bits set in the fragment block      table), then the datagram is sent to the next step in datagram[Page 24]                                                               January 1980                                                                                                                   Internet Protocol                                                           Specification      processing; otherwise the timer is set to the maximum of the      current timer value and the value of the time to live field from      this fragment; and the reassembly routine gives up control.

⌨️ 快捷键说明

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