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

📄 rfc1475.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 5 页
字号:
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   A description of each field:3.2.1  Class (C)   This field tells implementations what to do with datagrams containing   options they do not understand.  No implementation is required to   implement (i.e., understand) any given option by the TCP/IP   specification itself.   Classes:       0        use or forward and include this option unmodified       1        use this datagram, but do not forward the datagram       2        discard, or forward and include this option unmodified       3        discard this datagram   A host receiving a datagram addressed to itself will use it if there   are no unknown options of class 2 or 3.  A router receiving a   datagram not addressed to it will forward the datagram if and only if   there are no unknown options of class 1 or 3.  (The astute reader   will note that the bits can also be seen as having individual   interpretations, one allowing use even if unknown, one allowing   forwarding if unknown.)   Note that classes 0 and 2 are imperative:  if the datagram is   forwarded, the unknown option must be included.   Class and type are entirely orthogonal, different implementations   might use different classes for the same option, except where   restricted by the option definition.   Also note that for options that are known (implemented by) the host   or router, the class has no meaning; the option definition totally   determines the behavior.  (Although it should be noted that the   option might explicitly define a class dependent behavior.)Ullmann                                                        [Page 12]RFC 1475                         TP/IX                         June 19933.2.2  Copy on fragmentation (F)   If the F bit is set, this option must be copied into all fragments   when a datagram is fragmented.  If the F bit is reset (zero), the   option must only be copied into the first (zero-offset) fragment.3.2.3  Type   The type field identifies the particular option, types being   registered as well known values in the internet.  A few of the   options with their types are described below.3.2.4  Length   Length of the option data, in bytes.3.2.5  Option data   Variable length specified by the length field, plus 0-3 bytes of   zeros to pad to a 32 bit boundary.  Fields within the option data   that are 64 bits long are normally placed on the assumption that the   option header is off-phase aligned, the usual case when the option is   the only one present, and immediately follows the IP header.3.3  IP options   The following sections describe the options defined to emulate IPv4   features, or necessary in the basic structure of the protocol.3.3.1  Null   The null option, type 0, provides for a space filler in the option   area.  The data may be of any size, including 0 bytes (perhaps the   most useful case.)   It may be used to change alignment of the following options or to   replace an option being deleted, by setting type to 0 and class to 0,   leaving the length and content of the data unmodified.  (Note that   this implies that options must not contain "secret" data, relying on   class 3 to prevent the data from leaving the domain of routers that   understand the option.)   Null is normally class 0, and need not be implemented to serve its   function.Ullmann                                                        [Page 13]RFC 1475                         TP/IX                         June 19933.3.2  Fragment   Fragment (type 1) indicates that the datagram is part of a complete   IP datagram.  It is always class 2.   The data consists of (one of) the 64 bit IP address(es) of the router   doing the fragmentation, a 64 bit datagram ID generated by that   router, and a 32 bit fragment offset.  The IDs should be generated so   as to be very likely unique over a period of time larger than the TCP   MSL (maximum segment lifetime).  (The TCP ISN (initial sequence   number) generator might be used to initialize the ID generator in a   router.)     0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    | C |F|    type                 |   length                      |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                                                               |    +          fragmenting router IP address                        +    |                                                               |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                                                               |    +          datagram ID                                          +    |                                                               |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |          offset                                               |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   If a datagram must be refragmented, the original 128 bit address+ID   is preserved, so that the datagram can be reassembled from any   sufficient set of the resulting fragments.  The 64 bits fields are   positioned so that they are aligned in the usual case of the fragment   option following the IP header.   A router implementing Fragment (doing fragmentation) must recognize   the Don't Fragment option.3.3.3  Last Fragment   Last Fragment (type 2) has the same format as Fragment, but implies   that this datagram is the last fragment needed to reassemble the   original datagram.   Note that an implementation can reasonably add arriving datagrams   with Fragment to a cache, and then attempt a reassembly when a   datagram with Last Fragment arrives (and the the total length is   known); this will work well when datagrams are not reordered in theUllmann                                                        [Page 14]RFC 1475                         TP/IX                         June 1993   network.3.3.4  Don't Fragment   This option (type 3, class 0) indicates that the datagram may not be   fragmented.  If it can not be forwarded without fragmentation, it is   discarded, and the appropriate ICMP message sent.  (Unless, of   course, the datagram is an ICMP message.) There is no data present.3.3.5  Don't Convert   The Don't Convert option prohibits conversion from IPv7 to IPv4   protocol, requiring instead that the datagram be discarded and an   ICMP message sent (conversion failed/don't convert set).  It is type   4, usually class 0, and must be implemented by any router   implementing conversion.  A host is under no such constraint; like   any protocol specification, only the "bits on the wire" can be   specified, the host receiving the datagram may convert it as part of   its procedure.  There is no data present in this option.3.4  Forward route identifier   Each IP datagram carries a 64 bit field, called "forward route   identifier", that is updated (if the information is available) at   each hop.  This field's value is derived from the routing protocol   (e.g., RAP [RFC1476]).  It is used to expedite routing decisions by   preserving knowledge where possible between consecutive routers.  It   can also be used to make datagrams stay within reserved flows and   mobile-host tunnels where required.3.4.1  Procedure description   Consider 3 routers, A, B, and C.  Traffic is passing through them,   between two other hosts (or networks), X and Y, packets are going   XABCY and YCBAX.  Consider only one direction:  routing info flowing   from C to A, to provide a route from A to C.  The same thing will be   happening in the other direction.   An explanation of the notation:     R(r,d,i,h)    A route that means: "from router r, to go toward                   final destination d, replace the forward route                   identifier in the packet with i, and take next                   hop h."     Ri(r,d)       An opaque (outside of router r) identifier, that can                   be used by r to find R(r,d,...).Ullmann                                                        [Page 15]RFC 1475                         TP/IX                         June 1993     Flowi(r,rt)   An opaque (outside of router r) identifier, that                   router r can use to find a flow or tunnel with which                   the datagram is associated, and from that the route                   rt on which the flow or tunnel is built, as well as                   the Flowi() for the subsequent hop.     Ri(Dgram)     The forward route identifier in a datagram.   Router C announces a route R(C,Y,0,Y) to router B.  It includes in it   an identifier Ri(C,Y) internal to C, that will allow C to find the   route rapidly.  (A table index, or an actual memory address.)   Router B creates a route R(B,Y,Ri(C,Y),C) via router C, it announces   it to A, including an identifier Ri(B,Y), internal to B, and used by   A as an opaque object.   Router A creates a route R(A,Y,Ri(B,Y),B) via router B.  It has no   one to announce it to.   Now:  X originates a datagram addressed to Y.  It has no routing   information, and sets Ri(Dgram) to zero.  It forwards the datagram to   router A (X's default gateway).   A finds no valid Ri(Dgram), and looks up the destination (Y) in its   routing tables.  It finds R(A,Y,Ri(B,Y),B), sets Ri(Dgram) <-   Ri(B,Y), and forwards the datagram to B.   Router B looks at Ri(Dgram) which directly identifies the next hop   route R(B,Ri(C,Y),C), sets Ri(Dgram) <- Ri(C,Y) and forwards it to   router C.   Router C looks at Ri(Dgram) which directly locates R(C,0,Y), sets   Ri(Dgram) <- 0 and forwards to Y.   Y recognizes its own address in Dest(Dgram), ignores Ri(Dgram).   Of course, the routers will validate the Ri's received, particularily   if they are memory addresses (e.g., M(a) < Ri < M(b), Ri mod N == 0),   and probably check that the route in fact describes the destination   of the datagram.  If the Ri is invalid, the router must use the   ordinary method of finding a route (i.e., what it would have done if   Ri was 0), and silently ignore the invalid Ri.   When a route has been aggregated at some router, implicitly or   explicitly, it will find that the incoming Ri(Dgram) at most can   identify the aggregation, and it must make a decision; the forwarded   datagram then contains the Ri for the specific route.  (Note this may   happen well upstream of the point at which the routes actuallyUllmann                                                        [Page 16]RFC 1475                         TP/IX                         June 1993   diverge.)   This allows all cooperating routers to make immediate forwarding   decisions, without any searching of tables or caches once the   datagram has entered the routing domain.  If the host participates in   the routing, at least to the extent of acquiring the initial Ri   required from the first router, then only routers that have done   aggregations need make decisions.  (If the routing changes with   datagrams in flight, some router will be required to make a decision   to re-rail each datagram.)3.4.2  Flows   If a "flow" is to be set up, the identifiers are replaced by   Flowi(router,route), where each router's structure for the flow   contains a pointer to the route on which the flow is built.   Datagrams can drop out of the flow at some point, and can be inserted   either by the originating host or by a cooperating router near the   originator.  Since the forward route identifier field is opaque to   the sending router, and implicitly meaningful only to the next hop   router, use for flows (or similar optimizations) need not be   otherwise defined by the protocol.  (One presumes that a router   issuing both Ri's and Flowi's will take care to make sure that it can   distinguish them by some private method.)   If a flow has been set up by a restricted target RAP route   announcement, it is no different from a route in the implementation.   If this announcement originates from the host itself, the Ri in   incoming datagrams can be used to determine whether they followed the   flow, or to optimize delivery of the datagrams to the next layer   protocol.3.4.3  Mobile hosts   First, a definition:  A "mobile host" is a host that can move around,   connecting via different networks at different times, while   maintaining open TCP connections.  It is distinguished from a   "portable host", which is simply a host that can appear in various   places in the net, without continuity.  A portable host can be   implemented by assigning a new address for each location (more or   less automatically), and arranging to update the domain system.   Supporting truly mobile hosts is the more interesting problem.   To implement mobile host support in a general way, either some layer   of the protocol suite must provide network-wide routing, or the   datagrams must be tunnelled from the "home" network of the host to

⌨️ 快捷键说明

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