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

📄 rfc2371.txt

📁 RFC 的详细文档!
💻 TXT
📖 第 1 页 / 共 5 页
字号:
   service. It must be sufficiently qualified to be useful to the
   receiver of the command.

   An <ip address> is an IP address, in the usual form: four decimal
   numbers separated by period characters.

   The <hostport> component defines the scope (locale) of the <path>
   component.

   The <path> component of the transaction manager address contains data
   identifying the specific TIP transaction manager, at the location
   defined by <hostport>.

   The <path> component takes the form:

     "/" [path_segments]

     path_segments = segment *( "/" segment )
     segment = *pchar *( ";" param )
     param = *pchar

     pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+"
     unreserved = ASCII character octets with values in the range



Lyon, et. al.               Standards Track                     [Page 6]

RFC 2371                    TIP Version 3.0                    July 1998


                  (inclusive): 48-57, 65-90, 97-122 | "$" | "-" | "_" |
                  "." | "!" | "~" | "*" | "'" | "(" | ")" | ","
     escaped = "%" hex hex
     hex = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
           "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" |
           "e" | "f"

   The <path> component may consist of a sequence of path segments
   separated by a single slash "/" character. Within a path segment, the
   characters "/", ";", "=", and "?" are reserved. Each path segment may
   include a sequence of parameters, indicated by the semicolon ";"
   character. The parameters are not significant to the parsing of
   relative references.

   [It is intended that the form of the transaction manager address
   follow the proposed scheme for Uniform Resource Identifiers (URI)
   [8].]

   The TIP transaction manager address therefore provides to the
   connection initiator (the primary) the endpoint identifier to be used
   for the TCP connection (<hostport>), and to the connection receiver
   (the secondary) the path to be used to locate the specific TIP
   transaction manager (<path>). This is all the information required
   for the connection between the primary and secondary TIP transaction
   managers to be established.

   After a connection has been established, the primary party issues an
   IDENTIFY command. This command includes as parameters two transaction
   manager addresses: the primary transaction manager address, and the
   secondary transaction manager address.

   The primary transaction manager address identifies the TIP
   transaction manager that initiated the connection. This information
   is required in certain cases after connection failures, when one of
   the parties of the connection must re-establish a new connection to
   the other party in order to complete the two-phase-commit protocol.
   If the primary party needs to re-establish the connection, the job is
   easy: a connection is established in the same way as was the original
   connection. However, if the secondary party needs to re-establish the
   connection, it must be known how to contact the initiator of the
   original connection. This information is supplied to the secondary
   via the primary transaction manager address on the IDENTIFY command.
   If a primary transaction manager address is not supplied, the primary
   party must not perform any action which would require a connection to
   be re-established (e.g. to perform recovery actions).






Lyon, et. al.               Standards Track                     [Page 7]

RFC 2371                    TIP Version 3.0                    July 1998


   The secondary transaction manager address identifies the receiving
   TIP transaction manager. In the case of TIP communication via
   intermediate proxy servers, this URL may be used by the proxy servers
   to correctly identify and connect to the required TIP transaction
   manager.

8. TIP Uniform Resource Locators

   Transactions and transaction managers are resources associated with
   the TIP protocol. Transaction managers and transactions are located
   using the transaction manager address scheme. Once a connection has
   been established, TIP commands may be sent to operate on transactions
   associated with the respective transaction managers.

   Applications which want to pull a transaction from a remote node must
   supply a reference to the remote transaction which allows the local
   transaction manager (i.e. the transaction manager pulling the
   transaction) to connect to the remote transaction manager and
   identify the particular transaction. Applications which want to push
   a transaction to a remote node must supply a reference to the remote
   transaction manager (i.e. the transaction manager to which the
   transaction is to be pushed), which allows the local transaction
   manager to locate the remote transaction manager. The TIP protocol
   defines a URL scheme [4] which allows applications and transaction
   managers to exchange references to transaction managers and
   transactions.

   A TIP URL takes the form:

     tip://<transaction manager address>?<transaction string>

   where <transaction manager address> identifies the TIP transaction
   manager (as defined in Section 7 above); and <transaction string>
   specifies a transaction identifier, which may take one of two forms
   (standard or non-standard):

   i. "urn:" <NID> ":" <NSS>

     A standard transaction identifier, conforming to the proposed
     Internet Standard for Uniform Resource Names (URNs), as specified
     by RFC2141; where <NID> is the Namespace Identifier, and <NSS> is
     the Namespace Specific String. The Namespace ID determines the
     syntactic interpretation of the Namespace Specific String. The
     Namespace Specific String is a sequence of characters representing
     a transaction identifier (as defined by <NID>). The rules for the
     contents of these fields are specified by [6] (valid characters,
     encoding, etc.).




Lyon, et. al.               Standards Track                     [Page 8]

