rfc760.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 2,014 行 · 第 1/5 页

TXT
2,014
字号
            10-secret
            01-confidential
            00-unclassified

        Transmission Control Code:  8 bits

          Provides a means to compartmentalize traffic and define
          controlled communities of interest among subscribers.

        Note that this option does not require processing by the
        internet module but does require that this information be passed
        to higher level protocol modules.  The security and TCC
        information might be used to supply class level and compartment
        information for transmitting datagrams into or through
        AUTODIN II.

        Must be copied on fragmentation.




                                                               [Page 17]


                                                            January 1980
Internet Protocol
Specification



      Source Route

        +--------+--------+--------+---------//--------+
        |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 1980
Internet Protocol
Specification



          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 1980
Internet Protocol
Specification



  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 1980
Internet Protocol
Specification



      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:

⌨️ 快捷键说明

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