RFC1379 日本語訳
1379 Extending TCP for Transactions -- Concepts. R. Braden. November 1992. (Format: TXT=91353 bytes) (Updated by RFC1644) (Status: INFORMATIONAL)
プログラムでの自動翻訳です。
RFC一覧
英語原文
Network Working Group R. Braden Request for Comments: 1379 ISI November 1992
コメントを求めるワーキンググループR.ブレーデン要求をネットワークでつないでください: 1379 ISI1992年11月
Extending TCP for Transactions -- Concepts
トランザクションのためにTCPを広げます--概念
Status of This Memo
このメモの状態
This memo provides information for the Internet community. It does not specify an Internet standard. Distribution of this memo is unlimited.
このメモはインターネットコミュニティのための情報を提供します。 それはインターネット標準を指定しません。 このメモの分配は無制限です。
Abstract
要約
This memo discusses extension of TCP to provide transaction-oriented service, without altering its virtual-circuit operation. This extension would fill the large gap between connection-oriented TCP and datagram-based UDP, allowing TCP to efficiently perform many applications for which UDP is currently used. A separate memo contains a detailed functional specification for this proposed extension.
このメモは、仮想の回路操作を変更しないでトランザクション指向のサービスを提供するためにTCPの拡大について議論します。 この拡大は接続指向のTCPとデータグラムベースのUDPの大穴をいっぱいにしているでしょう、TCPが効率的に、UDPが現在使用される多くのアプリケーションを実行するのを許容して。 別々のメモはこの提案された拡大のための詳細な機能的な仕様を含んでいます。
This work was supported in part by the National Science Foundation under Grant Number NCR-8922231.
この仕事はグラントNumber NCR-8922231の下で国立科学財団によって一部サポートされました。
TABLE OF CONTENTS
目次
1. INTRODUCTION .................................................. 2 2. TRANSACTIONS USING STANDARD TCP ............................... 3 3. BYPASSING THE 3-WAY HANDSHAKE ................................. 6 3.1 Concept of TAO ........................................... 6 3.2 Cache Initialization ..................................... 10 3.3 Accepting <SYN,ACK> Segments ............................. 11 4. SHORTENING TIME-WAIT STATE .................................... 13 5. CHOOSING A MONOTONIC SEQUENCE ................................. 15 5.1 Cached Timestamps ........................................ 16 5.2 Current TCP Sequence Numbers ............................. 18 5.3 64-bit Sequence Numbers .................................. 20 5.4 Connection Counts ........................................ 20 5.5 Conclusions .............................................. 21 6. CONNECTION STATES ............................................. 24 7. CONCLUSIONS AND ACKNOWLEDGMENTS ............................... 32 APPENDIX A: TIME-WAIT STATE AND THE 2-PACKET EXCHANGE ............ 34 REFERENCES ....................................................... 37 Security Considerations .......................................... 38 Author's Address ................................................. 38
1. 序論… 2 2. 標準のTCPを使用するトランザクション… 3 3. 3ウェイ握手を迂回させます… 6 TAOの3.1概念… 6 3.2 初期設定をキャッシュしてください… 10 3.3 <SYN、ACK>セグメントを受け入れます… 11 4. 時間待ち状態を短くします… 13 5. 単調列を選びます… 15 5.1はタイムスタンプをキャッシュしました… 16 5.2 現在のTCP一連番号… 18 5.3の64ビットの一連番号… 20 5.4 接続は数えます… 20 5.5の結論… 21 6. 接続州… 24 7. 結論AND承認… 32 付録A: 時間待ち状態と2パケットの交換… 34の参照箇所… 37 セキュリティ問題… 38作者のアドレス… 38
Braden [Page 1] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[1ページ]RFC1379トランザクションTCP--概念1992年11月
1. INTRODUCTION
1. 序論
The TCP protocol [STD-007] implements a virtual-circuit transport service that provides reliable and ordered data delivery over a full-duplex connection. Under the virtual circuit model, the life of a connection is divided into three distinct phases: (1) opening the connection to create a full-duplex byte stream; (2) transferring data in one or both directions over this stream; and (3) closing the connection. Remote login and file transfer are examples of applications that are well suited to virtual-circuit service.
TCPプロトコル[STD-007]は、仮想の回路が信頼できて注文されたデータ配送を全二重接続の上に提供する輸送サービスであると実装します。 事実上の回路モデルの下では、接続の寿命は3つの異なったフェーズに分割されます: (1) 全二重バイトを作成するために接続を開いて、流れてください。 (2) 1でデータを移すか、これの上の方向の両方が流れます。 (3) そして、接続を終えること。 リモート・ログインとファイル転送は仮想の回路サービスによく合っているアプリケーションに関する例です。
Distributed applications, which are becoming increasingly numerous and sophisticated in the Internet, tend to use a transaction-oriented rather than a virtual circuit style of communication. Currently, a transaction-oriented Internet application must choose to suffer the overhead of opening and closing TCP connections or else build an application-specific transport mechanism on top of the connectionless transport protocol UDP. Greater convenience, uniformity, and efficiency would result from widely-available kernel implementations of a transport protocol supporting a transaction service model [RFC- 955].
分配されたアプリケーション(インターネットでますます多数で洗練されるようになっている)は、仮想であるというよりむしろトランザクション指向の回路スタイルに関するコミュニケーションを使用する傾向があります。 現在、トランザクション指向のインターネットアプリケーションは、TCP接続を開いて、終えるオーバーヘッドを受けるか、またはコネクションレスなトランスポート・プロトコルUDPの上にアプリケーション特有の移送機構を造るのを選ばなければなりません。 大便利、一様性、および効率はトランザクションサービスモデルが[RFC955]であるとサポートするトランスポート・プロトコルの広く利用可能なカーネル実装から生じるでしょう。
The transaction service model has the following features:
トランザクションサービスモデルには、以下の特徴があります:
* The fundamental interaction is a request followed by a response.
* 基本的な相互作用は応答がいうことになった要求です。
* An explicit open or close phase would impose excessive overhead.
* 明白な開いているか近いフェーズは過度のオーバーヘッドを課すでしょう。
* At-most-once semantics is required; that is, a transaction must not be "replayed" by a duplicate request packet.
* 大部分、一度、意味論が必要です。 すなわち、トランザクションは写しリクエスト・パケットによって「再演されてはいけません」。
* In favorable circumstances, a reliable request/response handshake can be performed with exactly one packet in each direction.
* 順境では、ちょうど各方向への1つのパケットで信頼できる要求/応答握手を実行できます。
* The minimum transaction latency for a client is RTT + SPT, where RTT is the round-trip time and SPT is the server processing time.
* クライアントにとって、最小のトランザクション潜在はRTT+SPTです。(そこでは、RTTが往復の時間であり、SPTはサーバ処理時間です)。
We use the term "transaction transport protocol" for a transport- layer protocol that follows this model [RFC-955].
私たちはこのモデル[RFC-955]に続く輸送層のプロトコルに「トランザクショントランスポート・プロトコル」という用語を使用します。
The Internet architecture allows an arbitrary collection of transport protocols to be defined on top of the minimal end-to-end datagram service provided by IP [Clark88]. In practice, however, production systems implement only TCP and UDP at the transport layer. It has proven difficult to leverage a new transport protocol into place, to be widely enough available to be useful for application builders.
インターネットアーキテクチャは、トランスポート・プロトコルの任意の収集が終わりから終わりへのIP[Clark88]によって提供された最小量のデータグラムサービスの上で定義されるのを許容します。 しかしながら、実際には、プロダクションシステムはトランスポート層でTCPとUDPだけを実装します。 新しいトランスポート・プロトコルを場所に利用するのが、アプリケーションビルダーの役に立つように十分広く利用可能になるように難しいと判明しました。
Braden [Page 2] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[2ページ]RFC1379トランザクションTCP--概念1992年11月
This memo explores an alternative approach to providing a transaction transport protocol: extending TCP to implement the transaction service model, while continuing to support the virtual circuit model. Each transaction will then be a single instance of a TCP connection. The proposed transaction extension is effectively implementable within current TCPs and operating systems, and it should also scale to the much faster networks, interfaces, and CPUs of the future.
このメモはトランザクショントランスポート・プロトコルを提供することへの代替的アプローチについて調査します: 事実上の回路モデルをサポートし続けている間、トランザクションサービスモデルを実装するためにTCPを広げています。 そして各トランザクションはTCP接続のただ一つのインスタンスになるでしょう。 事実上、提案されたトランザクション拡大は現在のTCPsとオペレーティングシステムの中で実装可能です、そして、また、それは未来のはるかに速いネットワーク、インタフェース、およびCPUに比例するべきです。
The present memo explains the theory behind the extension, in somewhat exquisite detail. Despite the length and complexity of this memo, the TCP extensions required for transactions are in fact quite limited and simple. Another memo [TTCP-FS] provides a self-contained functional specification of the extensions.
現在のメモで、いくらか絶妙の詳細における拡大の後ろで理論がわかります。 このメモの長さと複雑さにもかかわらず、トランザクションに必要であるTCP拡張子は、事実上、かなり限られていて簡単です。 別のメモ[TTCP-FS]は拡大の自己充足的な機能的な仕様を提供します。
Section 2 of this memo describes the limitations of standard TCP for transaction processing, to motivate the extensions. Sections 3, 4, and 5 explore the fundamental extensions that are required for transactions. Section 6 discusses the changes required in the TCP connection state diagram. Finally, Section 7 presents conclusions and acknowledgments. Familiarity with the standard TCP protocol [STD-007] is assumed.
このメモのセクション2は、拡大を動機づけるためにトランザクション処理のための標準のTCPの限界について説明します。 セクション3、4、および5 トランザクションに必要である基本的な拡大について調査してください。 セクション6はTCP接続州のダイヤグラムで必要である変化について論じます。 最終的に、セクション7は結論と承認を提示します。 標準のTCPプロトコル[STD-007]への親しみは想定されます。
2. TRANSACTIONS USING STANDARD TCP
2. 標準のTCPを使用するトランザクション
Reliable transfer of data depends upon sequence numbers. Before data transfer can begin, both parties must "synchronize" the connection, i.e, agree on common sequence numbers. The synchronization procedure must preserve at-most-once semantics, i.e., be free from replay hazards due to duplicate packets. The TCP developers adopted a synchronization mechanism known as the 3-way handshake.
信頼できるデータ転送は一連番号に依存します。 データ転送が始まることができる前に、双方は接続、i.eが同意する「連動してください」共通配列番号が始まらなければなりません。 同期手順が保存しなければならない、大部分、一度、意味論、すなわち、パケットをコピーするのにおいて当然の再生危険から、自由であってください。 TCP開発者は3ウェイ握手として知られている同期メカニズムを採用しました。
Consider a simple transaction in which client host A sends a single- segment request to server host B, and B returns a single-segment response. Many current TCP implementations use at least ten segments (i.e., packets) for this sequence: three for the 3-way handshake opening the connection, four to send and acknowledge the request and response data, and three for TCP's full-duplex data-conserving close sequence. These ten segments represent a high relative overhead for two data-bearing segments. However, a more important consideration is the transaction latency seen by the client: 2*RTT + SPT, larger than the minimum by one RTT. As CPU and network speeds increase, the relative significance of this extra transaction latency also increases.
クライアントホストAがただ一つのセグメント要求をサーバー・ホストBに送る単純取引を考えてください。そうすれば、Bはただ一つのセグメント応答を返します。 多くの現在のTCP実装がこの系列に、少なくとも10のセグメント(すなわち、パケット)を使用します: 要求と応答データを送って、承諾するために4歳の接続を開く3ウェイ握手のための3、およびTCPの全二重データ保存のための3は系列を閉じます。 これらの10のセグメントが2つのデータを持つセグメントのために高い相対的なオーバーヘッドを表します。 しかしながら、より重要な考慮すべき事柄はクライアントによって見られたトランザクション潜在です: 最小限より1RTTで大きい2*RTT+SPT。 また、CPUとネットワーク速度が上がるのに従って、この付加的なトランザクション潜在の相対的な意味は増加します。
Proposed transaction transport protocols have typically used a "timer-based" approach to connection synchronization [Birrell84]. In this approach, once end-to-end connection state is established in the client and server hosts, a subset of this state is maintained for
提案されたトランザクショントランスポート・プロトコルは接続同期[Birrell84]への「タイマベース」のアプローチを通常使用しました。 このアプローチで終わりから端への接続状態がいったんクライアントとサーバホスト、この状態の部分集合が維持されるaに設置されると
Braden [Page 3] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[3ページ]RFC1379トランザクションTCP--概念1992年11月
some period of time. A new request before the expiration of this timeout period can then reestablish the full state without an explicit handshake. Watson pointed out that the timer-based approach of his Delta-T protocol [Watson81] would encompass both virtual circuits and transactions. However, the TCP group adopted the 3-way handshake (because of uncertainty about the robustness of enforcing the packet lifetime bounds required by Delta-T, within a general Internet environment). More recently, Liskov, Shrira, and Wroclawski [Liskov90] have proposed a different timer-based approach to connection synchronization, requiring loosely-synchronized clocks in the hosts.
いつかの期間。 そして、このタイムアウト時間の満了の前の新しい要求は明白な握手なしで完全な状態を回復させることができます。 ワトソンは、彼のデルタ-Tプロトコル[Watson81]のタイマベースのアプローチが仮想の回路とトランザクションの両方を取り囲むと指摘しました。 しかしながら、TCPグループは3ウェイ握手(一般的なインターネット環境の中でデルタ-Tによって必要とされたパケット生存期間の領域を実施する丈夫さに関する不確実性による)を採用しました。 より最近、Liskov、Shrira、およびWroclawski[Liskov90]は接続同期への異なったタイマベースのアプローチを提案しました、ホストで緩く連動している時計を必要として。
The technique proposed in this memo, suggested by Clark [Clark89], depends upon cacheing of connection state but not upon clocks or timers; it is described in Section 3 below. Garlick, Rom, and Postel also proposed a connection synchronization mechanism using cached state [Garlick77]. Their scheme required each host to maintain connection records containing the highest sequence number on each connection. The technique suggested here retains only per-host state, not per-connection state.
クラーク[Clark89]によって提案されたこのメモで提案されたテクニックは、接続状態をcacheingするのによりますが、時計かタイマでよるというわけではありません。 それは以下のセクション3で説明されます。 また、ガーリック、Rom、およびポステルは、キャッシュされた状態[Garlick77]を使用することで接続同期メカニズムを提案しました。 それらの体系は、各ホストが含む中で各接続で一連番号最も高い接続記録を保守するのを必要としました。 ここに示されたテクニックは1接続あたりの状態ではなく、ホストだけあたりの状態を保有します。
During TCP development, it was suggested that TCP could support transactions with data segments containing both SYN and FIN bits. (These "Kamikaze" segments were not supported as a service; they were used mainly to crash other experimental TCPs!) To illustrate this idea, Figure 1 shows a plausible application of the current TCP rules to create a minimal transaction. (In fact, some minor adjustments in the standard TCP spec would be required to make Figure 1 fully legal [STD-007]).
TCP開発の間、TCPがデータ・セグメントがSYNとFINビットの両方を含んでいるトランザクションをサポートすることができることが提案されました。 (これらの「神風」セグメントはサービスとしてサポートされませんでした; それらは主に他の実験的なTCPs!を墜落させるのに使用されました) この考えを例証するなら、図1は、最小量のトランザクションを作成するために現在のTCP規則のもっともらしい適用を示しています。 (事実上、標準のTCP仕様に基づくいくつかの小さい方の調整が図1を完全に法的な[STD-007]にするのに必要でしょう。)
Figure 1, like many of the examples shown in this memo, uses an abbreviated form to illustrate segment sequences. For clarity and brevity, it omits explicit sequence and acknowledgment numbers, assuming that these will follow the well-known TCP rules. The notation "ACK(x)" implies a cumulative acknowledgment for the control bit or data "x" and everything preceding "x" in the sequence space. The referent of "x" should be clear from the context. Also, host A will always be the client and host B will be the server in these diagrams.
このメモに示された例の多くのように、図1は、セグメント系列を例証するのに簡略化されたフォームを使用します。 明快と簡潔さのために、これらがよく知られるTCP規則に従うと仮定して、それは明白な系列と確認応答番号を省略します。 記法"ACK(x)"は、系列スペースで「x」に先行しながら、コントロールビットかデータ「x」とすべてのための累積している承認を含意します。 「x」の指示物は文脈から明確であるはずです。 また、ホストAはいつもクライアントになるでしょう、そして、ホストBはこれらのダイヤグラムでサーバになるでしょう。
The first three segments in Figure 1 implement the standard TCP three-way handshake. If segment #1 had been an old duplicate, the client side would have sent an RST (Reset) bit in segment #3, terminating the sequence. The request data included on the initial SYN segment cannot be delivered to user B until segment #3 completes the 3-way handshake. Loading control bits onto the segments has reduced the total number of segments to 5, but the client still observes a transaction latency of 2*RTT + SPT. The 3-way handshake
図1の最初の3つのセグメントが、標準のTCPが3方向ハンドシェイクであると実装します。 セグメント#1が古い写しであったなら、クライアント側はセグメント#3でRST(リセット)ビットを送ったでしょうに、系列を終えて。 セグメント#3が3ウェイ握手を終了するまで、初期のSYNセグメントに要求データを含んでいるのをユーザBに提供できません。 セグメントへのローディング管理ビットはセグメントの総数を5まで減少させましたが、クライアントはまだ2*RTT+SPTのトランザクション潜在を観測しています。 3ウェイ握手
Braden [Page 4] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[4ページ]RFC1379トランザクションTCP--概念1992年11月
thus precludes high-performance transaction processing.
その結果、高性能トランザクション処理を排除します。
TCP A (Client) TCP B (Server) _______________ ______________
TCPは(クライアント)TCP B(サーバ)です。_______________ ______________
CLOSED LISTEN
閉じられて、聴いてください。
(Client sends request) 1. SYN-SENT --> <SYN,data1,FIN> --> SYN-RCVD (data1 queued)
(クライアントは要求を送ります) 1。 SYNによって送られた(><SYN、data1、フィン>)>SYN-RCVD(列に並ばせられたdata1)
2. ESTABLISHED <-- <SYN,ACK(SYN)> <-- SYN-RCVD
2. 確立した<--<SYN、ACK(SYN)><--SYN-RCVD
3. FIN-WAIT-1 --> <ACK(SYN),FIN> --> CLOSE-WAIT (data1 to server)
3. フィン待1ち--><ACK(SYN)、フィン>-->の厳密な待ち(サーバへのdata1)
(Server sends reply) 4. TIME-WAIT <-- <ACK(FIN),data2,FIN> <-- LAST-ACK (data2 to client)
(サーバは回答を送ります) 4。 時間待ち<--<ACK(フィン)、data2、フィン><--最後のACK(クライアントへのdata2)
5. TIME-WAIT --> <ACK(FIN)> --> CLOSED
5. 時間待ち--><ACK(フィン)>-->は閉じました。
(timeout) CLOSED
(タイムアウト)は閉じました。
Figure 1: Transaction Sequence: RFC-793 TCP
図1: トランザクション系列: RFC-793 TCP
The TCP close sequence also poses a performance problem for transactions: one or both end(s) of a closed connection must remain in "TIME-WAIT" state until a 4 minute timeout has expired [STD-007]. The same connection (defined by the host and port numbers at both ends) cannot be reopened until this delay has expired. Because of TIME-WAIT state, a client program should choose a new local port number (i.e., a different connection) for each successive transaction. However, the TCP port field of 16 bits (less the "well-known" port space) provides only 64512 available user ports. This limits the total rate of transactions between any pair of hosts to a maximum of 64512/240 = 268 per second. This is much too low a rate for low-delay paths, e.g., high-speed LANs. A high rate of short connections (i.e., transactions) could also lead to excessive consumption of kernel memory by connection control blocks in TIME- WAIT state.
また、TCPの近い系列はトランザクションのために性能問題を引き起こします: 4分間のタイムアウトが[STD-007]を吐き出すまで、1か閉じている接続の終わりの両方が「時間待ち」州に残らなければなりません。 この遅れが期限が切れるまで、同じ接続(両端におけるホストとポートナンバーで、定義される)は再開できません。 タイム誌-WAIT状態のために、クライアントプログラムはそれぞれの連続したトランザクションのための新しい地方のポートナンバー(すなわち、異なった接続)を選ぶはずです。 しかしながら、16ビット(より少ない「よく知られる」ポートスペース)のTCPポート分野は64512の利用可能なユーザポートだけを提供します。 これはどんな組のホストの間のトランザクション対最大64512/240 = 268の1秒あたりの総レートを制限します。 これは低い遅れ経路、例えば、高速LANの低過ぎるレートに多いです。 また、高い率の背の低い接続(すなわち、トランザクション)はタイム誌WAIT状態で接続制御ブロックでカーネルメモリの過剰消費につながることができました。
In summary, to perform efficient transaction processing in TCP, we need to suppress the 3-way handshake and to shorten TIME-WAIT state.
概要では、TCPで効率的なトランザクション処理を実行するために、私たちは、3ウェイ握手を抑圧して、タイム誌-WAIT状態を短くする必要があります。
Braden [Page 5] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[5ページ]RFC1379トランザクションTCP--概念1992年11月
Protocol mechanisms to accomplish these two goals are discussed in Sections 3 and 4, respectively. Both require the choice of a monotonic sequence-like space; Section 5 analyzes the choices and makes a selection for this space. Finally, the TCP connection state machine must be extended as described in Section 6.
セクション3と4でそれぞれこれらの2つの目標を達成するプロトコルメカニズムについて議論します。 両方が単調な系列のようなスペースの選択を必要とします。 セクション5は、選択を分析して、このスペースに選定します。 最終的に、セクション6で説明されるようにTCP接続州のマシンを広げなければなりません。
Transaction processing in TCP raises some other protocol issues, which are discussed in the functional specification memo [TTCP-FS]. These include:
TCPのトランザクション処理はある他のプロトコル問題を提起します。(機能的な仕様メモ[TTCP-FS]で問題について議論します)。 これらは:
(1) augmenting the user interface for transactions,
(1) トランザクションのためにユーザーインタフェースを増大させること。
(2) delaying acknowledgment segments to allow maximum piggy-backing of control bits with data,
(2) データがあるコントロールビットの最大の便乗を許容するために確認応答セグメントを遅らせること。
(3) measuring the retransmission timeout time (RTO) on very short connections, and
そして(3) 非常に背の低い接続の再送タイムアウト時間(RTO)を測定する。
(4) providing an initial server window.
(4) 初期のサーバウィンドウを提供すること。
A recently proposed set of enhancements [RFC-1323] defines a TCP Timestamps option that carries two 32-bit timestamp values. The Timestamps option is used to accurately measure round-trip time (RTT). The same option is also used in a procedure known as "PAWS" (Protect Againsts Wrapped Sequence) to prevent erroneous data delivery due to a combination of old duplicate segments and sequence number reuse at very high bandwidths. The particular approach to transactions chosen in this memo does not require the RFC-1323 enhancements; however, they are important and should be implemented in every TCP, with or without the transaction extensions described here.
最近提案されたセットの増進[RFC-1323]は2つの32ビットのタイムスタンプ値を運ぶTCP Timestampsオプションを定義します。 Timestampsオプションは、正確に、往復の時間(RTT)を測定するのに使用されます。 包装されて、Againstsを保護してください。また、同じオプションが「足」として知られている手順で使用される、(系列) 老人の組み合わせによる誤ったデータ配送を防ぐには、まさしくその高帯域にセグメントと一連番号再利用をコピーしてください。 このメモで選ばれたトランザクションへの特定のアプローチはRFC-1323増進を必要としません。 しかしながら、それらは、重要であり、ここで説明されたトランザクション拡大のあるなしにかかわらずあらゆるTCPで実装されるべきです。
3. BYPASSING THE 3-WAY HANDSHAKE
3. 3ウェイ握手を迂回させます。
To avoid 3-way handshakes for transactions, we introduce a new mechanism for validating initial SYN segments, i.e., for enforcing at-most-once semantics without a 3-way handshake. We refer to this as the TCP Accelerated Open, or TAO, mechanism.
取引のための3ウェイ握手を避けるために、私たちは初期のSYNセグメントを有効にするために新しいメカニズムを紹介します、すなわち、実施のために大部分、一度、3ウェイ握手のない意味論。 私たちはTCP Acceleratedオープン、またはTAO、メカニズムにこれについて言及します。
3.1 Concept of TAO
3.1 TAOの概念
The basis of TAO is this: a TCP uses cached per-host information to immediately validate new SYNs [Clark89]. If this validation fails, e.g., because there is no current cached state or the segment is an old duplicate, the procedure falls back to a normal 3-way handshake to validate the SYN. Thus, bypassing a 3-way handshake is considered to be an optional optimization.
TAOの基礎はこれです: TCPは、すぐに新しいSYNs[Clark89]を有効にするのに1ホストあたりのキャッシュされた情報を使用します。 例えば、どんな現在のキャッシュされた状態もないのでこの合法化が失敗するか、セグメントが古い写しであるなら、手順は、SYNを有効にするために通常の3ウェイ握手へ後ろへ下がります。 したがって、3ウェイ握手を迂回させるのは任意の最適化であると考えられます。
Braden [Page 6] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[6ページ]RFC1379取引TCP--概念1992年11月
The proposed TAO mechanism uses a finite sequence-like space of values that increase monotonically with successive transactions (connections) between a given (client, server) host pair. Call this monotonic space M, and let each initial SYN segment carry an M value SEG.M. If M is not the existing sequence (SEG.SEQ) field, SEG.M may be carried in a TCP option.
提案されたTAOメカニズムは与えられた(クライアント、サーバ)ホスト組の間には、連続した取引(接続)がある状態で単調に増加する値の有限系列のようなスペースを使用します。 Mにこの単調なスペースに電話をしてください、そして、それぞれの初期のSYNセグメントにM値のSEG.M. Ifを運ばせてください。Mが既存の系列(SEG.SEQ)分野でない、SEG.MはTCPオプションで運ばれてもよいです。
When host B receives from host A an initial SYN segment containing a new value SEG.M, host B compares this against cache.M[A], the latest M value that B has cached for host A. This comparison is the "TAO test". Because the M values are monotonically increasing, SEG.M > cache.M[A] implies that the SYN must be new and can be accepted immediately. If not, a normal 3-way handshake is performed to validate the initial SYN segment. Figure 2 illustrates the TAO mechanism; cached M values are shown enclosed in square brackets. The M values generated by host A satisfy x0 < x1, and the M values generated by host B satisfy y0 < y1.
ホストBがホストAから新しい値のSEG.Mを含む初期のSYNセグメントを受けるとき、ホストBはcache.M[A]に対してこれを比較して、ホストA.のためにキャッシュされて、最新のMは、Bがそうしたのを評価します。This比較は「TAOテスト」です。 値が単調に増加させているM、SEG.M>cache.M[A]が、SYNがそうしなければならないのを含意するので、新しく、すぐに、受け入れることができます。 そうでなければ、通常の3ウェイ握手は、初期のSYNセグメントを有効にするために実行されます。 図2はTAOメカニズムを例証します。 角括弧で同封されていた状態で値が示されるMをキャッシュしました。 ホストAで発生している値がx0<x1を満たすM、および値がホストBで発生させたMはy0<y1を満たします。
An appropriate choice for the M value space is discussed in Section 5. M values are drawn from a finite number space, so inequalities must be defined in the usual way for sequence numbers [STD-007]. The M space must not wrap so quickly that an old duplicate SYN will be erroneously accepted. We assume that some maximum segment lifetime (MSL) is enforced by the IP layer.
Mがスペースを評価するので、セクション5で適当な選択について議論します。 有限数スペースから得られるので、Mが、評価する不断のとおり一連番号[STD-007]のために不平等を定義しなければなりません。 スペースが誤って古い写しSYNを受け入れるほどすぐに包装してはいけないM。 私たちは、いつかの最大のセグメント寿命(MSL)がIP層によって励行されると思います。
____T_C_P__A_____ ____T_C_P__B_____
____ T_C_P__A_____ ____ T_C_P__B_____
cache.M[B] cache.M[A] V V
cache.M[B] cache.M[A]V V
[ y0 ] [ x0 ]
[y0][x0]
1. --> <SYN,data1,M=x1> --> ( (x1 > x0) => data1 -> user_B; cache.M[A]= x1)
1. --><SYN、data1、x1M=>-->。((x1>x0)は>data1->ユーザ_Bと等しいです; cache.M[A]=x1)
[ y0 ] [ x1 ] 2. <-- <SYN,ACK(data1),data2,M=y1> <--
[y0][x1]2。 <-- <SYN、ACK(data1)、data2、Mはy1><と等しいです--
(data2 -> user_A, cache.M[B]= y1)
(data2->ユーザ、cache.M[B]=y1)
[ y1 ] [ x1 ] ... (etc.) ...
[y1][x1]… (など) ...
Figure 2. TAO: Three-Way Handshake is Bypassed
図2。 タオ: 3方法のHandshakeはBypassedです。
Braden [Page 7] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[7ページ]RFC1379取引TCP--概念1992年11月
Figure 2 shows the simplest case: each side has cached the latest M value of the other, and the SEG.M value in the client's SYN segment is greater than the value in the cache at the server host. As a result, B can accept the client A's request data1 immediately and pass it to the server application. B's reply data2 is shown piggybacked on the <SYN,ACK> segment. As a result of this 2-way exchange, the cached M values are updated at both sites; the client side becomes relevant only if the client/server roles reverse. Validation of the <SYN,ACK> segment at host A is discussed later.
図2は最も簡単なケースを示しています: それぞれの側がMが評価するもう片方の最新のものをキャッシュして、サーバー・ホストでは、クライアントのSYNセグメントのSEG.M値はキャッシュにおける値より大きいです。 その結果、Bは、すぐに、クライアントAの要求data1を受け入れて、それをサーバ・アプリケーションに通過できます。 ビーズは<SYNで便乗して、回答data2が示されるACK>はセグメントです。 この2ウェイの結果、両方のサイトで交換、キャッシュをアップデートしますMが、評価する。 クライアント/サーバーの役割が逆になる場合にだけ、クライアント側は関連するようになります。 後で<SYNの合法化、ホストAにおけるACK>セグメントについて議論します。
Figure 3 shows the TAO test failing but the consequent 3-way handshake succeeding. B updates its cache with the value x2 >= x1 when the initial SYN is known to be valid.
TAOテストが失敗するのを示しますが、図3は、結果の3ウェイ握手が成功するのを示します。 初期のSYNが有効であることが知られていると、Bは値のx2>=x1でキャッシュをアップデートします。
_T_C_P__A _T_C_P__B
___T_C_Pは_T_C_P__Bです。
cache.M[B] cache.M[A] V V
cache.M[B] cache.M[A]V V
[ y0 ] [ x0 ] 1. --> <SYN,data1,M=x1> --> ( (x1 <= x0) => data1 queued; 3-way handshake)
[y0][x0]1。 --><SYN、data1、x1M=>-->。((x1<=x0)はdata1が列に並ばせた>と等しいです; 3ウェイ握手)
[ y0 ] [ x0 ] 2. <-- <SYN,ACK(SYN),M=y1> <-- (cache.M[B]= y1)
[y0][x0]2。 <-- <SYN、ACK(SYN)、Mはy1><と等しいです--(cache.M[B]=y1)
[ y1 ] [ x0 ] 3. --> <ACK(SYN),M=x2> --> (Handshake OK => data1->user_B, cache.M[A]= x2)
[y1][x0]3。 --><ACK(SYN)、M=x2>-->。(>data1Handshake OK=>ユーザ_B、cache.M[A]=x2)
[ y1 ] [ x2 ] ... (etc.) ...
[y1][x2]… (など) ...
Figure 3. TAO Test Fails but 3-Way Handshake Succeeds.
図3。 TAOテストは失敗しますが、3ウェイ握手は成功します。
There are several possible causes for a TAO test failure on a legitimate new SYN segment (not an old duplicate).
正統の新しいSYNセグメント(古い写しでない)に関するTAOテストの故障のいくつかの考えられる原因があります。
(1) There may be no cached M value for this particular client host.
(1) この特定のクライアントのための値が接待するMはキャッシュされないかもしれません。
(2) The SYN may be the one of a set of nearly-simultaneous SYNs for different connections but from the same host, which
(2) 異なった接続のためのほとんど同時のSYNsの1セットの1つですが、SYNが同じホストからのそうであるかもしれない、どれ
Braden [Page 8] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[8ページ]RFC1379取引TCP--概念1992年11月
arrived out of order.
故障していた状態で、到着しました。
(3) The finite M space may have wrapped around between successive transactions from the same client.
(3) スペースが同じくらいからの連続した取引の間でクライアントを巻きつけたかもしれない有限M。
(4) The M values may advance too slowly for closely-spaced transactions.
(4) 値があまりにゆっくり進むかもしれないMは密接に取引を区切りました。
None of these TAO failures will cause a lockout, because the resulting 3-way handshake will succeed. Note that the first transaction between a given host pair will always require a 3-way handshake; subsequent transactions can take advantage of TAO.
結果として起こる3ウェイ握手が成功するので、これらのTAOの故障のいずれもロックアウトを引き起こさないでしょう。 与えられたホスト組の間の最初の取引がいつも3ウェイ握手を必要とすることに注意してください。 その後の取引はTAOを利用できます。
The per-host cache required by TAO is highly desirable for other reasons, e.g., to retain the measured round trip time and MTU for a given remote host. Furthermore, a host should already have a per-host routing cache [HR-COMM] that should be easily extensible for this purpose.
TAOによって必要とされた1ホストあたりのキャッシュは、他の理由で例えば与えられたリモートホストのための測定周遊旅行時間とMTUを保有するために非常に望ましいです。 その上、ホストには、1ホストあたり1つの容易にこのために広げることができるべきルーティングキャッシュ[HR-COMM]が既にあるべきです。
Figure 4 illustrates a complete TCP transaction sequence using the TAO mechanism. Bypassing the 3-way handshake leads to new connection states; Figure 4 shows three of them, "SYN-SENT*", "CLOSE-WAIT*", and "LAST-ACK*". Explanation of these states is deferred to Section 6.
図4は、TAOメカニズムを使用することで完全なTCP取引系列を例証します。 3ウェイ握手を迂回させるのは新しい接続州に通じます。 それらの3つを示していて、「*をSYN送る」という図4、「厳密な待ち*」、および「最後のACK*。」 これらの州に関する説明はセクション6に延期されます。
TCP A (Client) TCP B (Server) _______________ ______________
TCPは(クライアント)TCP B(サーバ)です。_______________ ______________
CLOSED LISTEN
閉じられて、聴いてください。
1. SYN-SENT* --> <SYN,data1,FIN,M=x1> --> CLOSE-WAIT* (TAO test OK=> data1->user_B)
1. SYNによって送られた*(><SYN、x1data1、フィン、M=>)>厳密な待ち*(TAOテストOK=>data1>ユーザ_B)
<-- <SYN,ACK(FIN),data2,FIN,M=y1> <-- LAST-ACK* 2. TIME-WAIT (data2->user_A)
<--<SYN、ACK(フィン)、data2、フィン、Mはy1><と等しいです--最後のACK*2。 時間待ち(data2->、ユーザ、)
3. TIME-WAIT --> <ACK(FIN),M=x2> --> CLOSED
3. 時間待ち--><ACK(フィン)、Mはx2>と等しいです-->は閉じました。
(timeout) CLOSED
(タイムアウト)は閉じました。
Figure 4: Minimal Transaction Sequence Using TAO
図4: TAOを使用する最小量の取引系列
Braden [Page 9] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[9ページ]RFC1379取引TCP--概念1992年11月
3.2 Cache Initialization
3.2 キャッシュ初期設定
The first connection between hosts A and B will find no cached state at one or both ends, so both M caches must be initialized. This requires that the first transaction carry a specially marked SEG.M value, which we call SEG.M.NEW. Receiving a SEG.M.NEW value in an initial SYN segment, B will cache this value and send its own M back to initialize A's cache. When a host crashes and restarts, all its cached M values cache.M[*] must be invalidated in order to force a re-synchronization of the caches at both ends.
ホストAとBの間の最初の接続が1か両端でキャッシュされた状態に全く当たらないので、Mがキャッシュする両方を初期化しなければなりません。 これは、最初の取引が特に著しいSEG.M値を運ぶのを必要とします。(私たちは値をSEG.M. NEWと呼びます)。 初期のSYNセグメントでSEG.M. NEW値を受けて、Bは、Aのキャッシュを初期化するためにこの値をキャッシュして、それ自身のMを返送するでしょう。 aであるときに、ホストは、クラッシュして、再開して、すべてのキャッシュされたM値がcache.Mです。両端でキャッシュの再同期を強制するために[*]を無効にしなければなりません。
This cache synchronization procedure is illustrated in Figure 5, where client host A has crashed and restarted with its cache entries undefined, as indicated by "??". Since cache.TS[B] is undefined, A sends a SEG.M.NEW value instead of SEG.M in the <SYN> segment of its first transaction request to B. Receiving this SEG.M.NEW, the server host B invalidates cache.TS[A] and performs a 3-way handshake. SEG.M in segment #2 updates A's cache, and when the handshake completes successfully, B updates its cached M value to x2 >= x1.
このキャッシュ同期手順は、クライアントホストAがクラッシュした図5で例証されて、キャッシュエントリーが未定義の状態で再開されます、“??"によって示されるように. cache.TS[B]が未定義であるので、AがB.Receivingへの最初のトランザクション要求の<SYN>セグメントのSEG.Mの代わりにSEG.M. NEW値にこのSEG.M. NEWを送って、サーバー・ホストBは、cache.TS[A]を無効にして、3ウェイ握手を実行します。 SEG.Mはセグメント#2でAのキャッシュ、およびいつをアップデートするか。握手が首尾よく完成する、Bはx2>=x1にキャッシュされたM値をアップデートします。
_T_C_P__A _T_C_P__B
___T_C_Pは_T_C_P__Bです。
cache.M[B] cache.M[A] V V [ ?? ] [ x0 ]
cache.M[B] cache.M[A]V V、[]? [x0]
1. --> <SYN,data1,M.NEW=x1> --> (invalidate cache; queue data1; [ ?? ] 3-way handshake)
1. --><SYN、data1、M.新しい=x1>-->。(キャッシュを無効にしてください; data1を列に並ばせてください;、[]?、3ウェイ握手)
[ ?? ] 2. <-- <SYN,ACK(SYN),M=y1> <-- (cache.M[B]= y1)
[ ?? ] 2. <-- <SYN、ACK(SYN)、Mはy1><と等しいです--(cache.M[B]=y1)
[ y1 ] [ ?? ]
[y1][ ?? ]
3. --> <ACK(SYN),M=x2> --> data1->user_B, cache.M[A]= x2)
3. --><ACK(SYN)、Mはx2>と等しいです-->data1>ユーザ_B、cache.M[A]がx2と等しい、)
[ y1 ] [ x2 ] ... (etc.) ...
[y1][x2]… (など) ...
Figure 5. Client Host Crashed
図5。 クライアントホストはクラッシュしました。
Suppose that the 3-way handshake failed, presumably because
おそらく、3ウェイ握手が失敗したと仮定してください。
Braden [Page 10] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[10ページ]RFC1379取引TCP--概念1992年11月
segment #1 was an old duplicate. Then segment #3 from host A would be an RST segment, with the result that both side's caches would be left undefined.
セグメント#1は古い写しでした。 そして、その結果、RSTセグメント、側のキャッシュが残される両方が未定義であるなら、ホストAからのセグメント#3はそうするでしょうに。
Figure 6 shows the procedure when the server crashes and restarts. Upon receiving a <SYN> segment from a host for which it has no cached M value, B initiates a 3-way handshake to validate the request and sends its own M value to A. Again the result is to update cached M values on both sides.
図6はサーバがいつクラッシュして、再開するかを手順に示します。 それがキャッシュされたM値を全く持っていないホストから<SYN>セグメントを受けると、Bは、両側で要求を有効にするために3ウェイ握手を開始して、A.Againへの結果がアップデートすることになっているそれ自身のM値にキャッシュされたM値を送ります。
_T_C_P__A _T_C_P__B
___T_C_Pは_T_C_P__Bです。
cache.M[B] cache.M[A] V V [ y0 ] [ ?? ]
cache.M[B] cache.M[A]V V[y0][ ?? ]
1. --> <SYN,data1,M=x1> --> (data1 queued; 3-way handshake)
1. --><SYN、data1、x1M=>-->。(data1は列を作りました; 3ウェイ握手)
[ y0 ] [ ?? ] 2. <-- <SYN,ACK(SYN),M=y1> <-- (cache.M[B]= y1)
[y0]、[]? 2. <-- <SYN、ACK(SYN)、Mはy1><と等しいです--(cache.M[B]=y1)
[ y1 ] [ ?? ] 3. --> <ACK(SYN),M=x2> --> (data1->user_B, cache.M[A]= x2)
[y1]、[]? 3. --><ACK(SYN)、M=x2>-->。(data1>ユーザ_B、cache.M[A]=x2)
[ y1 ] [ x2 ] ... (etc.) ...
[y1][x2]… (など) ...
Figure 6. Server Host Crashed
図6。 サーバー・ホストはクラッシュしました。
3.3 Accepting <SYN,ACK> Segments
3.3 <SYN、ACK>セグメントを受け入れること。
Transactions introduce a new hazard of erroneously accepting an old duplicate <SYN,ACK> segment. To be acceptable, a <SYN,ACK> segment must arrive in SYN-SENT state, and its ACK field must acknowledge something that was sent. In current TCPs the effective send window in SYN-SENT state is exactly one octet, and an acceptable <SYN,ACK> must exactly ACK this one octet. The clock-driven selection of Initial Sequence Number (ISN) makes an erroneous acceptance exceedingly unlikely. An old duplicate SYN could be accepted erroneously only if successive connection attempts occurred more often than once every 4 microseconds, or if the segment lifetime exceeded the 4 hour wraparound time for ISN
取引は誤って古い写し<SYN、ACK>セグメントを受け入れる新しい危険を導入します。 許容できます、<SYN、ACK>セグメントがSYN-SENT状態に到着しなければならなくて、ACK分野が何かを承認しなければならないということになるようにそれを送りました。 中では、有効な現在のTCPsは中のSYN-SENTがまさにある八重奏であると述べる窓、および許容できる<SYN、ちょうどACK>必須ACKにこの1つの八重奏を送ります。 Initial Sequence Number(ISN)の時計駆動の選択で、誤った承認はきわめてありそうもなくなります。 連続した接続試みが4マイクロセカンドあたりの一度よりしばしば単に起こったか、またはセグメント寿命がISNのために巻きつけて着るドレス時間4時間を超えているなら、誤って古い写しSYNを受け入れることができるでしょうに。
Braden [Page 11] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[11ページ]RFC1379取引TCP--概念1992年11月
selection.
選択。
However, when TCP is used for transactions, data sent with the initial SYN increases the range of sequence numbers that have been sent. This increases the danger of accepting an old duplicate <SYN,ACK> segment, and the consequences are more serious. In the example in Figure 7, segments 1-3 form a normal transaction sequence, and segment 4 begins a new transaction (incarnation) for the same connection. Segment #5 is a duplicate of segment #2 from the preceding transaction. Although the new transaction has a larger ISN, the previous ACK value 402 falls into the new range [200,700) of sequence numbers that have been sent, so segment #5 could be erroneously accepted and passed to the client as the response to the new request.
しかしながら、TCPが取引に使用されるとき、初期のSYNと共に送られたデータは送られた一連番号の範囲を増加させます。 これは古い写し<SYN、ACK>セグメントを受け入れるという危険を増加させます、そして、結果は、より重大です。 図7の例では、セグメント1-3は正常な取引系列を形成します、そして、セグメント4は同じ接続のために、新しい取引(肉体化)を始めます。 セグメント#5は前の取引からのセグメント#2の写しです。 新しい取引には、より大きいISNがありますが、前のACK値402が送られた新しい範囲[200,700)の一連番号になるので、新しい要求への応答としてセグメント#5を誤って認めて、クライアントに渡すことができました。
_T_C_P__A _T_C_P__B
___T_C_Pは_T_C_P__Bです。
CLOSED LISTEN
閉じられて、聴いてください。
1. --> <seq=100,SYN,data=300,FIN,M=x1> --> (TAO test OK)
1. --><seq=100、SYN、x1 300、フィン、データ=M=>-->。(TAOテストOK)
2. <-- <seq=800,ack=402,SYN,data=350,FIN,M=y1> <--
2. <-- 350、フィン、<seq=800、ack=402、SYN、データ=Mはy1><と等しいです--
3. TIME-WAIT --> <ACK(FIN)> --> CLOSED (short timeout) CLOSED
3. タイム誌-WAIT--><ACK(FIN)>-->CLOSED(短いタイムアウト)CLOSED
(New Request) 4. --> <seq=200,SYN,data=500,FIN,M=x2> --> ...
(新しい要求) 4。 --500、フィン、><seq=200、SYN、データ=Mはx2>と等しいです-->。
(Duplicate of segment #2) 5. <-- <seq=800,ack=402,SYN,data=300,FIN,M=y1> <--... (Acceptable!!)
(セグメント#2の写し) 5。 <-- <seq=800、ack=402、SYN、y1>300、フィン、データ=M=<--… (許容できる!)
Figure 7: Old Duplicate <SYN,ACK> Causing Error
図7: 古い写し<SYN、誤りを引き起こすACK>。
Unfortunately, we cannot simply use TAO on the client side to detect and reject old duplicate <SYN,ACK> segments. A TAO test at the client might fail for a valid <SYN,ACK> segment, due to out- of-order delivery, and this could result in permanent non-delivery of a valid transaction reply.
残念ながら、私たちは、古い写し<SYN、ACK>セグメントを検出して、拒絶するのにクライアント側の上のTAOを絶対に使用できません。 クライアントでのTAOテストは有効な<SYNのために失敗するかもしれません、ACK>セグメント、注文配送の外のため、そして、これは有効な取引回答の永久的な非配送をもたらすかもしれません。
Instead, we include a second M value, an echo of the client's M value from the initial <SYN> segment, in the <SYN,ACK> segment. A
代わりに、私たちは第2M値を入れます、初期の<SYN>セグメントからのクライアントMの価値のエコー、<SYNで、ACK>セグメント。 A
Braden [Page 12] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[12ページ]RFC1379取引TCP--概念1992年11月
specially-marked M value, SEG.M.ECHO, is used for this purpose. The client knows the value it sent in the initial <SYN> and can therefore positively validate the <SYN,ACK> using the echoed value. This is illustrated in Figure 12, which is the same as Figure 4 with the addition of the echoed value on the <SYN,ACK> segment #2.
特に、Mが値、SEG.M. ECHOであるとマークして、このために使用されます。 クライアントは、それが初期の<SYN>で送った値を知って、したがって、明確に、<SYN(反響している値を使用するACK>)を有効にすることができます。 これは図12で例証されます、ACK>セグメント#2。(反響している価値の添加が<SYNにある状態で、図は図4と同じです)。
It should be noted that TCP allows a simultaneous open sequence in which both sides send and receive an initial <SYN> (see Figure 8 of [STD-007]. In this case, the TAO test must be performed on both sides to preserve the symmetry. See [TTCP-FS] for an example.
TCPが両側が初期の<SYN>を送って、受ける同時の開いている系列を許容することに注意されるべきです。[STD-007]の図8を見てください。この場合、対称を保存するために両側にTAOテストを実行しなければなりません。(例に関して[TTCP-FS]を見てください。
4. SHORTENING TIME-WAIT STATE
4. 時間待ち状態を短くします。
Once a transaction has been initiated for a particular connection (pair of ports) between a given host pair, a new transaction for the same connection cannot take place for a time that is at least:
取引が与えられたホスト組の間の特定の接続(ポートの組)のためにいったん開始されると、同じ接続のための新しい取引は少なくとも時間、行われることができません:
RTT + SPT + TIME-WAIT_delay
RTT+SPT+時間待ち_遅れ
Since the client host can cycle among the 64512 available port numbers, an upper bound on the transaction rate between a particular host pair is:
クライアントホストが64512の有効なポートナンバーの中で自転車で行くことができるので、特定のホスト組の間の取引率に関する上限は以下の通りです。
[1] TRmax = 64512 /(RTT + TIME-WAIT_Delay)
[1] TRmax=64512/(RTT+時間待ち_遅れ)
in transactions per second (Tps), where we assumed SPT is negligible. We must reduce TIME-WAIT_Delay to support high-rate TCP transaction processing.
2番目の(Tps)あたりの取引では、私たちがどこでSPTを仮定したかは、取るにたらないです。 私たちは、高い率TCPトランザクション処理を支持するためにタイム誌WAIT_Delayを減少させなければなりません。
TIME-WAIT state performs two functions: (1) supporting the full- duplex reliable close of TCP, and (2) allowing old duplicate segments from an earlier connection incarnation to expire before they can cause an error (see Appendix to [RFC-1185]). The first function impacts the application model of a TCP connection, which we would not want to change. The second is part of the fundamental machinery of TCP reliable delivery; to safely truncate TIME-WAIT state, we must provide another means to exclude duplicate packets from earlier incarnations of the connection.
タイム誌-WAIT州は2つの機能を実行します: (1) 誤りを引き起こす場合がある([RFC-1185]へのAppendixを見てください)前に以前の接続肉体化からの古い写しセグメントが期限が切れる近くでTCP、および(2)で信頼できる完全なデュプレックスを支持します。 最初の機能はTCP接続のアプリケーションモデルに影響を与えます。(接続を変えたいと思わないでしょう)。 2番目はTCP信頼できる配信の基本的な機械の一部です。 タイム誌-WAIT状態に安全に先端を切らせるために、私たちは接続の以前の肉体化に写しパケットを入れないようにする別の手段を提供しなければなりません。
To minimize the delay in TIME-WAIT state while performing both functions, we propose to set the TIME-WAIT delay to:
両方の機能を実行している間、タイム誌-WAIT状態で遅れを最小にするために、私たちは、タイム誌-WAIT遅れに以下のことように設定するよう提案します。
[2] TIME-WAIT_Delay = max( K*RTO, U )
[2] タイム誌WAIT_Delay=は最大限にします。(K*RTO、U)
where U and K are constants and RTO is the dynamically-determined retransmission timeout, the measured RTT plus an allowance for the
RTOがUとKが定数であり、ダイナミックに断固とした再送タイムアウトと、測定RTTと小遣いであるところ
Braden [Page 13] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[13ページ]RFC1379取引TCP--概念1992年11月
RTT variance [Jacobson88]. We choose K large enough so that there is high probability of the close completing successfully if at all possible; K = 8 seems reasonable. This takes care of the first function of TIME-WAIT state.
RTT変化[Jacobson88]。 私たちが十分大きいKを選ぶので、できれば、近い完成の高い確率が首尾よくあります。 K=8は妥当に思えます。 これはタイム誌-WAIT状態の最初の関数の世話をします。
In a real implementation, there may be a minimum RTO value Tr, corresponding to the precision of RTO calculation. For example, in the popular BSD implementation of TCP, the minimum RTO is Tr = 0.5 second. Assuming K = 8 and U = 0, Eqns [1] and [2] impose an upper limit of TRmax = 16K Tps on the transaction rate of these implementations.
本当の実現には、RTO計算の精度に対応している、最小のRTO値のTrがあるかもしれません。 例えば、TCPのポピュラーなBSD実現では、最小のRTOは0.5Tr=秒です。 K=8とU=が0であると仮定して、Eqns[1]と[2]は16TRmax=KのTpsの上限をこれらの実現の取引率に課します。
It is possible to have many short connections only if RTO is very small, in which case the TIME-WAIT delay [2] reduces to U. To accelerate the close sequence, we need to reduce U below the MSL enforced by the IP layer, without introducing a hazard from old duplicate segments. For this purpose, we introduce another monotonic number sequence; call it X. X values are required to be monotonic between successive connection incarnations; depending upon the choice of the X space (see Section 5), X values may also increase during a connection. A value from the X space is to be carried in every segment, and a segment is rejected if it is received with an X value smaller than the largest X value received. This mechanism does not use a cache; the largest X value is maintained in the TCP connection control block (TCB) for each connection.
RTOが非常に小さい場合にだけ多くの背の低い接続があるのが、可能である、その場合、タイム誌-WAIT遅れ[2]はU.に減少します。Toは近い系列を加速して、私たちは、IP層によって実施されたMSLの下でUを減少させる必要があります、古い写しセグメントから危険を導入しないで。 このために、私たちは別の単調な数順を紹介します。 それをX.と呼んでください。X値が連続した接続肉体化の間で単調になるのに必要です。 Xスペース(セクション5を見る)の選択によって、また、X値は接続の間、増加するかもしれません。 Xスペースからの値があらゆるセグメントで運ぶことであり、X値が最も大きいX対価領収より小さい状態でそれを受け取るなら、セグメントを拒絶します。 このメカニズムはキャッシュを使用しません。 最も大きいX値は各接続のためにTCP接続制御ブロック(TCB)で維持されます。
The value of U depends upon the choice for the X space, discussed in the next section. If X is time-like, U can be set to twice the time granularity (i.e, twice the minimum "tick" time) of X. The TIME-WAIT delay will then ensure that current X values do not overlap the X values of earlier incarnations of the same connection. Another consequence of time-like X values is the possibility that an open but idle connection might allow the X value to wrap its sign bit, resulting in a lockup of the connection. To prevent this, a 24-day idle timer on each open connection could bypass the X check on the first segment following the idle period, for example. In practice, many implementations have keep-alive mechanisms that prevent such long idle periods [RFC-1323].
Uの値は次のセクションで議論したXスペースのために選択に依存します。 Xが時間のようであるなら、次に、X. タイム誌-WAIT遅れの粒状(i.e、最小の「カチカチする音」時間の2倍)が、現在のX値が同じ接続の以前の肉体化のX値を重ね合わせないのを確実にするとき、二度Uを設定できます。 時間のようなX値の別の結果は開いていますが、無駄な接続がX値に符号ビットを包装させるかもしれない可能性です、接続の留置所をもたらして。 これを防ぐために、例えば、活動していない期間に続いて、それぞれのオープンな接続での24日の使用されていないタイマは最初のセグメントのXチェックを迂回させるかもしれません。 実際には、実現にはある多くがそのような長い活動していない期間[RFC-1323]を防ぐメカニズムを生かします。
Referring back to Figure 4, our proposed transaction extension results in a minimum exchange of 3 packets. Segment #3, the final ACK segment, does not increase transaction latency, but in combination with the TIME-WAIT delay of K*RTO it ensures that the server side of the connection will be closed before a new transaction is issued for this same pair of ports. It also provides an RTT measurement for the server.
私たちの提案された取引拡大は3つのパケットの最小の交換をもたらして、図4を差し戻します。 セグメント#3(最終的なACKセグメント)は取引潜在を高めませんが、K*RTOのタイム誌-WAIT遅れと組み合わせて、それは、新しい取引がポートのこの同じ組のために発行される前に接続のサーバ側面が閉じられるのを確実にします。 また、それはサーバのためのRTT測定を提供します。
We may ask whether it would be possible to further reduce the TIME-
私たちは、タイム誌をさらに減少させるのが可能であるかどうか尋ねるかもしれません。
Braden [Page 14] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[14ページ]RFC1379取引TCP--概念1992年11月
WAIT delay. We might set K to zero; alternatively, we might allow the client TCP to start a new transaction request while the connection was still in TIME-WAIT state, with the new initial SYN acting as an implied acknowledgment of the previous FIN. Appendix A summarizes the issues raised by these alternatives, which we call "truncating" TIME-WAIT state, and suggests some possible solutions. Further study would be required, but these solutions appear to bend the theory and/or implementations of the TCP protocol farther than we wish to bend them.
WAITは延着します。 私たちはゼロにKを設定するかもしれません。 あるいはまた、接続がまだタイム誌-WAIT状態にあった間、私たちはクライアントTCPに新しいトランザクション要求を始めさせるかもしれません、新しい初期のSYNが前のFINの暗示している承認として機能して。 付録Aは、私たちがタイム誌-WAIT状態が「先端を切る」であると呼ぶこれらの代替手段で提起された問題をまとめて、いくつかの可能な解決策を示します。 これらの解決策は理論を曲げるように見えます、そして、さらなる研究が必要でしょうが、私たちより遠いTCPプロトコルの実現はそれらを曲げたがっています。
We therefore propose using formula [2] with K=8 and retaining the final ACK(FIN) transmission. To raise the transaction rate, therefore, we require small values of RTO and U.
したがって、私たちは、K=8がある公式[2]を使用して、最終的なACK(FIN)トランスミッションを保有するよう提案します。 したがって、取引率を上げるために、私たちはRTOとUの小さい値を必要とします。
5. CHOOSING A MONOTONIC SEQUENCE
5. 単調列を選びます。
For simplicity, we want the monotonic sequence X used for shortening TIME-WAIT state to be identical to the monotonic sequence M for bypassing the 3-way handshake. Calling the common space M, we will send an M value SEG.M in each TCP segment. Upon receipt of an initial SYN segment, SEG.M will be compared with a per-host cached value to authenticate the SYN without a 3-way handshake; this is the TAO mechanism. Upon receipt of a non-SYN segment, SEG.M will be compared with the current value in the connection control block and used to discard old duplicates.
簡単さのために、私たちは、3ウェイ握手を迂回させるのに単調列Mと同じになるようにタイム誌-WAIT状態を短くするのに単調列Xを使用して欲しいと思います。 共用面積をMと呼んで、私たちはそれぞれのTCPセグメントでM値のSEG.Mを送るつもりです。 初期のSYNセグメントを受け取り次第、SEG.Mは3ウェイ握手なしでSYNを認証するために1ホストあたり1つのキャッシュされた値と比較されるでしょう。 これはTAOメカニズムです。 非SYNセグメントを受け取り次第、SEG.Mは、接続制御ブロックの現行価値と比較されて、古い写しを捨てるのに使用されるでしょう。
Note that the situation with TIME-WAIT state differs from that of bypassing 3-way handshakes in two ways: (a) TIME-WAIT requires duplicate detection on every segment vs. only on SYN segments, and (b) TIME-WAIT applies to a single connection vs. being global across all connections. This section discusses possible choices for the common monotonic sequence.
タイム誌-WAIT状態がある状況が3ウェイ握手を2つの方法で迂回させるものと異なっていることに注意してください: (a) タイム誌-WAITはSYNセグメントだけであらゆるセグメントにおける写し検出を必要として、(b)タイム誌-WAITは単独結合対すべての接続の向こう側にグローバルに適用します。 このセクションは一般的な単調列のための可能な選択について論じます。
The SEG.M values must satisfy the following requirements.
SEG.M値は以下の要件を満たさなければなりません。
* The values must be monotonic; this requirement is defined more precisely below.
* 値は単調であるに違いありません。 この要件は、より正確に以下で定義されます。
* Their granularity must be fine-grained enough to support a high rate of transaction processing; the M clock must "tick" at least once between successive transactions.
* それらの粒状はきめ細かに高い率のトランザクション処理を支持できるくらい粒状でなければなりません。 時計が連続した取引の間に少なくとも一度「カチカチと音を立てなければならない」M。
* Their range (wrap-around time) must be great enough to allow a realistic MSL to be enforced by the network.
* それらの範囲(巻きつけて着るドレス時間)は現実的なMSLがネットワークによって実施されるのを許容するほど大きくなければなりません。
The TCP spec calls for an MSL of 120 secs. Since much of the Internet does not carefully enforce this limit, it would be safer to have an MSL at least an order of magnitude larger. We set as an
TCP仕様は120secsのMSLを求めます。 インターネットの大部分が慎重にこの限界を実施しないので、MSLを少なくとも1桁より大きくするのは、より安全でしょう。 私たちはセットしました。
Braden [Page 15] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[15ページ]RFC1379取引TCP--概念1992年11月
objective an MSL of at least 2000 seconds. If there were no TIME- WAIT delay, the ultimate limit on transaction rate would be set by speed-of-light delays in the network and by the latency of host operating systems. As the bottleneck problems with interfacing CPUs to gigabit LANs are solved, we can imagine transaction durations as short as 1 microsecond. Therefore, we set an ultimate performance goal of TRmax at least 10**6 Tps.
少なくとも2000年のMSLが後援する目的。 タイム誌WAIT遅れが全くなければ、取引率における究極の限界はネットワークの光速遅れとホスト・オペレーティング・システムの潜在によって設定されるでしょうに。ギガビットLANにCPUを連結する隘路の問題が解決されているとき、私たちは1マイクロセカンドと同じくらい急に取引持続時間を想像できます。 したがって、私たちはTRmax少なくとも10**6Tpsの究極の性能目標を設定します。
A particular connection between hosts A and B is identified by the local and remote TCP "sockets", i.e., by the quadruplet: {A, B, Port.A, Port.B}. Imagine that each host keeps a count CC of the number of TCP connections it has initiated. We can use this CC number to distinguish different incarnations of the same connection. Then a particular SEG.M value may be labeled implicitly by 6 quantities: {A, B, Port.A, Port.B, CC, n}, where n is the byte offset of that segment within the connection incarnation.
ホストAとBの間の特定の接続は地方の、そして、リモートなTCP「ソケット」によって特定されます、すなわち、四つ子で: A、B、Port.A、Port.B。 各ホストが、カウントがそれが開始したTCP接続の数のCCであることを保つと想像してください。 私たちは、同じ接続の異なった肉体化を区別するのにこのCC番号を使用できます。 次に、特定のSEG.M値は6つの量によってそれとなくラベルされるかもしれません: A、B、Port.A、Port.B、CC、n。(そこでは、nは接続肉体化の中のそのセグメントのバイトオフセットです)。
To bypass the 3-way handshake, we require thgt SEG.M values on successive SYN segments from a host A to a host B be monotone increasing. If CC' > CC, then we require that:
3ウェイ握手を迂回させるために、私たちはホストAからホストBまで連続したSYNセグメントのthgt SEG.M値を必要とします。単調増加になってください。 'CC'>CCであるなら、私たちが、以下のことが必要です。
SEG.M(A,B,Port.A,Port.B,CC',0) > SEG.M(A,B,Port.A,Port.B,CC,0)
'SEG.M、(A、B、Port.A、Port.BがCCする、'、0)>SEG.M(A、B、Port.A、Port.B、cc、0)
for any legal values of Port.A and Port.B.
Port.AとPort.Bのどんな法定価格のためにも。
To delete old duplicates (allowing TIME-WAIT state to be shortened), we require that SEG.M values be disjoint across different incarnations of the same connection. If CC' > CC then
古い写し(タイム誌-WAIT状態が短くされるのを許容する)を削除するために、私たちは、SEG.M値が同じ接続の異なった肉体化の向こう側にばらばらになることであることを必要とします。 'CC'>であるなら、その時をCCしてください。
SEG.M(A,B,Port.A,Port.B,CC',n') > SEG.M(A,B,Port.A,Port.B,CC,n),
'SEG.M(A、B、Port.A、Port.B、CC、'n')>SEG.M(A、B、Port.A、Port.B、cc、n)
for any non-negative integers n and n'.
'どんな非負の整数nとnも'。
We now consider four different choices for the common monotonic space: RFC-1323 timestamps, TCP sequence numbers, the connection count, and 64-bit TCP sequence numbers. The results are summarized in Table I.
私たちは現在、一般的な単調なスペースと4つの異なった選択を考えます: RFC-1323タイムスタンプ、TCP一連番号、接続カウント、および64ビットのTCP一連番号。 結果はTable Iにまとめられます。
5.1 Cached Timestamps
5.1 キャッシュされたタイムスタンプ
The PAWS mechanism [RFC-1323] uses TCP "timestamps" as monotonically increasing integers in order to throw out old duplicate segments within the same incarnation. Jacobson suggested the cacheing of these timestamps for bypassing 3-way handshakes [Jacobson90], i.e., that TCP timestamps be used for our common monotonic space M. This idea is attractive since it would allow the same timestamp options to be used for RTTM, PAWS, and transactions.
PAWSメカニズム[RFC-1323]は同じ肉体化の中に古い写しセグメントを放り出すために整数を単調に増加させるとしてTCP「タイムスタンプ」を使用します。 ジェーコブソンは3ウェイ握手[Jacobson90]を迂回させるためのこれらのタイムスタンプのcacheingについて提案しました、同じタイムスタンプオプションがRTTM、PAWS、および取引に使用されるのを許容するでしょう、すなわち、したがって、TCPタイムスタンプが私たちの一般的な単調な宇宙M.This考えに使用されるのは、魅力的です。
Braden [Page 16] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[16ページ]RFC1379取引TCP--概念1992年11月
To obtain at-most-once service, the criterion for immediate acceptance of a SYN must be that SEG.M is strictly greater than the cached M value. That is, to be useful for bypassing 3-way handshakes, the timestamp clock must tick at least once between any two successive transactions between the same pair of hosts (even if different ports are used). Hence, the timestamp clock rate would determine TRmax, the maximum possible transaction rate.
得る、大部分、一度、サービス、SYNの即座の承認のための評価基準はSEG.MにキャッシュされたM値より厳密にすばらしいということであるに違いありません。 すなわち、3ウェイ握手を迂回させることの役に立つように、タイムスタンプ時計は同じ組のホストの間のどんな2つの連続した取引の間も少なくとも一度チェックしなければなりません(異なったポートが使用されていても)。 したがって、タイムスタンプクロックレートはTRmax、最大の可能な取引率を測定するでしょう。
Unfortunately, the timestamp clock frequency called for by RFC- 1323, in the range 1 sec to 1 ms, is much too slow for transactions. The TCP timestamp period was chosen to be comparable to the fundamental interval for computing and scheduling retransmission timeouts; this is generally in the range of 1 sec. to 1 ms., and in many operating systems, much closer to 1 second. Although it would be possible to increase the timestamp clock frequency by several orders of magnitude, to do so would make implementation more difficult, and on some systems excessively expensive.
残念ながら、取引には、1msへの1秒の範囲でRFC1323によって求められたタイムスタンプクロック周波数は非常に遅過ぎます。 TCPタイムスタンプの期間は基本間隔に匹敵しているために再送タイムアウトを計算して、計画をするのに選ばれました。 これは一般に、1つの原稿への1秒の範囲、および多くのオペレーティングシステムであります、1秒にはるかに近いです。 タイムスタンプクロック周波数を数桁増加させるのが可能でしょうが、そうするのに、実現は、より難しく、いくつかのシステムの上で過度に高価になるでしょう。
The wraparound time for TCP timestamps, at least 24 days, causes no problem for transactions.
TCPタイムスタンプのための巻きつけて着るドレス時間(少なくとも24日間)は取引のために問題を全く引き起こしません。
The PAWS mechanism uses TCP timestamps to protect against old duplicate non-SYN segments from the same incarnation [RFC-1323]. It can also be used to protect against old duplicate data segments from earlier incarnations (and therefore allow shortening of TIME-WAIT state) if we can ensure that the timestamp clock ticks at least once between the end of one incarnation and the beginning of the next. This can be achieved by setting U = 2 seconds, i.e., to twice the maximum timestamp clock period. This value in formula [2] leads to an upper bound TRmax = 32K Tps between a host pair. However, as pointed out above, old duplicate SYN detection using timestamps leads to a smaller transaction rate bound, 1 Tps, which is unacceptable. In addition, the timestamp approach is imperfect; it allows old ACK segments to enter the new connection where they can cause a disconnect. This happens because old duplicate ACKs that arrive during TIME-WAIT state generate new ACKs with the current timestamp [RFC-1337].
PAWSメカニズムは、同じ肉体化[RFC-1323]から古い写し非SYNセグメントから守るのにTCPタイムスタンプを使用します。 また、私たちが、タイムスタンプ時計が1回の肉体化の終わりと次の始まりの間を少なくとも一度チェックするのを保証できるなら、以前の肉体化(したがって、タイム誌-WAIT状態を短くさせる)から古い重複データセグメントから守るのにそれを使用できます。 2U=秒すなわち、最大のタイムスタンプ時計の期間の2倍までセットすることによって、これを達成できます。 公式[2]のこの値はホスト組の間の上限TRmax=32K Tpsに通じます。 しかしながら、上で指摘されるように、タイムスタンプを使用する古い写しSYN検出が、より小さい取引レートバウンド、1Tpsに通じます。(Tpsは容認できません)。 さらに、タイムスタンプアプローチは不完全です。 それで、古いACKセグメントはそれらが分離を引き起こす場合があるところに新しい接続を入れることができます。 タイム誌-WAIT状態の間に到着する古い写しACKsが現在のタイムスタンプ[RFC-1337]で新しいACKsを発生させるので、これは起こります。
We therefore conclude that timestamps are not adequate as the monotonic space M; see Table I. However, they may still be useful to effectively extend some other monotonic number space, just as they are used in PAWS to extend the TCP sequence number space. This is discussed below.
したがって、私たちは、タイムスタンプが単調なスペースMとして適切でないと結論を下します。 Table I.を見てください。However、それらは事実上、ある他の単調な数のスペースを広げるためにまだ役に立っているかもしれません、ちょうどそれらがTCP一連番号スペースを広げるのにPAWSで使用されるように。 以下でこれについて議論します。
Braden [Page 17] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[17ページ]RFC1379取引TCP--概念1992年11月
5.2 Current TCP Sequence Numbers
5.2 現在のTCP一連番号
It is useful to understand why the existing 32-bit TCP sequence numbers do not form an appropriate monotonic space for transactions.
取引のために既存の32ビットのTCP一連番号がなぜ適切な単調なスペースを形成しないかを理解しているのは役に立ちます。
The sequence number sent in an initial SYN is called the Initial Sequence Number or ISN. According to the TCP specification, an ISN is to be selected using:
一連番号は、初期のSYNがInitial Sequence NumberかISNと呼ばれるのを送りました。 TCP仕様に従って、ISNによる選択された使用です:
[3] ISN = (R*T) mod 2**32
[3] ISNは(R*T)モッズ2**32と等しいです。
where T is the real time in seconds (from an arbitrary origin, fixed when the system is started) and R is a constant, currently 250 KBps. These ISN values form a monotonic time sequence that wraps in 4.55 hours = 16380 seconds and has a granularity of 4 usecs. For transaction rates up to roughly 250K Tps, the ISN value calculated by formula [3] will be monotonic and could be used for bypassing the 3-way handshake.
Tが秒(システムが始動されるとき修理された任意の起源からの)のリアルタイムであるところでは、現在、Rは定数、250KBpsです。 これらのISN値は4.55時間=で16380秒を包装して、4usecsの粒状を持っている単調な時間系列を形成します。 取引率の最大およそ250KのTpsにおいて、公式[3]によって計算されたISN値は、単調であり、3ウェイ握手を迂回させるのに使用できました。
However, TCP sequence numbers (alone) could not be used to shorten TIME-WAIT state, because there are several ways that overlap of the sequence space of successive incarnations can occur (as described in Appendix to [RFC-1185]). One way is a "fast connection", with a transfer rate greater than R; another is a "long" connection, with a duration of approximately 4.55 hours. TIME-WAIT delay is necessary to protect against these cases. With the official delay of 240 seconds, formula [1] implies a upper bound (as RTT -> 0) of TRmax = 268 Tps; with our target MSL of 2000 sec, TRmax = 32 Tps. These values are unacceptably low.
しかしながら、タイム誌-WAIT状態を短くするのにTCP一連番号だけを使用できませんでした、連続した肉体化の系列スペースのオーバラップが起こることができる(Appendixで[RFC-1185]に説明されるように)いくつかの方法があるので。 1つの方法がRよりすばらしい転送レートとの「速い接続」です。 別のものはおよそ4.55時間の持続時間との「長い」関係です。 タイム誌-WAIT遅れが、これらのケースから守るのに必要です。 240秒の公式の遅れで、公式[1]は、TRmaxの上限(RTT->0としての)が268Tpsと等しいのを含意します。 私たちの2000秒の目標MSLと共に、TRmaxは32Tpsと等しいです。 これらの値は容認できないほど低いです。
To improve this transaction rate, we could use TCP timestamps to effectively extend the range of the TCP sequence numbers. Timestamps would guard against sequence number wrap-around and thereby allow us to increase R in [3] to exceed the maximum possible transfer rate. Then sequence numbers for successive incarnations could not overlap. Timestamps would also provide safety with an MSL as large as 24 days. We could then set U = 0 in the TIME-WAIT delay calculation [2]. For example, R = 10**9 Bps leads to TRmax <= 10**9 Tps. See 2(b) in Table I. These values would more than satisfy our objectives.
この取引率を改良するなら、私たちは、事実上、TCP一連番号の範囲を広げるのにTCPタイムスタンプを使用するかもしれません。 タイムスタンプは、一連番号巻きつけて着るドレスに用心して、その結果、私たちが最大の可能な転送レートを超えるために[3]でRを増加させるのを許容するでしょう。 そして、連続した肉体化のための一連番号は重なることができませんでした。 また、タイムスタンプは24日間と同じくらい大きいMSLを安全に提供するでしょう。 そして、私たちはタイム誌-WAIT遅れ計算[2]にU=0をはめ込むことができました。 例えば、10**9R=Bpsは10**9TRmax<=Tpsに通じます。 Table I.These値における2(b)が私たちの目的を満たすよりそうするのを確実にしてください。
We should make clear how this proposal, sequence numbers plus timestamps, differs from the timestamps alone discussed (and rejected) in the previous section. The difference lies in what is cached and tested for TAO; the proposal here is to cache and test BOTH the latest TCP sequence number and the latest TCP timestamp. In effect, we are proposing to use timestamps to logically extend
私たちはこの提案(一連番号とタイムスタンプ)がどう単独でタイムスタンプと前項で議論していた状態で(そして、拒絶されます)異なっているかを明らかにするべきです。 TAOがないかどうかキャッシュされて、テストされることには違いがあります。 ここでの提案は、最新のTCP一連番号のBOTHと最新のTCPタイムスタンプをキャッシュして、テストすることです。 事実上、私たちは、論理的に広がるのにタイムスタンプを使用するよう提案しています。
Braden [Page 18] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[18ページ]RFC1379取引TCP--概念1992年11月
the sequence space to 64 bits. Another alternative, presented in the next section, is to directly expand the TCP sequence space to 64 bits.
64ビットへの系列スペース。 次のセクションに提示された別の代替手段は直接TCP系列スペースを64ビットに広げることです。
Unfortunately, the proposed solution (TCP sequence numbers plus timestamps) based on equation [3] would be difficult or impossible to implement on many systems, which base their TCP implementation upon a very low granularity software clock, typically O(1 sec). To adapt the procedure to a system with a low granularity software clock, suppose that we calculate the ISN as:
残念ながら、方程式[3]に基づく提案された解決策(TCP一連番号とタイムスタンプ)は、多くのシステムの上で実行するのが、難しいか、または不可能でしょう。システムは彼らのTCP実現を非常に低い粒状ソフトウェア時計、通常O(1秒)に基礎づけます。 低い粒状ソフトウェア時計で手順をシステムに適合させるには、私たちが以下としてISNについて計算すると仮定してください。
[4] ISN = ( R*Ts*floor(T/Ts) + q*CC) mod 2**32
[4] ISNは(R*t*床(T/t)+q*CC)モッズ2**32と等しいです。
where Ts is the time per tick of the software clock, CC is the connection count, and q is a constant. That is, the ISN is incremented by the constant R*Ts once every clock tick and by the constant q for every new connection. We need to choose q to obtain the required monotonicity.
CCは接続カウントです、そして、Tsがソフトウェアのカチカチする音あたり時間であるところでは、時間を計ってください、そして、qは定数です。 すなわち、ISNはすべての新しい接続のために一定のR*tによって一度あらゆる時計カチカチする音と定数q増加されます。 私たちは、必要な単調を得るためにqを選ぶ必要があります。
For monotonicity of the ISN's themselves, q=1 suffices. However, monotonicity during the entire connection requires q = R*Ts. This value of q can be deduced as follows. Let S(T, CC, n) be the sequence number for byte offset n in a connection with number CC at time T:
ISNの単調ために、自分たちであり、q=1は十分です。 しかしながら、全体の接続の間の単調はq=R*tを必要とします。 以下の通りqのこの値を推論できます。 時Tに数のCCとの関係におけるバイトオフセットnのためにS(T、CC、n)が一連番号であることをさせてください:
S(T, CC, n) = (R*Ts*floor(T/Ts) + q*CC + n) mod 2**32.
S(T、CC、n)は(R*t*床(T/t)+q*CC+n)モッズ2**32と等しいです。
For any T1 > T2, we require that: S(T2, CC+1, 0) - S(T1, CC, n) > 0 for all n. Since R is assumed to be an upper bound on the transfer rate, we can write down:
どんなT1>T2に関してはも、私たちが、以下のことが必要です。 S(T2、CC+1、0)--すべてのnのためのS(T1、CC、n)>0。 Rが転送レートに関する上限であると思われるので、私たちは以下に書くことができます。
R > n/(T2 - T1), or T2/Ts - T1/Ts > n/(R*Ts)
R>n/(T2--T1)、またはT2/t、--、T1/t>n/(R*t)
Using the relationship: floor(x)-floor(y) > x-y-1 and a little algebra leads to the conclusion that using q = R*Ts creates the required monotonic number sequence. Therefore, we consider:
関係を使用します: 床(x)床(y)の>x-y-1と少しの代数がq=R*tを使用すると必要な単調な数順が作成されるという結論につながります。 したがって、私たちは考えます:
[5] ISN = R*Ts*(floor(T/Ts) + CC) mod 2**32
[5] ISNは*t*(床(T/t)+CC)モッズ風のR2**32と等しいです。
(which is the algorithm used for ISN selection by BSD TCP).
(ISN選択にBSD TCPによって使用されたアルゴリズムです。)
For error-free operation, the sequence numbers generated by [5] must not wrap the sign bit in less than MSL seconds. Since CC cannot increase faster than TRmax, the safe condition is:
エラーのない操作のために、[5]で発生する一連番号はMSL秒ほど符号ビットを包んではいけません。 CCがTRmaxより速く増加できないので、安全な状態は以下の通りです。
R* (1 + Ts*TRmax) * MSL < 2**31.
R*(1+t*TRmax)*MSL<2**31。
We are interested in the case: Ts*TRmax >> 1, so this relationship
私たちはケースに興味を持っています: したがって、t*TRmax>>1、この関係
Braden [Page 19] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[19ページ]RFC1379取引TCP--概念1992年11月
reduces to:
以下への減少
[6] R * Ts * TRmax * MSL < 2**31.
[6] R*t*TRmax*MSL<2**31。
This shows a direct trade-off among the maximum effective bandwidth R, the maximum transaction rate TRmax, and the maximum segment lifetime MSL. For reasonable limiting values of R, Ts, and MSL, formula [6] leads to a very low value of TRmax. For example, with MSL= 2000 secs, R=10**9 Bps, and Ts = 0.5 sec, TRmax < 2*10**-3 Tps.
これは最大の有効な帯域幅R、最大の取引レートTRmax、および最大のセグメント生涯MSLのときにダイレクトトレードオフを示しています。 R、Ts、およびMSLの妥当な制限値のために、公式[6]はTRmaxの非常に低い値につながります。 例えば、MSL=と共に、2000secs、R=10**9Bps、およびTsが0.5秒、TRmax<2*10**-3Tpsと等しいです。
To ease the situation, we could supplement sequence numbers with timestamps. This would allow an effective MSL of 2 seconds in [6], since longer times would be protected by differing timestamps. Then TRmax < 2**30/(R*Ts). The actual enforced MSL would be increased to 24 days. Unfortunately, TRmax would still be too small, since we want to support transfer rates up to R ~ 10**9 Bps. Ts = 0.5 sec would imply TRmax ~ 2 Tps. On many systems, it appears infeasible to decrease Ts enough to obtain an acceptable TRmax using this approach.
状況を緩和するために、私たちはタイムスタンプで一連番号を補うことができました。 より長い回は異なったタイムスタンプによって保護されるでしょう、したがって、これが[6]に2秒の有効なMSLを許容するでしょう。 そして、TRmax<2**30/(R*t)。 実際の実施されたMSLは24日間まで増加するでしょう。 残念ながら、転送レートをR~10**9Bpsまで支持したいと思うので、TRmaxはまだ小さ過ぎるでしょう。 0.5t=秒はTRmax~2Tpsを含意するでしょう。 多くのシステムの上では、Tsをこのアプローチを使用することで許容できるTRmaxを入手できるくらい減少させるのは実行不可能に見えます。
5.3 64-bit TCP Sequence Numbers
5.3 64ビットのTCP一連番号
Another possibility would be to simply increase the TCP sequence space to 64 bits as suggested in [RFC-1263]. We would also increase the R value for clock-driven ISN selection, beyond the fastest transfer rate of which the host is capable. A reasonable upper limit might be R = 10**9 Bps. As noted above, in a practical implementation we would use:
別の可能性は[RFC-1263]に示されるようにTCP系列スペースを単に64ビットまで増加させるだろうことです。 また、私たちは時計駆動のISN選択のためにR値を増加させるでしょう、ホストができる最も速い転送レートを超えて。 妥当な上限は10**9R=Bpsであるかもしれません。 上で述べたように、実用的な実現に、私たちは以下を使用するでしょう。
ISN = R*Ts*( floor(T/Ts) + CC) mod 2**64
ISNは*t*(床(T/t)+CC)モッズ風のR2**64と等しいです。
leading to:
通じます:
R*(1 + Ts * TRmax) * MSL < 2**63
R*(1+t*TRmax)*MSL<2**63
For example, suppose that R = 10**9 Bps, Ts = 0.5, and MSL = 16K secs (4.4 hrs); then this result implies that TRmax < 10**6 Tps. We see that adding 32 bits to the sequence space has provided feasible values for transaction processing.
Tsは0.5と等しいです、そして、例えば、Rが10**9Bpsと等しいと仮定してください、そして、MSLは16Kのsecs(4.4時間)と等しいです。 そして、この結果はそのTRmax<10**6Tpsを含意します。 私たちは、系列スペースに32ビットを加えると可能な値がトランザクション処理に提供されたのを見ます。
5.4 Connection Counts
5.4 接続カウント
The Connection Count CC is well suited to be the monotonic sequence M, since it "ticks" exactly once for each new connection incarnation and is constant within a single incarnation. Thus, it perfectly separates segments from different incarnations of the same connection and would allow U = 0 in the TIME-WAIT state delay
Connection Count CCは単調列Mになるようによく合っています、それがそれぞれの新しい接続肉体化のためにまさにかつて「カチカチし」て、単一の肉体化の中で一定であるので。 したがって、それは、同じ接続の異なった肉体化とセグメントを完全に切り離して、タイム誌-WAIT州の遅れでU=0を許容するでしょう。
Braden [Page 20] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[20ページ]RFC1379取引TCP--概念1992年11月
formula [2]. (Strictly, U cannot be reduced below 1/R = 4 usec, as noted in Section 4. However, this is of little practical consequence until the ultimate limits on TRmax are approached).
公式[2]。 厳密に、Uは4 1/R=usecの下で減少できません、セクション4に述べられるように。(しかしながら、TRmaxにおける究極の限界がアプローチされるまで、これは小さい実用的な結果のものです。)
Assume that CC is a 32-bit number. To prevent wrap-around in the sign bit of CC in less than MSL seconds requires that:
CCが32ビットの数であると仮定してください。 MSL秒以下でCCに関する符号ビットで巻きつけて着るドレスを防ぐのが、以下のことが必要です。
TRmax * MSL < 2**31
TRmax*MSL<2**31
For example, if MSL = 2000 seconds then TRmax < 10**6 Tp. These are acceptable limits for transaction processing. However, if they are not, we could augment CC with TCP timestamps to obtain very far-out limits, as discussed below.
例えばMSL=2000秒の当時のTRmax<10**6Tpであるなら。 これらはトランザクション処理のための合格限界です。 しかしながら、それらがそうでないなら、私たちは、非常に型破りの限界を得るために以下で議論するようにTCPタイムスタンプでCCを増大させるかもしれません。
It would be an implementation choice at the client whether CC is global for all destinations or private to each destination host (and maintained in the per-host cache). In the latter case, the last CC value assigned for each remote host could also be maintained in the per-host cache. Since there is not typically a large amount of parallelism in the network connection of a host, there should be little difference in the performance of these two different approaches, and the single global CC value is certainly simpler.
CCがすべての目的地にグローバルであるか、または各あて先ホストにとって、個人的であること(そして、1ホストあたりのキャッシュで維持されます)にかかわらずそれはクライアントでの実現選択でしょう。 また、後者の場合では、1ホストあたりのキャッシュでそれぞれのリモートホストのために割り当てられた最後のCC値は維持できました。 ホストのネットワーク接続には多量の平行関係が通常でないあるので、これらの2つの異なるアプローチの性能に少しの違いがあるべきです、そして、確かに、ただ一つのグローバルなCC値は、より簡単です。
To augment CC with TCP timestamps, we would bypass a 3-way handshake if both SEG.CC > cache.CC[A] and SEG.TSval >= cache.TS[A]. The timestamp check would detect a SYN older than 2 seconds, so that the effective wrap-around requirement would be:
TCPタイムスタンプでCCを増大させるために、SEG.CC>cache.CC[A]とSEG.TSval>の両方がcache.TS[A]と等しいなら、私たちは3ウェイ握手を迂回させるでしょう。 タイムスタンプチェックは有効な巻きつけて着るドレス要件があるように、2秒より古いSYNを検出するでしょう:
TRmax * 2 < 2**31
TRmax*2<2**31
i.e., TRmax < 10**9 Tps. The required MSL would be raised to 24 days. Using timestamps in this way, we could reduce the size of CC. For example, suppose CC were 16 bits. Then the wrap-around condition TRmax * 2 < 2**15 implies that TRmax is 16K.
すなわち、TRmax<10**9Tps。 必要なMSLは24日間まで上げられるでしょう。 このようにタイムスタンプを使用して、私たちはCCのサイズを減少させることができました。 CCが例えば16ビットであるなら。 そして、巻きつけて着るドレス状態TRmax*2<2**15は、TRmaxが16Kであることを含意します。
Finally, note that using CC to delete old duplicates from earlier incarnations would not obviate the need for the time-stamp-based PAWS mechanism to prevent errors within a single incarnation due to wrapping the 32-bit TCP sequence space at very high transfer rates.
最終的に、以前の肉体化から古い写しを削除するのにCCを使用するのが時間スタンプベースのPAWSメカニズムが非常に高い転送レートで32ビットのTCP系列スペースを包装するのによる単一の肉体化の中で誤りを防ぐ必要性を取り除かないことに注意してください。
5.5 Conclusions
5.5 結論
The alternatives for monotonic sequence are summarized in Table I. We see that there are two feasible choices for the monotonic space: the connection count and 64-bit sequence numbers. Of these two, we believe that the simpler is the connection count.
単調列のための代替手段はTable I.にまとめられます。Weは、単調なスペースへの2つの可能な選択があるのがわかります: 接続カウントと64ビットの一連番号。 これらの2では、私たちは、接続カウントが、より簡単であると信じています。
Braden [Page 21] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[21ページ]RFC1379取引TCP--概念1992年11月
Implementation of 64-bit sequence numbers would require negotiation of a new header format and expansion of all variables and calculations on the sequence space. CC can be carried in an option and need be examined only once per packet.
64ビットの一連番号の実現は系列スペースで新しいヘッダー形式の交渉とすべての変数と計算の拡大を必要とするでしょう。 CCは、オプションで運ぶことができて、パケット単位で一度だけ調べられなければなりません。
We propose to use a simple 32-bit connection count CC, without augmentation with timestamps, for the transaction extension. This choice has the advantages of simplicity and directness. Its drawback is that it adds a third sequence-like space (in addition to the TCP sequence number and the TCP timestamp) to each TCP header and to the main line of packet processing. However, the additional code is in fact very modest.
私たちは、取引拡大にタイムスタンプで増大なしで簡単な32ビットの接続カウントCCを使用するよう提案します。 この選択には、簡単さと率直さの利点があります。 欠点は3番目の系列のようなスペース(TCP一連番号とTCPタイムスタンプに加えた)をそれぞれのTCPヘッダーと、そして、パケット処理の本線に加えるということです。 しかしながら、事実上、追加コードは非常に穏やかです。
We now have a general outline of the proposed TCP extensions for transactions.
私たちには、現在、取引のための提案されたTCP拡張子に関する概要があります。
o A host maintains a 32-bit global connection counter variable CC.
o ホストは、32ビットのグローバルな接続カウンタが変化するCCであると主張します。
o The sender's current CC value is carried in an option in every TCP segment.
o 送付者の現在のCC値はあらゆるTCPセグメントでオプションで運ばれます。
o CC values are cached per host, and the TAO mechanism is used to bypass the 3-way handshake when possible.
o CC値はホスト単位でキャッシュされます、そして、TAOメカニズムは、可能であるときに、3ウェイ握手を迂回させるのに使用されます。
o In non-SYN segments, the CC value is used to reject duplicates from earlier incarnations. This allows TIME-WAIT state delay to be reduced to K*RTO (i.e., U=0 in Eq. [2]).
o 非SYNセグメントでは、CC値は、以前の肉体化からの写しを拒絶するのに使用されます。 これは、タイム誌-WAIT州の遅れがK*RTOに変えられるのを許容します。(すなわち、EqのU=0。 [2]).
Braden [Page 22] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[22ページ]RFC1379取引TCP--概念1992年11月
TABLE I: Summary of Monotonic Sequences
テーブルI: 単調列の概要
APPROACH TRmax (Tps) Required MSL COMMENTS __________________________________________________________________
アプローチTRmax(Tps)はMSLコメントを必要としました。__________________________________________________________________
1. Timestamp & PAWS 1 24 days TRmax is too small __________________________________________________________________
1. タイムスタンプとPAWS1 24日間のTRmaxは小さ過ぎます。__________________________________________________________________
2. Current TCP Sequence Numbers
2. 現在のTCP一連番号
(a) clock-driven ISN: eq. [3] 268 240 secs TRmax & MSL too small
(a) 駆動ISNの時間を計ってください: eq。 [3]268 240秒TRmax&MSL、も小ささ
(b) Timestamps& clock- driven ISN [3] & 10**9 24 days Hard to R=10**9 implement
R=10**9へのタイムスタンプ、時計の駆動ISN[3]、および10**9の24日間のHardが実行する(b)
(c) Timestamps & c-dr ISN: eq. [4] 2**30/(R*Ts) 24 days TRmax too small. __________________________________________________________________
(c) タイムスタンプとc-dr ISN: eq。 [4] 2**30/(R*t)の24日間のTRmax、も小さいです。 __________________________________________________________________
3. 64-bit TCP Sequence Numbers
3. 64ビットのTCP一連番号
2**63/(MSL*R*Ts) MSL Significant TCP change e.g., R=10**9 Bps, MSL = 4.4 hrs, Ts = 0.5 sec=> TRmax = 10**6 __________________________________________________________________
2**>0.5Ts=秒例えば、R=10**9Bps、4.4MSL=時間の63/(MSL*R*t)MSL Significant TCP変化=TRmaxは10**6と等しいです。__________________________________________________________________
4. Connection Counts
4. 接続カウント
(a) no timestamps 2**31/MSL MSL 3rd sequence e.g., MSL=2000 sec space TRmax = 10**6
(a) タイムスタンプがない2**31/MSL MSL第3系列例えば、MSL=2000秒のスペースTRmaxは10**6と等しいです。
(b) with timestamps 2**30 24 days (ditto) and PAWS __________________________________________________________________
(b) タイムスタンプ2**の30 24日間(同様である)とPAWSと共に__________________________________________________________________
Braden [Page 23] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[23ページ]RFC1379取引TCP--概念1992年11月
6. CONNECTION STATES
6. 接続州
TCP has always allowed a connection to be half-closed. TAO makes a significant addition to TCP semantics by allowing a connection to be half-synchronized, i.e., to be open for data transfer in one direction before the other direction has been opened. Thus, the passive end of a connection (which receives an initial SYN) can accept data and even a FIN bit before its own SYN has been acknowledged. This SYN, data, and FIN may arrive on a single segment (as in Figure 4), or on multiple segments; packetization makes no difference to the logic of the finite-state machine (FSM) defining transitions among connection states.
TCPは、いつも接続が半開きであることを許容しました。 TAOは接続が半分連動されているのを許容することによって、TCP意味論への重要な追加をします、すなわち、以前一方向へのデータ転送において開くように、もう片方の指示が開かれました。 したがって、接続(初期のSYNを受ける)の受け身の終わりはデータとそれ自身のSYNが承認される前に噛み付かれたFINさえ受け入れることができます。 このSYN、データ、およびFINはただ一つのセグメント(図4のように)の上、または、複数のセグメントの上で到着するかもしれません。 packetizationは、接続州の中で変遷を定義しながら、有限状態機械(FSM)の論理に重要ではありません。
Half-synchronized connections have several consequences.
半分連動している接続には、いくつかの結果があります。
(a) The passive end must provide an implied initial data window in order to accept data. The minimum size of this implied window is a parameter in the specification; we suggest 4K bytes.
(a) 受け身の終わりは、データを受け入れるために暗示している初期のデータウィンドウを提供しなければなりません。 仕様でこの暗示している窓の最小規模はパラメタです。 私たちは4Kのバイトを勧めます。
(b) New connection states and transitions are introduced into the TCP FSM at both ends of the connection. At the active end, new states are required to piggy-back the FIN on the initial SYN segment. At the passive end, new states are required for a half-synchronized connection.
(b) 新しい接続州と変遷は接続の両端のTCP FSMに紹介されます。 アクティブな終わりに、新しい州は初期のSYNセグメントのFINを子豚で支持しなければなりません。 受け身の終わりに、新しい州が半分連動している接続に必要です。
This section develops the resulting FSM description of a TCP connection as a conventional state/transition diagram. To develop a complete FSM, we take a constructive approach, as follows: (1) write down all possible events; (2) write down the precedence rules that govern the order in which events may occur; (3) construct the resulting FSM; and (4) augment it to support TAO. In principle, we do this separately for the active and passive ends; however, the symmetry of TCP results in the two FSMs being almost entirely coincident.
このセクションは従来の状態/変遷ダイヤグラムとしてTCP接続の結果として起こるFSM記述を開発します。 完全なFSMを開発するために、私たちは以下の通り建設的なアプローチを取ります: (1) すべての可能な出来事を書き留めてください。 (2) 出来事が起こるかもしれないオーダーを支配する先行規則を書き留めてください。 (3) 結果として起こるFSMを組み立ててください。 (4) そして、それを増大させて、TAOを支持してください。 原則として、私たちはアクティブで受け身の終わりに別々にこれをします。 しかしながら、TCPの対称はほぼ完全にコインシデンスである2FSMsをもたらします。
Figure 8 lists all possible state transitions for a TCP connection in the absence of TAO, as elementary events and corresponding actions. Each transition is labeled with a letter. Transitions a-g are used by the active side, and c-i are used by the passive side. Without TAO, transition "c" (event "rcv ACK(SYN)") synchronizes the connection, allowing data to be accepted for the user.
エイト環はTAOが不在のときTCP接続のためにすべての可能な状態遷移を記載します、根元事象と対応する動作として。 各変遷は手紙でラベルされます。 変遷a-gはアクティブ側によって使用されます、そして、c-iは受け身側によって使用されます。 TAOがなければ、データがユーザのために受け入れられるのを許容して、変遷「c」(イベント「rcv ACK(SYN)」)は接続を同時にさせます。
By definition, the first transition for an active (or passive) side must be "a" (or "i", respectively). During a single instance of a connection, the active side will progress through some permutation of the complete sequence of transitions {a b c d e f } or the sequence {a b c d e f g}. The set of possible permutations is determined by precedence rules governing the order in which transitions can occur.
定義上、アクティブで(受動)の側のための前縁が“a"であるに違いない、(または、「i」、それぞれ) 接続のただ一つの例の間、アクティブ側は変遷の完全な配列の何らかの順列でb c d e fか系列をb c d e f gで進行するでしょう。 可能な順列のセットは変遷が起こることができるオーダーを支配する先行規則で決定します。
Braden [Page 24] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[24ページ]RFC1379取引TCP--概念1992年11月
Label Event / Action _____ ________________________ a OPEN / snd SYN
ラベル出来事/動作_____ ________________________ オープン/snd SYN
b rcv SYN [No TAO]/ snd ACK(SYN)
b rcv SYN[TAOがない]/snd ACK(syn)
c rcv ACK(SYN) /
c rcv ACK(SYN)/
d CLOSE / snd FIN
d CLOSE / snd FIN
e rcv FIN / snd ACK(FIN)
e rcv FIN / snd ACK(フィン)
f rcv ACK(FIN) /
f rcv ACK(FIN)/
g timeout=2MSL / delete TCB ___________________________________________________ h passive OPEN / create TCB
gタイムアウト=2MSL/はTCBを削除します。___________________________________________________ h受け身のオープン/はTCBを作成します。
i rcv SYN [No TAO]/ snd SYN, ACK(SYN) ___________________________________________________
i rcv SYN[TAOがない]/snd SYN、ACK(SYN)___________________________________________________
Figure 8. Basic TCP Connection Transitions
エイト環。 基本的なTCP接続変遷
Using the notation "<." to mean "must precede", the precedence rules are:
使用、記法"<" 「必須は先行します」と意味するために、先行規則は以下の通りです。
(1) Logical ordering: must open connection before closing it:
(1)の論理的な注文: それを閉じる前の必須のオープンな接続:
b <. e
b<e
(2) Causality -- cannot receive ACK(x) before x has been sent:
(2)因果関係--xを送る前にACK(x)を受けることができません:
a <. c and i <. c and d <. f
a<c、i<c、およびd<f
(3) Acknowledgments are cumulative
(3) 承認は累積しています。
c <. f
c<f
(4) First packet in each direction must contain a SYN.
(4) 各方向への最初のパケットはSYNを含まなければなりません。
b <. c and b <. f
b<b<cとf
(5) TIME-WAIT state
(5) タイム誌-WAIT状態
Whenever d precedes e in the sequence, g must be the last transition.
dが系列のeに先行するときはいつも、gは立下り区間であるに違いありません。
Braden [Page 25] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[25ページ]RFC1379取引TCP--概念1992年11月
Applying these rules, we can enumerate all possible permutations of the events and summarize them in a state transition diagram. Figure 9 shows the result, with boxes representing the states and directed arcs representing the transitions.
これらの規則を適用して、私たちは、出来事のすべての可能な順列を列挙して、状態遷移ダイヤグラムでそれらをまとめることができます。 箱が州を代表していて、指示されたアークが変遷を表していて、図9は結果を示しています。
________ ________ | | h | | | CLOSED |--------->| LISTEN | |________| |________| | | | a | i ____V____ ____V___ ________ | | b | | e | | | |--------->| |-------------->| | |________| |________| |________| / / | / | / / | c d / | c / / __V_____ | ____V___ / / | | e | | | d | d / | |------------>| | | | |________| | |________| | | | | | | | | ___V____ | | | | | | | | | | | | | | | | |________| | | | | | | ____V___ ______V_ | ________ | | | | b | | e | | | | | | |------->| |--------->| | | | |________| |________| | |________| | | | / | | | c | / d c | c | d | | / | | | _V___V__ ____V___ V_____V_ | | e | | | | | |---->| | | | |________| |________| |________| | | | | f | f | f ____V___ ____V___ ___V____ | | e | TIME- | g | | | |---->| WAIT |-->| CLOSED | |________| |________| |________|
________ ________ | | h| | | 閉じられます。|、-、-、-、-、-、-、-、--、>| 聴いてください。| |________| |________| | | | a| i____V____ ____V___ ________ | | b| | e| | | |、-、-、-、-、-、-、-、--、>| |、-、-、-、-、-、-、-、-、-、-、-、-、--、>|、| |________| |________| |________| / / | / | / / | c d/| c//______ | ____V___ / / | | e| | | d| d/| |、-、-、-、-、-、-、-、-、-、-、--、>|、|、|、| |________| | |________| | | | | | | | | ___V____ | | | | | | | | | | | | | | | | |________| | | | | | | ____V___ ______V_| ________ | | | | b| | e| | | | | | |、-、-、-、-、-、--、>| |、-、-、-、-、-、-、-、--、>|、|、|、| |________| |________| | |________| | | | / | | | c| /d c| c| d| | / | | | _V___V______V___ V_____V_| | e| | | | | |、-、-、--、>|、|、|、| |________| |________| |________| | | | | f| f| f____V___ ____V___ ___V____ | | e| 時間| g| | | |、-、-、--、>| 待ち| -->、| 閉じられます。| |________| |________| |________|
Figure 9: Basic State Diagram
図9: 基本的な州のダイヤグラム
Braden [Page 26] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[26ページ]RFC1379取引TCP--概念1992年11月
Although Figure 9 gives a correct representation of the possible event sequences, it is not quite correct for the actions, which do not compose as shown. In particular, once a control bit X has been sent, it must continue to be sent until ACK(X) is received. This requires new transitions with modified actions, shown in the following list. We use the labeling convention that transitions with the same event part all have the same letter, with different numbers of primes to indicate different actions.
図9は可能なイベント系列の正しい表現を与えますが、動作には、それは全く正しいというわけではありません。(動作は示されるように構成されません)。 いったんコントロールビットXを送ると、特に、それは、ACK(X)が受け取られているまで送られ続けなければなりません。 これは以下のリストに示された変更された動作による新しい変遷を必要とします。 私たちはラベルしているコンベンションを使用します。同じイベント部分がある変遷にはすべて、異なった動作を示すために、同じ手紙が異なった数の盛りと共にあります。
Label Event / Action _____ _______________________________________ b' (=i) rcv SYN [No TAO] / snd SYN,ACK(SYN) b'' rcv SYN [No TAO] / snd SYN,FIN,ACK(SYN) d' CLOSE / snd SYN,FIN e' rcv FIN / snd FIN,ACK(FIN) e'' rcv FIN / snd SYN,FIN,ACK(FIN)
ラベル出来事/動作_____ _______________________________________ '「b'(=i) rcv SYN[TAOがない]/snd SYN、ACK(SYN)b」rcv SYN[TAOがない]/snd SYN、FIN、ACK(SYN)d'CLOSE / snd SYN、FIN e'rcv FIN / snd FIN、ACK(FIN)e」rcv FIN / snd SYN、FIN、ACK(フィン)
Figure 10 shows the state diagram of Figure 9, with the modified transitions and with the states used by standard TCP [STD-007] identified. Those states that do not occur in standard TCP are numbered 1-5.
図9、変更された変遷、および州が特定された標準のTCP[STD-007]によって使用されている状態で、図10は州のダイヤグラムを示しています。 標準のTCPに起こらないそれらの州は1-5に付番されます。
Standard TCP has another implied restriction: a FIN bit cannot be recognized before the connection has been synchronized, i.e., c <. e. This eliminates from standard TCP the states 1, 2, and 5 shown in Figure 10. States 3 and 4 are needed if a FIN is to be piggy-backed on a SYN segment (note that the states shown in Figure 1 are actually wrong; the states shown as SYN-SENT and ESTABLISHED are really states 3 and 4). In the absence of piggybacking the FIN bit, Figure 10 reduces to the standard TCP state diagram [STD-007].
標準のTCPには、別の暗示している制限があります: . 接続が同時にする前にFINビットを認識できないで、すなわち、c<はeです。 これは標準のTCPから図10で見せられた州1、2、および5を排除します。 FINがSYNセグメント(図1で見せられた州が実際に間違っているというメモ; SYN-SENTとESTABLISHEDが本当に州3と4であるのに見せられた州)で背負われるつもりであるなら、州3と4が必要です。 FINビットを背負うことが不在のとき、図10は標準のTCP州のダイヤグラム[STD-007]に減少します。
The FSM described in Figure 10 is intended to be applied cumulatively; that is, parsing a single packet header may lead to more than one transition. For example, the standard TCP state diagram includes a direct transition from SYN-SENT to ESTABLISHED:
図10で説明されたFSMによって累積的に適用されることを意図します。 すなわち、独身のパケットのヘッダーを分析するのは1つ以上の変遷に通じるかもしれません。 例えば、標準のTCP州のダイヤグラムはダイレクトSYN-SENTからESTABLISHEDまでの変遷を含んでいます:
rcv SYN,ACK(SYN) / snd ACK(SYN).
rcv SYN、ACK(SYN)/snd ACK(SYN)。
This is transition b followed immediately by c.
これはcによるすぐにいうことになられた変遷bです。
Braden [Page 27] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[27ページ]RFC1379取引TCP--概念1992年11月
________ ________ | | h | | | CLOSED |--------->| LISTEN | |________| |________| | | | a | i ____V____ ____V___ ________ | SYN- | b' | SYN- | e' | | | SENT |--------->|RECEIVED|-------------->| 1 | |________| |________| |________| / / | | | d'/ d'/ | c d' | c | / / __V_____ | _V______ / / |ESTAB- | e | | CLOSE- | | / | LISHED|------------|-->| WAIT | | | |________| | |________| | | | | | | | | _____V__ | | | | | | | | | | | 2 | | | | | |________| | | | | | | ____V___ ______V_ | ________ | | | | b'' | |e''' | | | | | | 3 |------->| 4 |--------->| 5 | | | |________| |________| | |________| | | | / | | | c | / d c | c | d | | / | | | _V___V__ ____V___ V_____V_ | FIN- | e'' | | | LAST- | | WAIT-1|---->|CLOSING | | ACK | |________| |________| |________| | | | | f | f | f ____V___ ____V___ ___V____ | FIN- | e | TIME- | g | | | WAIT-2|---->| WAIT |-->| CLOSED | |________| |________| |________|
________ ________ | | h| | | 閉じられます。|、-、-、-、-、-、-、-、--、>| 聴いてください。| |________| |________| | | | a| i____V____ ____V___ ________ | SYN| 'b'| SYN| 'e'| | | 発信します。|、-、-、-、-、-、-、-、--、>|受信します。|、-、-、-、-、-、-、-、-、-、-、-、-、--、>| 1 | |________| |________| |________| / / | | | 'd'/d'/| 'c d'| c| //______ | _V______ / / |ESTAB| e| | 閉じてください。| | / | LISHED|、-、-、-、-、-、-、-、-、-、-、--、|、--、>| 待ち| | | |________| | |________| | | | | | | | | _____V__| | | | | | | | | | | 2 | | | | | |________| | | | | | | ____V___ ______V_| ________ | | | | 「b」| |'「e」'| | | | | | 3 |、-、-、-、-、-、--、>| 4 |、-、-、-、-、-、-、-、--、>| 5 | | | |________| |________| | |________| | | | / | | | c| /d c| c| d| | / | | | _V___V______V___ V_____V_| フィン| 「e」| | | 最終| | 待ち-1|、-、-、--、>|閉じます。| | ACK| |________| |________| |________| | | | | f| f| f____V___ ____V___ ___V____ | フィン| e| 時間| g| | | 待ち-2|、-、-、--、>| 待ち| -->、| 閉じられます。| |________| |________| |________|
Figure 10: Basic State Diagram -- Correct Actions
図10: 基本的な州のダイヤグラム--正しい動作
Next we introduce TAO. If the TAO test succeeds, the connection becomes half-synchronized. This requires a new set of states, mirroring the states of Figure 10, beginning with acceptance of a SYN (transition "b" or "i"), and ending when ACK(SYN) arrives (transition
次に、私たちはTAOを導入します。 TAOテストが成功するなら、接続は半分連動するようになります。 これは新しいセットに州を要求します、図10の事情を反映して、SYNの承認で(変遷「b」か「i」)を始めて、ACK(SYN)が到着すると終わって(変遷
Braden [Page 28] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[28ページ]RFC1379取引TCP--概念1992年11月
"c"). Figure 11 shows the result of augmenting Figure 10 with the additional states for TAO. The transitions are defined in the following table:
「c」) 図11はTAOのために追加州がある図10を増大させるという結果を示しています。 変遷は以下のテーブルで定義されます:
Key for Figure 11: Complete State Diagram with TAO
図11のためのキー: TAOがある完全な州のダイヤグラム
Label Event / Action _____ ________________________
ラベル出来事/動作_____ ________________________
a OPEN / create TCB, snd SYN b' rcv SYN [no TAO]/ snd SYN,ACK(SYN) b'' rcv SYN [no TAO]/ snd SYN,FIN,ACK(SYN) c rcv ACK(SYN) / d CLOSE / snd FIN d' CLOSE / snd SYN,FIN e rcv FIN / snd ACK(FIN) e' rcv FIN / snd SYN,ACK(FIN) e'' rcv FIN / snd FIN,ACK(FIN) e''' rcv FIN / snd SYN,FIN,ACK(FIN) f rcv ACK(FIN) / g timeout=2MSL / delete TCB h passive OPEN / create TCB i (= b') rcv SYN [no TAO]/ snd SYN,ACK(SYN) j rcv SYN [TAO OK] / snd SYN,ACK(SYN) k rcv SYN [TAO OK] / snd SYN,FIN,ACK(SYN)
「'オープン/はTCBを作成します、snd SYN b'rcv SYN[TAOがない]/snd SYN、ACK(SYN)b」rcv SYN[TAOがない]/snd SYN、FIN、ACK(SYN)c rcv ACK(SYN)/d CLOSE / snd FIN d'CLOSE / snd SYN、FIN e rcv FIN / snd ACK(FIN)e'rcv FIN / snd SYN、ACK(FIN)e」rcv FIN / snd FIN、ACK(FIN)e」'rcv FIN / snd SYN、FIN、ACK(FIN)f rcv ACK(FIN)/gタイムアウト=2MSL/はTCB hを削除します。受け身のオープン/はTCB i(b'と等しいです)rcv SYN[TAOがない]/snd SYNを作成します、ACK(SYN)j rcv SYN[TAO OK]/snd SYN、ACK(SYN)k rcv SYN[TAO OK]/snd SYN、FIN、ACK(syn)
Each new state in Figure 11 bears a very simple relationship to a standard TCP state. We indicate this by naming the new state with the standard state name followed by a star. States SYN-SENT* and SYN-RECEIVED* differ from the corresponding unstarred states in recording the fact that a FIN has been sent. The other new states with starred names differ from the corresponding unstarred states in being half-synchronized (hence, a SYN bit needs to be transmitted).
図11のそれぞれの新しい州は標準のTCP状態との非常に簡単な関係に堪えます。 私たちは、標準の州の名が星によって従われている状態で新しい状態を命名することによって、これを示します。 州のSYN-SENT*とSYN-RECEIVED*はFINを送ったという事実を記録するのにおいて対応する非主演された州と異なっています。 主演された名前がある他の新しい州は半分連動しているのにおいて対応する非主演された州と異なっています(したがって、SYNビットは、伝えられる必要があります)。
The state diagram of Figure 11 is more general than required for transaction processing. In particular, it handles simultaneous connection synchronization from both sides, allowing one or both sides to bypass the 3-way handshake. It includes other transitions that are unlikely in normal transaction processing, for example, the server sending a FIN before it receives a FIN from the client (ESTABLISHED* -> FIN-WAIT-1* in Figure 11).
図11の州のダイヤグラムはトランザクション処理のために必要とされるより一般的です。 ものか両側が3ウェイ握手を迂回させるのを許容して、特に、それは両側から同時接続同期を扱います。 それは他の通常のトランザクション処理でありそうもない変遷を含んでいます、例えば、それの前にFINを送るサーバがクライアント(図11のESTABLISHED*->FIN-WAIT-1*)からFINを受けます。
Braden [Page 29] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[29ページ]RFC1379取引TCP--概念1992年11月
________ ________ | | h | | | CLOSED |--------------->| LISTEN | |________| |________| | / | a| / i | j | / | | / _V______ ________ | j | |ESTAB- | e' | CLOSE- | | /---------|----->| LISHED*|------------>| WAIT*| | / | |________| |________| | / | | | | | | / | |d' | c d' | | c ____V___ / ______V_ | _V______ | _V______ | SYN- | b' | SYN- | c | |ESTAB- | e | | CLOSE- | | SENT |------>|RECEIVED|-----|-->| LISHED|----------|->| WAIT | |________| |________| | |________| | |________| | | | | | | | | | | ___V____ | | | | | | LAST- | | | d' | d' | d' | d | ACK* | | | | | | |________| | | | | | | | | | ______V_ | ________ |c |d | k | | FIN- | | e''' | | | | | /------|-->| WAIT-1*|---|------>|CLOSING*| | | | / | |________| | |________| | | | / | | | | | | | / | | c | | c | | ____V___ / ____V___ V_____V_ ____V___ V____V__ | SYN- | b'' | SYN- | c | FIN- | e'' | | | LAST- | | SENT* |----->|RECEIVD*|---->| WAIT-1 |---->|CLOSING | | ACK | |________| |________| |________| |________| |________| | | | | f | f | f ___V____ ____V___ ___V____ | FIN- | e |TIME- | g | | | WAIT-2 |---->| WAIT |-->| CLOSED | |________| |________| |________|
________ ________ | | h| | | 閉じられます。|、-、-、-、-、-、-、-、-、-、-、-、-、-、--、>| 聴いてください。| |________| |________| | / | a| /i| j| / | | /______ ________ | j| |ESTAB| 'e'| 閉じてください。| | /---------|、-、-、-、--、>| LISHED*|、-、-、-、-、-、-、-、-、-、-、--、>| *を待ってください。| | / | |________| |________| | / | | | | | | / | |'d'| 'c d'| | c____V___ / ______V_| _V______ | _V______ | SYN| 'b'| SYN| c| |ESTAB| e| | 閉じてください。| | 発信します。|、-、-、-、-、--、>|受信します。|、-、-、-、--、|、--、>| LISHED|、-、-、-、-、-、-、-、-、--、|、-、>| 待ち| |________| |________| | |________| | |________| | | | | | | | | | | ___V____ | | | | | | 最終| | | 'd'| 'd'| 'd'| d| ACK*| | | | | | |________| | | | | | | | | | ______V_| ________ |c|d| k| | フィン| | '「e」'| | | | | /------| -->、| 待-1ち*|、-、--、|、-、-、-、-、--、>|*を閉じます。| | | | / | |________| | |________| | | | / | | | | | | | / | | c| | c| | ____V___ / ____V___ V_____V_____V___ V____V__| SYN| 「b」| SYN| c| フィン| 「e」| | | 最終| | *を送りました。|、-、-、-、--、>|RECEIVD*|、-、-、--、>| 待ち-1|、-、-、--、>|閉じます。| | ACK| |________| |________| |________| |________| |________| | | | | f| f| f___V____ ____V___ ___V____ | フィン| e|時間| g| | | 待ち-2|、-、-、--、>| 待ち| -->、| 閉じられます。| |________| |________| |________|
Figure 11: Complete State Diagram with TAO
図11: TAOがある完全な州のダイヤグラム
The relationship between starred and unstarred states is very regular. As a result, the state extensions can be implemented very simply using the standard TCP FSM with the addition of two "hidden" boolean flags, as described in the functional specification memo
主演されて非主演された州の間の関係は非常に通常です。 その結果、非常に単に2個の「隠された」論理演算子旗の添加がある標準のTCP FSMを使用することで州の拡大を実行できます、機能的な仕様メモで説明されるように
Braden [Page 30] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[30ページ]RFC1379取引TCP--概念1992年11月
[TTCP-FS].
[TTCP-FS。]
As an example of the application of Figure 11, consider the minimal transaction shown in Figure 12.
図11の応用に関する例と、図12に示された最小量の取引を考えてください。
TCP A (Client) TCP B (Server) _______________ ______________
TCPは(クライアント)TCP B(サーバ)です。_______________ ______________
CLOSED LISTEN
閉じられて、聴いてください。
1. SYN-SENT* --> <SYN,data1,FIN,CC=x1> --> CLOSE-WAIT* (TAO test OK=> data1->user_B)
1. SYNによって送られた*(x1SYN(data1、フィン)がCCする><=>)>厳密な待ち*(TAOテストOK=>data1>ユーザ_B)
LAST-ACK* <-- <SYN,ACK(FIN),data2,FIN,CC=y1,CC.ECHO=x1> <-- 2. TIME-WAIT (TAO test OK, data2->user_A)
最後のACK*<--<SYN(ACK(フィン)、data2、フィン)は=y1、CC.ECHO=x1><をCCします--2。 時間待ち(TAOがOKをテストする、data2->、ユーザ、)
3. TIME-WAIT --> <ACK(FIN),CC=x2> --> CLOSED
3. 時間待ち--><ACK(フィン)、CC=x2>-->は閉じました。
(timeout) CLOSED
(タイムアウト)は閉じました。
Figure 12: Minimal Transaction Sequence
図12: 最小量の取引系列
Sending segment #1 leaves the client end in SYN-SENT* state, which differs from SYN-SENT state in recording the fact that a FIN has been sent. At the server end, passing the TAO test enters ESTABLISHED* state, which passes the data to the user as in ESTABLISHED state and also records the fact that the connection is half synchronized. Then the server processes the FIN bit of segment #1, moving to CLOSE-WAIT* state.
SYN-SENT*状態で1が残すセグメント#にクライアント終わりを送ります。(それは、FINを送ったという事実を記録するのにおいてSYN-SENT状態と異なっています)。 サーバ終わりに、TAOテストに合格するのはESTABLISHED*州に入ります。(それは、ESTABLISHED状態のようにデータをユーザに渡して、また、接続が半分同時にするという事実を記録します)。 そして、CLOSE-WAIT*状態に動いて、サーバはセグメント#1のFINビットを処理します。
Moving to CLOSE-WAIT* state should cause the server to send a segment containing SYN and ACK(FIN). However, transmission of this segment is deferred so the server can piggyback the response data and FIN on the same segment, unless a timeout occurs first. When the server does send segment #2 containing the response data2 and a FIN, the connection advances from CLOSE-WAIT* to LAST-ACK* state; the connection is still half-synchronized from B's viewpoint.
CLOSE-WAIT*状態に動くのはサーバにSYNとACK(FIN)を含むセグメントを送らせるべきです。 しかしながら、サーバが同じセグメントで応答のデータとFINを背負うことができるように、このセグメントの送信は延期されます、タイムアウトが最初に起こらない場合。 サーバが応答data2とFINを含むセグメント#2を送るとき、接続はCLOSE-WAIT*からLAST-ACK*状態まで進みます。 接続はビーズ観点からまだ半分連動されています。
Processing segment #2 at the client again results in multiple transitions:
クライアントでの処理セグメント#2は再び複数の変遷をもたらします:
Braden [Page 31] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[31ページ]RFC1379取引TCP--概念1992年11月
SYN-SENT* -> FIN-WAIT-1* -> CLOSING* -> CLOSING -> TIME-WAIT
SYNによって送られた*->フィン待ち-1->閉鎖*->終わりの->時間*待ち時間
These correspond respectively to receiving a SYN, a FIN, an ACK for A's SYN, and an ACK for A's FIN.
これらはそれぞれSYN、FIN、AのSYNのためのACK、およびAのFINのためのACKを受けると対応しています。
Figure 13 shows a slightly more complex example, a transaction sequence in which request and response data each require two segments. This figure assumes that both client and server TCP are well-behaved, so that e.g., the client sends the single segment #5 to acknowledge both data segments #3 and #4. SEG.CC values are omitted for clarity.
図13はわずかに複雑な例(要求と応答データがそれぞれ2つのセグメントを必要とする取引系列)を示しています。 この図は、クライアントとサーバTCPの両方が品行方正であると仮定します、例えば、クライアントがデータ・セグメント#3と#4の両方を承認するためにただ一つのセグメント#5を送るように。 SEG.CC値は明快ために省略されます。
_T_C_P__A _T_C_P__B
___T_C_Pは_T_C_P__Bです。
1. SYN-SENT* --> <SYN,data1> --> ESTABLISHED* (TAO OK, data1-> user)
1. SYNによって送られた*(><SYN、data1>)>確立した*(TAO OK、data1->ユーザ)
2. SYN-SENT* --> <data2,FIN> --> CLOSE-WAIT* (data2-> user)
2. SYNによって送られた*(><data2、フィン>)>厳密な待ち*(data2->ユーザ)
3. FIN-WAIT-2 <-- <SYN,ACK(FIN),data3> <-- CLOSE-WAIT* (data3->user)
3. フィン待2ち<--<SYN、ACK(フィン)、data3><--厳密な待っている*(data3->、ユーザ、)
4. TIME_WAIT <-- <ACK(FIN),data4,FIN> <-- LAST-ACK* (data4->user)
4. タイム誌_は<--<ACK(フィン)、data4、フィン><--最後のACKの*を待っています。(data4->、ユーザ、)
5. TIME-WAIT --> <ACK(FIN)> --> CLOSED
5. 時間待ち--><ACK(フィン)>-->は閉じました。
Figure 13. Multi-Packet Request/Response Transaction
図13。 マルチパケット要求/応答取引
7. CONCLUSIONS AND ACKNOWLEDGMENTS
7. 結論と承認
TCP was designed to be a highly symmetric protocol. This symmetry is evident in the piggy-backing of acknowledgments on data and in the common header format for data segments and acknowledgments. On the other hand, the examples and discussion in this memo are in general highly unsymmetrical; the actions of a "client" are clearly distinguished from those of a "server". To explain this apparent discrepancy, we note the following. Even when TCP is used for virtual circuit service, the data transfer phase is symmetrical but the open and close phases are not. A minimal transaction, consisting of one segment in each direction, compresses the open, data transfer, and close phases together, and making the asymmetry of the open and
TCPは、非常に左右対称のプロトコルになるように設計されました。 この対称はデータでの承認の便乗とデータ・セグメントと承認のための一般的なヘッダー形式で明白です。 他方では、一般に、このメモにおける例と議論がそうである、非常に、unsymmetrical。 「クライアント」の動作は「サーバ」のものと明確に区別されます。 この見かけの食い違いについて説明するために、私たちは以下に注意します。 TCPが仮想のサーキットサービスに使用さえされるとき、データ転送段階は対称ですが、開いていて近いフェーズは対称であるというわけではありません。 そして各方向へのあるセグメントから成って、戸外、データ転送、および近いフェーズを一緒に圧縮して、戸外の非対称を作る最小量の取引。
Braden [Page 32] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[32ページ]RFC1379取引TCP--概念1992年11月
close phases dominant. As request and response messages increase in size, the virtual circuit model becomes increasingly relevant, and symmetry again dominates.
優位な状態でフェーズを閉じてください。 要求と応答メッセージが大きくなるのに従って、事実上の回路モデルはますます関連するようになります、そして、対称は再び支配されます。
TCP's 3-way handshake precludes any performance gain from including data on a SYN segment, while TCP's full-duplex data-conserving close sequence ties up communication resources to the detriment of high- speed transactions. Merely loading more control bits onto TCP data segments does not provide efficient transaction service. To use TCP as an effective transaction transport protocol requires bypassing the 3-way handshake and shortening the TIME-WAIT delay. This memo has proposed a backwards-compatible TCP extension to accomplish both goals. It is our hope that by building upon the current version of TCP, we can give a boost to community acceptance of the new facilities. Furthermore, the resulting protocol implementations will retain the algorithms that have been developed for flow and congestion control in TCP [Jacobson88].
TCPの3ウェイ握手はSYNセグメントに関するデータを含んでいるので、どんな性能向上も排除します、TCPのデータを保存する全二重近い系列は高い速度取引の損傷にコミュニケーションリソースをタイアップしますが。 単にTCPデータ・セグメントをより多くのコントロールビット押し込むのは効率的な取引サービスを提供しません。 有効な取引トランスポート・プロトコルとしてTCPを使用するのは、3ウェイ握手を迂回させて、タイム誌-WAIT遅れを短くするのを必要とします。 このメモは、両方の目標を達成するために後方にコンパチブルTCP拡張子を提案しました。 それはTCPの最新版を当てにすることによって、私たちが新しい設備の共同体承認に後押しできるという私たちの望みです。 その上、結果として起こるプロトコル実現はTCP[Jacobson88]で流れと輻輳制御のために開発されたアルゴリズムを保有するでしょう。
O'Malley and Peterson have recently recommended against backwards- compatible extensions to TCP, and suggested instead a mechanism to allow easy installation of alternative versions of a protocol [RFC- 1263]. While this is an interesting long-term approach, in the shorter term we suggest that incremental extension of the current TCP may be a more effective route.
オマリーとピーターソンは、最近後方にであることに対するコンパチブル拡大をTCPに推薦して、プロトコル[RFC1263]の異本の簡単なインストールを許容するために代わりにメカニズムを勧めました。 これはおもしろい長期のアプローチですが、もっと短期的に見れば私たちは、現在のTCPの増加の拡大が、より効果的なルートであるかもしれないと示唆します。
Besides the backward-compatible extension proposed here, there are two other possible approaches to making efficient transaction processing widely available in the Internet: (1) a new version of TCP or (2) a new protocol specifically adapted to transactions. Since current TCP "almost" supports transactions, we favor (1) over (2). A new version of TCP that retained the semantics of STD-007 but used 64 bit sequence numbers with the procedures and states described in Sections 3, 4, and 6 of this memo would support transactions as well as virtual circuits in a clean, coherent manner.
ここで提案された後方コンパチブル拡大以外に、インターネットで効率的なトランザクション処理を広く利用可能にすることへの他の2つの可能なアプローチがあります: (1) (2) TCPの新しいバージョンか新しいプロトコルが明確に取引に順応しました。 現在のTCPが取引を「ほとんど」支持するので、私たちは(2)より(1)を好みます。 このメモのセクション3、4、および6で説明される手順と州と共にSTD-007の意味論を保有しましたが、64ビットの一連番号を使用したTCPの新しいバージョンは清潔で、論理的な態度による仮想のサーキットと同様に取引を支持するでしょう。
A potential application of transaction-mode TCP might be SMTP. If commands and responses are batched, in favorable cases complete SMTP delivery operations on short messages could be performed with a single minimal transaction; on the other hand, the body of a message may be arbitrarily large. Using a TCP extended as in this memo could significantly reduce the load on large mail hosts.
取引モードTCPの潜在的アプリケーションはSMTPであるかもしれません。 コマンドと応答がbatchedされるなら、好ましい場合では、短いメッセージにおける完全なSMTP配送操作はただ一つの最小量の取引で実行されるかもしれません。 他方では、メッセージのボディーは任意に大きいかもしれません。 このメモのように広げられたTCPを使用すると、負荷は大きいメールホストでかなり減少するかもしれません。
This work began as an elaboration of the concept of TAO, due to Dave Clark. I am grateful to him and to Van Jacobson, John Wroclawski, Dave Borman, and other members of the End-to-End Research group for helpful ideas and critiques during the long development of this work. I also thank Liming Wei, who tested the initial implementation in Sun OS.
この仕事はデーブ・クラークのためTAOの概念の労作として始まりました。 私は彼と、そして、ヴァン・ジェーコブソンに感謝しています、ジョンWroclawski、デーヴ・ボーマン、そして、Endから終わりへのResearchの他のメンバーは役立っている考えと批評のためにこの仕事の長い開発の間、分類します。 また、私はLimingウェイに感謝します。(ウェイは、Sun OSで初期の実現をテストしました)。
Braden [Page 33] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[33ページ]RFC1379取引TCP--概念1992年11月
APPENDIX A -- TIME-WAIT STATE AND THE 2-PACKET EXCHANGE
付録A--時間待ち状態と2パケットの交換
This appendix considers the implications of reducing TIME-WAIT state delay below that given in formula [2].
この付録は、タイム誌-WAITを減少させる含意が公式[2]で与えられたそれの下に遅れを述べると考えます。
An immediate consequence of this would be the requirement for the server host to accept an initial SYN for a connection in LAST-ACK state. Without the transaction extensions, the arrival of a new <SYN> in LAST-ACK state looks to TCP like a half-open connection, and TCP's rules are designed to restore correspondence by destroying the state (through sending a RST segment) at one end or the other. We would need to thwart this action in the case of transactions.
この即座の結果はサーバー・ホストがLAST-ACK状態での接続のために初期のSYNを受け入れるという要件でしょう。 取引拡大がなければ、新しい<SYN>のLAST-ACK状態への到着は半開きな接続のようにTCPを当てにします、そして、TCPの規則は、片端かもう片方で状態(RSTセグメントを送るのによる)を破壊することによって通信を回復するように設計されています。 私たちは、取引の場合でこの動作を阻む必要があるでしょう。
There are two different possible ways to further reduce TIME-WAIT delay.
タイム誌-WAIT遅れをさらに減少させる2つの異なった可能な方法があります。
(1) Explicit Truncation of TIME-WAIT state
(1) タイム誌-WAIT状態の明白なTruncation
TIME-WAIT state could be explicitly truncated by accepting a new sendto() request for a connection in TIME-WAIT state.
タイム誌-WAIT状態は、タイム誌-WAIT状態での接続を求める新しいsendto()要求を受け入れることによって、明らかに先端を切られるかもしれません。
This would allow the ACK(FIN) segment to be delayed and sent only if a timeout occurs before a new request arrives. This allows an ideal 2-segment exchange for closely-spaced transactions, which would restore some symmetry to the transaction exchange. However, explicit truncation would represent a significant change in many implementations.
新しい要求が到着する前にタイムアウトが起こる場合にだけ、これは、ACK(FIN)セグメントが遅らせて、送られるのを許容するでしょう。 これは密接に区切られた取引への理想的な2セグメントの交換を許容します。(取引は取引交換への何らかの対称を回復するでしょう)。 しかしながら、明白なトランケーションは多くの実現における著しい変化を表すでしょう。
It might be supposed that even greater symmetry would result if the new request segment were a <SYN,ACK> that explicitly acknowledges the previous reply, rather than a <SYN> that is only an implicit acknowledgment. However, the new request segment might arrive at B to find the server side in either LAST-ACK or CLOSED state, depending upon whether the ACK(FIN) had arrived. In CLOSED state, a <SYN,ACK> would not be acceptable. Hence, if the client sent an initial <SYN,ACK> instead of a <SYN> segment, there would be a race condition at the server.
さらに大きい対称が新しい要求セグメントが<SYNであるなら結果として生じると思われるかもしれません、明らかに暗黙の承認であるにすぎない<SYN>よりむしろ前の回答を承諾するACK>。 しかしながら、新しい要求セグメントはLAST-ACKかCLOSEDのどちらかのサーバ側に状態を見つけるためにBに到着するかもしれません、ACK(FIN)が到着したかどうかによって。 CLOSED状態、<SYNでは、ACK>は許容できないでしょう。 したがって、クライアントが初期の<SYN、<SYN>セグメントの代わりにACK>を送るなら、サーバには競合条件があるでしょうに。
(2) No TIME-WAIT delay
(2) タイム誌-WAIT遅れがありません。
TIME-WAIT delay could be removed entirely. This would imply that the ACK(FIN) would always be sent (which does not of course guarantee that it will be received). As a result, the arrival of a new SYN in LAST-ACK state would be rare.
タイム誌-WAIT遅れを完全に取り除くことができました。 これは、ACK(FIN)がいつも送られるのを含意するでしょう(もちろんそれが受け取られるのを保証しません)。 その結果、LAST-ACK状態への新しいSYNの到着はまれでしょう。
This choice is much simpler to implement. Its drawback is that the server will get a false failure report if the ACK(FIN) is
この選択は実行するのがはるかに簡単です。 欠点はACK(FIN)が得るとサーバが誤った異常報告書を得るということです。
Braden [Page 34] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[34ページ]RFC1379取引TCP--概念1992年11月
lost. This may not matter in practice, but it does represent a significant change of TCP semantics. It should be noted that reliable delivery of the reply is not an issue. The client enter TIME-WAIT state only after the entire reply, including the FIN bit, has been received successfully.
無くなる。 これは実際には重要でないかもしれませんが、それはTCP意味論の著しい変化を表します。 回答の信頼できる配信が問題でないことに注意されるべきです。 首尾よくFINビットを含む全体の回答を受け取った後にだけクライアントはタイム誌-WAIT状態に入ります。
The server host B must be certain that a new request received in LAST-ACK state is indeed a new SYN and not an old duplicate; otherwise, B could falsely acknowledge a previous response that has not in fact been delivered to A. If the TAO comparison succeeds, the SYN must be new; however, the server has a dilemma if the TAO test fails.
サーバー・ホストBは本当に、LAST-ACK状態に受け取られた新しい要求が古い写しではなく、新しいSYNであることを確信しているに違いありません。 さもなければ、Bは間違って事実上、TAO比較が引き継ぐA.Ifに渡されていない前の応答を承諾できて、SYNは新しいに違いありません。 しかしながら、サーバには、TAOテストが失敗するなら、ジレンマがあります。
In Figure A.1, for example, the reply segment from the first transaction has been lost; since it has not been acknowledged, it is still in B's retransmission queue. An old duplicate request, segment #3, arrives at B and its TAO test fails. B is in the position of having old state it cannot discard (the retransmission queue) and needing to build new state to pursue a 3-way handshake to validate the new SYN. If the 3-way handshake failed, it would need to restore the earlier LAST-ACK* state. (Compare with Figure 15 "Old Duplicate SYN Initiates a Reset on Two Passive Sockets" in STD-007). This would be complex and difficult to accomplish in many implementations.
図A.1では、例えば、最初の取引からの回答セグメントは失われました。 承認されていないので、それはまだビーズの再送キュー中です。 古い写し要求(セグメント#3)はBに到着します、そして、TAOテストは失敗します。 Bがそれが捨てることができない古い状態(再送キュー)を持って、新しいSYNを有効にするために3ウェイ握手を追求するために新しい状態を造るのが必要であることの位置にあります。 3ウェイ握手が失敗するなら、それは、以前のLAST-ACK*状態を回復する必要があるでしょうに。 (STD-007の「古い写しSYNは2個の受け身のソケットの上にリセットを開始する」という図15と、比較します。) これは、複雑であって、多くの実現で達成するのは難しいでしょう。
TCP A (Client) TCP B (Server) _______________ ______________
TCPは(クライアント)TCP B(サーバ)です。_______________ ______________
CLOSED LISTEN
閉じられて、聴いてください。
1. SYN-SENT* --> <SYN,data1,FIN> --> CLOSE-WAIT* (TAO test OK; data1->server)
1. SYNによって送られた*(><SYN、data1、フィン>)>厳密な待ち*(TAOはOKをテストします;、data1->、サーバ、)
2. (lost) X<-- <SYN,ACK(FIN),data2,FIN> <-- LAST-ACK*
2. (無くなる)です。 X<--<SYN、ACK(フィン)、data2、フィン><--最後のACKの*
(old duplicate) 3. ... <SYN,data3,FIN> --> LAST-ACK* (TAO test fail; 3-way handshake?)
(古い写し) 3。 ... <SYN、data3、フィン>-->の最後のACK*(TAOテストは失敗します; 3ウェイ握手)?
Figure A.1: The Server's Dilemma
A.1は計算します: サーバのジレンマ
The only practical action A can taken when the TAO test fails on a new SYN received in LAST-ACK state is to ignore the SYN, assuming it is really an old duplicate. We must pursue the possible consequences
テストがLAST-ACK状態に受け取られた新しいSYNで失敗するTAOがSYNを無視することになっているなら取って、唯一の実用的な動きAがそうすることができます、それが本当に古い写しであると仮定して。 私たちは可能な結果を追求しなければなりません。
Braden [Page 35] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[35ページ]RFC1379取引TCP--概念1992年11月
of this action.
この動作について。
Section 3.1 listed four possible reasons for failure of the TAO test on a legitimate SYN segment: (1) no cached state, (2) out-of-order delivery of SYNs, (3) wraparound of CCgen relative to the cached value, or (4) the M values advance too slowly. We are assuming that there is a cached CC value at B (otherwise, the SYN cannot be acceptable in LAST-ACK state). Wrapping the CC space is very unlikely and probably impossible; it is difficult to imagine circumstances which would allow the new SYN to be delivered but not the ACK(FIN), especially given the long wraparound time of CCgen.
セクション3.1は正統のSYNセグメントのTAOテストの失敗の4つの可能な理由をリストアップしました: (1) (4) いいえは状態をキャッシュしました、SYNsの(2)の不適切な配送、キャッシュされた値に比例したCCgenの(3)巻きつけて着るドレス、または、Mがあまりにゆっくり進歩を評価します。 私たちは、BにおけるキャッシュされたCC値があると思っています(さもなければ、SYNはLAST-ACK状態で許容できるはずがありません)。 CCスペースを包装するのは、非常にありそうもなくて、たぶん不可能です。 ACK(FIN)ではなく、新しいSYNが届けられるのを許容する事情を想像するのは難しいです、CCgenの長い巻きつけて着るドレス時間を特に考えて。
This leaves the problem of out-of-order delivery of two nearly- concurrent SYNs for different ports. The second to be delivered may have a lower CC option and thus be locked out. This can be solved by using a new CCgen value for every retransmission of an initial SYN.
これは異なったポートのために2の不適切な配送の問題をほとんど同時発生のSYNsに残します。 渡されるべき2番目は、低いCCオプションを持って、その結果、締め出されるかもしれません。 初期のSYNのあらゆる「再-トランスミッション」に新しいCCgen値を使用することによって、これを解決できます。
Truncation of TIME-WAIT state and acceptance of a SYN in LAST-ACK state should take place only if there is a cached CC value for the remote host. Otherwise, a SYN arriving in LAST-ACK state is to be processed by normal TCP rules, which will result in a RST segment from either A or B.
リモートホストのためのキャッシュされたCC値がある場合にだけ、タイム誌-WAIT状態のトランケーションとLAST-ACK状態のSYNの承認は行われるべきです。 さもなければ、LAST-ACK状態に到着するSYNは正常なTCP規則で処理されることになっています。(規則はAかBのどちらかからのRSTセグメントをもたらすでしょう)。
This discussion leads to a paradigm for rejecting old duplicate segments that is different from TAO. This alternative scheme is based upon the following:
この議論は古い写しセグメントを拒絶するためのTAOと異なったパラダイムにつながります。 この代替の計画は以下に基づいています:
(a) Each retransmission of an initial SYN will have a new value of CC, as described above.
(a) 初期のSYNの各「再-トランスミッション」には、CCの新しい値が上で説明されるようにあるでしょう。
This provision takes care of reordered SYNs.
この支給はreordered SYNsの世話をします。
(b) A host maintains a distinct CCgen value for each remote host. This value could easily be maintained in the same cache used for the received CC values, e.g., as cache.CCgen[].
(b) ホストはそれぞれのリモートホストのために異なったCCgen値を維持します。 例えば、容認されたCC値、cache.CCgen[]として使用される同じキャッシュで容易にこの値を維持できました。
Once the caches are primed, it should always be true that cache.CCgen[B] on host A is equal to cache.CC[A] on host B, and the next transaction from A will carry a CC value exactly 1 greater. Thus, there is no problem of wraparound of the CC value.
キャッシュがいったん用意されていると、ホストAの上のcache.CCgen[B]がホストBでcache.CC[A]と等しいのが、いつも本当であるはずであり、Aからの次の取引はキャリーa CC価値によりすばらしい状態でまさに1を望んでいます。 したがって、CC価値の巻きつけて着るドレスの問題が全くありません。
(c) A new SYN is acceptable if its SEG.CC > cache.CC[client], otherwise the SYN is ignored as an old duplicate.
(c) SEG.CC>cache.CC[クライアント]、そうでなければSYNが古い写しとして無視されるなら、新しいSYNは許容できます。
This alternative paradigm was not adopted because it would be a somewhat greater perturbation of TCP rules, because it may not have the robustness of TAO, and because all of its consequences may not be
それはTCP規則のいくらかすごい摂動でしょう、したがって、この代替のパラダイムが採用されませんでした、それにはTAOの丈夫さがないかもしれなくて、また結果のすべてがないかもしれないので
Braden [Page 36] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[36ページ]RFC1379取引TCP--概念1992年11月
understood.
理解にされる。
REFERENCES
参照
[Birrell84] Birrell, A. and B. Nelson, "Implementing Remote Procedure Calls", ACM TOCS, Vo. 2, No. 1, February 1984.
[Birrell84] ビレルとA.とB.ネルソン、「遠隔手続き呼び出しを実行します」、ACMトックス、Vo。 2 1984年2月のNo.1。
[Clark88] Clark, D., "The Design Philosophy of the Internet Protocols", ACM SIGCOMM '88, Stanford, CA, August 1988.
[Clark88] クラーク、D.、「インターネットプロトコルの設計理念」、ACM SIGCOMM88年、スタンフォード、カリフォルニア、1988年8月。
[Clark89] Clark, D., Private communication, 1989.
[Clark89] クラーク、D.、兵士のコミュニケーション、1989。
[Garlick77] Garlick, L., R. Rom, and J. Postel, "Issues in Reliable Host-to-Host Protocols", Proc. Second Berkeley Workshop on Distributed Data Management and Computer Networks, May 1977.
[Garlick77] ガーリック、L.、R.Rom、およびJ.ポステル、「信頼できるホスト間プロトコルの問題」、Proc。 1977年5月の分散データ管理とコンピュータネットワークに関する第2バークレーワークショップ。
[HR-COMM] Braden, R., Ed., "Requirements for Internet Hosts -- Communication Layers", STD-003, RFC-1122, October 1989.
[時間-COMM] ブレーデン、R.、エド、「インターネットホストのための要件--コミュニケーションは層にする」、STD-003、RFC-1122、10月1989日
[Jacobson88] Jacobson, V., "Congestion Avoidance and Control", SIGCOMM '88, Stanford, CA., August 1988.
[Jacobson88] ジェーコブソンと、V.と、「輻輳回避とコントロール」、SIGCOMM88年、スタンフォード(カリフォルニア)、8月1988日
[Jacobson90] Jacobson, V., private communication, 1990.
[Jacobson90] ジェーコブソン、V.、私信、1990。
[Liskov90] Liskov, B., Shrira, L., and J. Wroclawski, "Efficient At-Most-Once Messages Based on Synchronized Clocks", ACM SIGCOMM '90, Philadelphia, PA, September 1990.
[Liskov90] Liskov、B.、Shrira、L.、およびJ.Wroclawski、「効率的である、大部分、一度、メッセージが連動している時計に基づかせた、」、ACM SIGCOMM90年(フィラデルフィア(PA)1990年9月)
[RFC-955] Braden, R., "Towards a Transport Service Transaction Protocol", RFC-955, September 1985.
[RFC-955]ブレーデン、「輸送サービス取引プロトコル」へのR.RFC-955、1985年9月。
[RFC-1185] Jacobson, V., Braden, R., and Zhang, L., "TCP Extension for High-Speed Paths", RFC-1185, October 1990.
1990年10月の[RFC-1185]ジェーコブソンとV.とブレーデン、R.とチャン、L.、「高速経路のためのTCP拡張子」RFC-1185。
[RFC-1263] O'Malley, S. and L. Peterson, "TCP Extensions Considered Harmful", RFC-1263, University of Arizona, October 1991.
[RFC-1263] オマリーとS.とL.ピーターソン、「有害であると考えられたTCP拡張子」、RFC-1263、アリゾナ大学、1991年10月。
[RFC-1323] Jacobson, V., Braden, R., and Borman, D., "TCP Extensions for High Performance, RFC-1323, February 1991.
[RFC-1323] ジェーコブソンとV.とブレーデン、R.とボーマン、D.、「高性能のためのTCP拡張子、RFC-1323、1991年2月。」
[RFC-1337] Braden, R., "TIME-WAIT Assassination Hazards in TCP", RFC-1337, May 1992.
[RFC-1337]ブレーデン(R.、「TCPの時間待ち暗殺危険」、RFC-1337)は1992がそうするかもしれません。
[STD-007] Postel, J., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", STD-007, RFC-793, September 1981.
[STD-007] ポステル、J.、「転送管理は議定書を作ります--DARPAインターネットはプロトコル仕様をプログラムする」STD-007、RFC-793、1981年9月。
Braden [Page 37] RFC 1379 Transaction TCP -- Concepts November 1992
ブレーデン[37ページ]RFC1379取引TCP--概念1992年11月
[TTCP-FS] Braden, R., "Transaction TCP -- Functional Specification", Work in Progress, September 1992.
[TTCP-FS]ブレーデン、R.、「取引TCP--、機能的な仕様、」、9月1992、進行中で、働いてください。
[Watson81] Watson, R., "Timer-based Mechanisms in Reliable Transport Protocol Connection Management", Computer Networks, Vol. 5, 1981.
[Watson81] ワトソン、R.、「信頼できるトランスポート・プロトコル接続管理におけるタイマベースのメカニズム」、コンピュータネットワーク、Vol.5、1981。
Security Considerations
セキュリティ問題
Security issues are not discussed in this memo.
このメモで安全保障問題について議論しません。
Author's Address
作者のアドレス
Bob Braden University of Southern California Information Sciences Institute 4676 Admiralty Way Marina del Rey, CA 90292
ボブブレーデン南カリフォルニア情報Sciences Institute大学4676海軍本部Wayマリナデルレイ、カリフォルニア 90292
Phone: (310) 822-1511 EMail: Braden@ISI.EDU
以下に電話をしてください。 (310) 822-1511 メールしてください: Braden@ISI.EDU
Braden [Page 38]
ブレーデン[38ページ]
一覧
スポンサーリンク