Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/TCP/IP編


付録G ソケット関数の処理の流れ

ここでは,次の場合にTP1/NET/TCP/IPが発行するソケット関数の処理の流れを示します。

TCP/IPソケットと相手システム間のパケット送受信のタイミングはTP1/NET/TCP/IPが動作するOSの実装に依存します。実装によっては,実際のパケット送受信のタイミングが,図に示したパケット送受信のタイミングと異なる場合があります。

なお,バージョン5以前でのソケット関数の処理の流れについては,「付録B.3 バージョン5以前でのソケット関数の処理の流れ」を参照してください。

図G‒1 クライアント型コネクションの確立

[図データ]

(凡例)

ACK:確認応答フラグ

SYN:コネクション確立要求フラグ

注※1

コネクション確立要求は,運用コマンド(mcftactcn)の入力,またはAPI(dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△'))の発行で行います。

注※2

キープアライブを使用する場合(コネクション定義(mcftalccn -k)のkeepaliveオペランドにyesを指定),発行します。

注※3

TCP_NODELAYを使用する場合(コネクション定義(mcftalccn -k)のnodelayオペランドにyesを指定),発行します。

注※4

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行します。

注※5

自システムのポート番号を指定した場合,発行します。

注※6

自システムのホスト名,IPアドレスまたはポート番号を指定した場合,発行します。

図G‒2 クライアント型コネクションの確立障害(相手システムのサービス未起動の場合)

[図データ]

(凡例)

SYN:コネクション確立要求フラグ

RST:コネクション強制切断フラグ

注※1

コネクション確立要求は,運用コマンド(mcftactcn)の入力,またはAPI(dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△'))の発行で行います。

注※2

キープアライブを使用する場合(コネクション定義(mcftalccn -k)のkeepaliveオペランドにyesを指定),発行します。

注※3

同じ処理を行います。

注※4

TCP_NODELAYを使用する場合(コネクション定義(mcftalccn -k)のnodelayオペランドにyesを指定),発行します。

注※5

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行します。

注※6

自システムのポート番号を指定した場合,発行します。

注※7

自システムのホスト名,IPアドレスまたはポート番号を指定した場合,発行します。

注※8

最大でコネクション確立障害時の確立再試行回数(コネクション定義(mcftalccn -b)のbretrycntオペランドの指定値)だけ繰り返します。

注※9

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行しません。

注※10

コネクション確立障害時の確立再試行間隔(コネクション定義(mcftalccn -b)のbretryintオペランドの指定値)だけ待ち合わせます。

図G‒3 クライアント型コネクションの確立障害(相手システム未起動またはネットワーク障害)

[図データ]

(凡例)

SYN:コネクション確立要求フラグ

注※1

コネクション確立要求は,運用コマンド(mcftactcn)の入力,またはAPI(dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△'))の発行で行います。

注※2

キープアライブを使用する場合(コネクション定義(mcftalccn -k)のkeepaliveオペランドにyesを指定),発行します。

注※3

同じ処理を行います。

注※4

TCP_NODELAYを使用する場合(コネクション定義(mcftalccn -k)のnodelayオペランドにyesを指定),発行します。

注※5

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行します。

注※6

自システムのポート番号を指定した場合,発行します。

注※7

自システムのホスト名,IPアドレスまたはポート番号を指定した場合,発行します。

注※8

コネクション確立監視時間(コネクション定義(mcftalccn -b)のconcmptimオペランドの指定値),またはTCP/IPソケットが確立障害を検出するまで待ち合わせます。

注※9

最大でコネクション確立障害時の確立再試行回数(コネクション定義(mcftalccn -b)のbretrycntオペランドの指定値)だけ繰り返します。

注※10

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行しません。

注※11

コネクション確立障害時の確立再試行間隔(コネクション定義(mcftalccn -b)のbretryintオペランドの指定値)だけ待ち合わせます。

図G‒4 サーバ型コネクションの確立

[図データ]

(凡例)

ACK:確認応答フラグ

SYN:コネクション確立要求フラグ

注※1

コネクション確立要求の受付開始は,運用コマンド(mcftonln)の入力,またはAPI(dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△'))の発行で行います。

注※2

キープアライブを使用する場合(コネクション定義(mcftalccn -k)のkeepaliveオペランドにyesを指定),発行します。

注※3

TCP_NODELAYを使用する場合(コネクション定義(mcftalccn -k)のnodelayオペランドにyesを指定),発行します。

注※4

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行します。

図G‒5 サーバ型コネクションの確立拒否

[図データ]

(凡例)

ACK:確認応答フラグ

FIN:通信終了フラグ

SYN:コネクション確立要求フラグ

注※1

コネクション確立要求の受付開始は,運用コマンド(mcftonln)の入力,またはAPI(dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△'))の発行で行います。

注※2

次の条件のどれかに該当する場合,コネクションの確立を拒否します。

  • 未定義の相手システムからの確立要求を受信した場合

  • 空きコネクション(ポートフリーまたは相手アドレスチェックの抑止を指定した未確立コネクション)がない状態で確立要求を受信した場合

  • コネクション確立UOCで確立要求を拒否した場合

注※3

パケットの送受信は,TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは,相手システムからのACKおよびFINを待ち合わせません。

図G‒6 メッセージ送信

[図データ]

(凡例)

ACK:確認応答フラグ

PSH:プッシュフラグ

注※

パケットの送受信は,TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは,相手システムからのACKを待ち合わせません。

図G‒7 メッセージ送信の再試行

[図データ]

(凡例)

ACK:確認応答フラグ

PSH:プッシュフラグ

注※1

TCP/IPソケットの送信バッファが満杯の場合,送信バッファに空き領域ができるまでメッセージ送信を待ち合わせます。

注※2

コネクション定義に指定したメッセージ送信完了監視時間(mcftalccn -b sndcmptim)だけ送信処理を監視します。送達確認機能を使用する場合は,メッセージ送信成功後に相手システムからの送達確認メッセージの受信までを監視します。

注※3

パケットの送受信は,TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは,相手システムからのACKを待ち合わせません。

図G‒8 メッセージ受信

[図データ]

(凡例)

ACK:確認応答フラグ

PSH:プッシュフラグ

図G‒9 自システムからのコネクションの解放(FIN)

[図データ]

(凡例)

ACK:確認応答フラグ

FIN:通信終了フラグ

注※1

コネクション解放要求は,運用コマンド(mcftdctcn)の入力,またはAPI(dc_mcf_tdctcn関数もしくはCBLDCMCF('TDCTCN△△'))の発行で行います。

注※2

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行します。

注※3

パケットの送受信は,TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは,相手システムからのACKおよびFINを待ち合わせません。

注※4

OpenTP1終了時のコネクション解放では,CCLSEVTは発行されません。

図G‒10 自システムからのコネクションの解放(RST)

[図データ]

(凡例)

RST:コネクション強制切断フラグ

注※

コネクション強制解放要求は,コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定したときに,運用コマンド(mcftdctcn -f)の入力,またはAPI(action引数にDCMCFFRCを指定したdc_mcf_tdctcn関数もしくはデータ名D1に'1'を指定したCBLDCMCF('TDCTCN△△'))の発行で行います。

図G‒11 相手システムからのコネクションの解放(FIN)

[図データ]

(凡例)

ACK:確認応答フラグ

FIN:通信終了フラグ

注※1

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行します。

注※2

パケットの送受信は,TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは,相手システムからのACKを待ち合わせません。

図G‒12 相手システムからのコネクションの解放(RST)

[図データ]

(凡例)

RST:コネクション強制切断フラグ

注※

障害などによるコネクション解放時にRSTパケットを送信する場合(コネクション定義(mcftalccn -f)のcnreleaseオペランドにrstを指定),発行しません。