RFC 2371                    TIP Version 3.0                    July 1998


     This format of <transaction string> may be used to express global
     transaction identifiers in terms of standard representations.
     Examples for <NID> might be <iso> or <xopen>. e.g.

       tip://123.123.123.123/?urn:xopen:xid

     Note that Namespace Ids require registration. See [7] for details
     on how to do this.

   ii. <transaction identifier>

     A sequence of printable ASCII characters (octets with values in the
     range 32 through 126 inclusive (excluding ":") representing a
     transaction identifier. In this non-standard case, it is the
     combination of <transaction manager address> and <transaction
     identifier> which ensures global uniqueness. e.g.

       tip://123.123.123.123/?transid1

     To create a non-standard TIP URL from a transaction identifier,
     first replace any reserved characters in the transaction identifier
     with their equivalent escape sequences, then insert the appropriate
     transaction manager address. If the transaction identifier is one
     that you created, insert your own transaction manager address. If
     the transaction identifier is one that you received on a TIP
     connection that you initiated, use the secondary transaction
     manager address that was sent in the IDENTIFY command. If the
     transaction identifier is one that you received on a TIP connection
     that you did not initiate, use the primary transaction manager
     address that was received in the IDENTIFY command.

   TIP URLs must be guaranteed globally unique for all time. This
   uniqueness constraint ensures TIP URLs are never duplicated, thereby
   preventing possible non-deterministic behaviour. How uniqueness is
   achieved is implementation specific. For example, the Universally
   Unique Identifier (UUID, also known as a Globally Unique Identifier,
   or GUID (see [9])) could be used as part of the <transaction string>.
   Note also that some standard transaction identifiers may define their
   own rules for ensuring global uniqueness (e.g. OSI CCR atomic action
   identifiers).

   Except as otherwise described above, the TIP URL scheme follows the
   rules for reserved characters as defined in [4], and uses escape
   sequences as defined in [4] Section 5.

   Note that the TIP protocol itself does not use the TIP URL scheme (it
   does use the transaction manager address scheme). The TIP URL scheme
   is proposed as a standard way to pass transaction identification



Lyon, et. al.               Standards Track                     [Page 9]

RFC 2371                    TIP Version 3.0                    July 1998


   information through other protocols. e.g. between cooperating
   application processes. The TIP URL may then be used to communicate to
   the local transaction manager the information necessary to associate
   the application with a particular TIP transaction. e.g. to PULL the
   transaction from a remote transaction manager. It is anticipated that
   each TIP implementation will provide some set of APIs for this
   purpose ([5] includes examples of such APIs).

9. States of a Connection

   At any instant, only one party on a connection is allowed to send
   commands, while the other party is only allowed to respond to
   commands that he receives. Throughout this document, the party that
   is allowed to send commands is called "primary"; the other party is
   called "secondary". Initially, the party that initiated the
   connection is primary; however, a few commands cause the roles to
   switch. A connection returns to its original polarity whenever the
   Idle state is reached.

   When multiplexing is being used, these rules apply independently to
   each "virtual" connection, regardless of the polarity of the
   underlying connection (which will be in the Multiplexing state).

   Note that commands may be sent "out of band" by the secondary via the
   use of pipelining. This does not affect the polarity of the
   connection (i.e. the roles of primary and secondary do not switch).
   See section 12 for details.

   In the normal case, TIP connections should only be closed by the
   primary, when in Initial state. It is generally undesirable for a
   connection to be closed by the secondary, although this may be
   necessary in certain error cases.

   At any instant, a connection is in one of the following states. From
   the point of view of the secondary party, the state changes when he
   sends a reply; from the point of view of the primary party, the state
   changes when he receives a reply.

   Initial: The initial connection starts out in the Initial state.
     Upon entry into this state, the party that initiated the connection
     becomes primary, and the other party becomes secondary. There is no
     transaction associated with the connection in this state. From this
     state, the primary can send an IDENTIFY or a TLS command.

   Idle: In this state, the primary and the secondary have agreed on a
     protocol version, and the primary supplied an identifier to the
     secondary party to reconnect after a failure. There is no
     transaction associated with the connection in this state.  Upon



Lyon, et. al.               Standards Track                    [Page 10]

RFC 2371                    TIP Version 3.0                    July 1998


     entry to this state, the party that initiated the connection
     becomes primary, and the other party becomes secondary. From this
     state, the primary can send any of the following commands: BEGIN,
     MULTIPLEX, PUSH, PULL, QUERY and RECONNECT.

   Begun: In this state, a connection is associated with an active
     transaction, which can only be completed by a one-phase protocol.
     A BEGUN response to a BEGIN command places a connection into this
     state. Failure of a connection in Begun state implies that the
     transaction will be aborted. From this state, the primary can send
     an ABORT, or COMMIT command.

   Enlisted: In this state, the connection is associated with an active
     transaction, which can be completed by a one-phase or, two-phase
     protocol. A PUSHED response to a PUSH command, or a PULLED response
     to a PULL command, places the connection into this state. Failure
     of the connection in Enlisted state implies that the transaction
     will be aborted. From this state, the primary can send an ABORT,
     COMMIT, or PREPARE command.

   Prepared: In this state, a connection is associated with a
     transaction that has been prepared. A PREPARED response to a
     PREPARE command, or a RECONNECTED response to a RECONNECT command
     places a connection into this state.  Unlike other states, failure
     of a connection in this state does not cause the transaction to
     automatically abort. From this state, the primary can send an
     ABORT, or COMMIT command.

   Multiplexing: In this state, the connection is being used by a
     multiplexing protocol, which provides its own set of connections.
     In this state, no TIP commands are possible on the connection.  (Of
     course, TIP commands are possible on the connections supplied by
     the multiplexing protocol.) The connection can never leave this
     state.

   Tls: In this state, the connection is being used by the TLS
     protocol, which provides its own secured connection. In this state,
     no TIP commands are possible on the connection. (Of course, TIP
     commands are possible on the connection supplied by the TLS
     protocol.) The connection can never leave this state.

   Error: In this state, a protocol error has occurred, and the
     connection is no longer useful. The connection can never leave this
     state.







Lyon, et. al.               Standards Track                    [Page 11]

RFC 2371                    TIP Version 3.0                    July 1998


⌨️ 快捷键说明

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