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

📄 rfc2371.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 5 页
字号:
Network Working Group                                           J. LyonRequest for Comments: 2371                                    MicrosoftCategory: Standards Track                                      K. Evans                                                               J. Klein                                                       Tandem Computers                                                              July 1998                     Transaction Internet Protocol                              Version 3.0Status of this Memo   This document specifies an Internet standards track protocol for the   Internet community, and requests discussion and suggestions for   improvements.  Please refer to the current edition of the "Internet   Official Protocol Standards" (STD 1) for the standardization state   and status of this protocol.  Distribution of this memo is unlimited.Copyright Notice   Copyright (C) The Internet Society (1998).  All Rights Reserved.Abstract   In many applications where different nodes cooperate on some work,   there is a need to guarantee that the work happens atomically. That   is, each node must reach the same conclusion as to whether the work   is to be completed, even in the face of failures.  This document   proposes a simple, easily-implemented protocol for achieving this   end.Table of Contents 1. Introduction                                                       2 2. Example Usage                                                      3 3. Transactions                                                       4 4. Connections                                                        4 5. Transaction Identifiers                                            5 6. Pushing vs. Pulling Transactions                                   5 7. TIP Transaction Manager Identification & Connection Establishment  6 8. TIP Uniform Resource Locators                                      8 9. States of a Connection                                            10 10. Protocol Versioning                                              12 11. Commands and Responses                                           12 12. Command Pipelining                                               13 13. TIP Commands                                                     13 14. Error Handling                                                   20Lyon, et. al.               Standards Track                     [Page 1]RFC 2371                    TIP Version 3.0                    July 1998 15. Connection Failure and Recovery                                  20 16. Security Considerations                                          22 17. References                                                       25 18. Authors' Addresses                                               26 19. Comments                                                         26 Appendix A. The TIP Multiplexing Protocol Version 2.0.               27 Fully Copyright Statement                                            311. Introduction   The standard method for achieving atomic commitment is the two-phase   commit protocol; see [1] for an introduction to atomic commitment and   two-phase commit protocols.   Numerous two-phase commit protocols have been implemented over the   years.  However, none of them has become widely used in the Internet,   due mainly to their complexity.  Most of that complexity comes from   the fact that the two-phase commit protocol is bundled together with   a specific program-to-program communication protocol, and that   protocol lives on top of a very large infrastructure.   This memo proposes a very simple two-phase commit protocol.  It   achieves its simplicity by specifying only how different nodes agree   on the outcome of a transaction; it allows (even requires) that the   subject matter on which the nodes are agreeing be communicated via   other protocols. By doing so, we avoid all of the issues related to   application communication semantics and data representation (to name   just a few). Independent of the application communication protocol a   transaction manager may use the Transport Layer Security protocol [3]   to authenticate other transaction managers and encrypt messages.   It is envisioned that this protocol will be used mainly for a   transaction manager on one Internet node to communicate with a   transaction manager on another node. While it is possible to use this   protocol for application programs and/or resource managers to speak   to transaction managers, this communication is usually intra-node,   and most transaction managers already have more-than-adequate   interfaces for the task.   While we do not expect this protocol to replace existing ones, we do   expect that it will be relatively easy for many existing   heterogeneous transaction managers to implement this protocol for   communication with each other.   Further supplemental information regarding the TIP protocol can be   found in [5].Lyon, et. al.               Standards Track                     [Page 2]RFC 2371                    TIP Version 3.0                    July 19982. Example Usage   Today the electronic shopping basket is a common metaphor at many   electronic store-fronts. Customers browse through an electronic   catalog, select goods and place them into an electronic shopping   basket. HTTP servers [2] provide various means ranging from URL   encoding to context cookies to keep track of client context (e.g.   the shopping basket of a customer) and resume it on subsequent   customer requests.   Once a customer has finished shopping they may decide to commit their   selection and place the associated orders. Most orders may have no   relationship with each other except being executed as part of the   same shopping transaction; others may be dependent on each other (for   example, if made as part of a special offering).  Irrespective of   these details a customer will expect that all orders have been   successfully placed upon receipt of a positive acknowledgment.   Today's electronic store-fronts must implement their own special   protocols to coordinate such placement of all orders. This   programming is especially complex when orders are placed through   multiple electronic store-fronts. This complexity limits the   potential utility of internet applications, and constrains growth.   The protocol described in this document intends to provide a standard   for Internet servers to achieve agreement on a unit of shared work   (e.g. placement of orders in an electronic shopping basket).  The   server (e.g. a CGI program) placing the orders may want to start a   transaction calling its local transaction manager, and ask other   servers participating in the work to join the transaction.  The   server placing the orders passes a reference to the transaction as   user data on HTTP requests to the other servers.  The other servers   call their transaction managers to start a local transaction and ask   them to join the remote transaction using the protocol defined in   this document. Once all orders have been placed, execution of the   two-phase-commit protocol is delegated to the involved transaction   managers. If the transaction commits, all orders have been   successfully placed and the customer gets a positive acknowledgment.   If the transaction aborts no orders will be placed and the customer   will be informed of the problem.   Transaction support greatly simplifies programming of these   applications as exception handling and failure recovery are delegated   to a special component. End users are also not left having to deal   with the consequences of only partial success.  While this example   shows how the protocol can be used by HTTP servers, applications may   use the protocol when accessing a remote database (e.g. via ODBC), or   invoking remote services using other already existing protocols (e.g.Lyon, et. al.               Standards Track                     [Page 3]RFC 2371                    TIP Version 3.0                    July 1998   RPC). The protocol makes it easy for applications in a heterogeneous   network to participate in the same transaction, even if using   different communication protocols.3. Transactions   "Transaction" is the term given to the programming model whereby   computational work performed has atomic semantics. That is, either   all work completes successfully and changes are made permanent (the   transaction commits), or if any work is unsuccessful, changes are   undone (the transaction aborts). The work comprising a transaction   (unit of work), is defined by the application.4. Connections   The Transaction Internet Protocol (TIP) requires a reliable ordered   stream transport with low connection setup costs. In an Internet (IP)   environment, TIP operates over TCP, optionally using TLS to provide a   secured and authenticated connection, and optionally using a protocol   to multiplex light-weight connections over the same TCP or TLS   connection.   Transaction managers that share transactions establish a TCP (and   optionally a TLS) connection. The protocol uses a different   connection for each simultaneous transaction shared betwween two   transaction managers. After a transaction has ended, the connection   can be reused for a different transaction.   Optionally, instead of associating a TCP or TLS connection with only   a single transaction, two transaction managers may agree on a   protocol to multiplex light-weight connections over the same TCP or   TLS connection, and associate each simultaneous transaction with a   separate light-weight connection. Using light-weight connections   reduces latency and resource consumption associated with executing   simultaneous transactions. Similar techniques as described here are   widely used by existing transaction processing systems.  See Appendix   A for an example of one such protocol.   Note that although the TIP protocol itself is described only in terms   of TCP and TLS, there is nothing to preclude the use of TIP with   other transport protocols. However, it is up to the implementor to   ensure the chosen transport provides equivalent semantics to TCP, and   to map the TIP protocol appropriately.Lyon, et. al.               Standards Track                     [Page 4]RFC 2371                    TIP Version 3.0                    July 1998   In this document the terms "connection" or "TCP connection" can refer   to a TIP TCP connection, a TIP TLS connection, or a TIP multiplexing   connection (over either TCP or TLS). It makes no difference which,   the behavior is the same in each case. Where there are differences in   behavior between the connection types, these are stated explicitly.5. Transaction Identifiers   Unfortunately, there is no single globally-accepted standard for the   format of a transaction identifier; there are various standard and   proprietary formats.  Allowed formats for a TIP transaction   identifier are described below in the section "TIP Uniform Resource   Locators". A transaction manager may map its internal transaction   identifiers into this TIP format in any manner it sees fit.   Furthermore, each party in a superior/subordinate relationship gets   to assign its own identifier to the transaction; these identifiers   are exchanged when the relationship is first established.  Thus, a   transaction manager gets to use its own format of transaction   identifier internally, but it must remember a foreign transaction   identifier for each superior/subordinate relationship in which it is   involved.6. Pushing vs. Pulling Transactions   Suppose that some program on node "A" has created a transaction, and   wants some program on node "B" to do some work as part of the   transaction.  There are two classical ways that he does this,   referred to as the "push" model and the "pull" model.   In the "push" model, the program on A first asks his transaction   manager to export the transaction to node B.  A's transaction manager   sends a message to B's TM asking it to instantiate the transaction as   a subordinate of A, and return its name for the transaction.  The   program on A then sends a message to its counterpart on B on the   order of "Do some work, and make it part of the transaction that your   transaction manager already knows of by the name ...".  Because A's   TM knows that it sent the transaction to B's TM, A's TM knows to   involve B's TM in the two-phase commit process.   In the "pull" model, the program on A merely sends a message to B on   the order of "Do some work, and make it part of the transaction that   my TM knows by the name ...".  The program on B asks its TM to enlist   in the transaction.  At that time, B's TM will "pull" the transaction   over from A.  As a result of this pull, A's TM knows to involve B's   TM in the two-phase commit process.   The protocol described here supports both the "push" and "pull"   models.Lyon, et. al.               Standards Track                     [Page 5]RFC 2371                    TIP Version 3.0                    July 19987. TIP Transaction Manager Identification and Connection Establishment   In order for TIP transaction managers to connect they must be able to   identify and locate each other. The information necessary to do this   is described by the TIP transaction manager address.   [This specification does not prescribe how TIP transaction managers   initially obtain the transaction manager address (which will probably   be via some implementation-specific configuration mechanism).]   TIP transaction manager addresses take the form:     <hostport><path>   The <hostport> component comprises:     <host>[:<port>]   where <host> is either a <dns name> or an <ip address>; and <port> is   a decimal number specifying the port at which the transaction manager   (or proxy) is listening for requests to establish TIP connections. If   the port number is omitted, the standard TIP port number (3372) is   used.   A <dns name> is a standard name, acceptable to the domain name   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.

⌨️ 快捷键说明

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