メッセージの送達確認には,UAPで実装する方法とTP1/NET/TCP/IPが提供する送達確認機能を使用する方法があります。
UAPで実装する場合,メッセージ送達の確認は,あらかじめ相手システムと自システムのUAPとの間で送達確認のためのメッセージ形式を取り決めておき,送達確認メッセージの送受信によって行います。メッセージ送達確認の例を次の図に示します。
図2-49 メッセージ送達確認の例
TP1/NET/TCP/IPが提供する送達確認機能には,DCCMII/TCPおよびDCCM3/TCP(以降,DCCMII/TCPおよびDCCM3/TCPのメッセージ送達確認機能をサポートした相手システムをDCCMと呼びます)のメッセージ送達確認のプロトコルに従ったメッセージ送達確認と,任意の相手システムとのメッセージ送達確認があります。
DCCMのメッセージ送達確認のプロトコルに従って,メッセージ送受信を行います。UAPは応答専用データ(DCCMのメッセージ送達確認機能で使用される送達確認メッセージ)を意識する必要はありません。
DCCMと接続し,メッセージ送達確認機能を使用する場合,TP1/NET/TCP/IPの定義とDCCMの定義を対応させる必要があります。対応させる内容の詳細については,「6. システム定義」の「DCCMII/TCPおよびDCCM3/TCPの通信定義との関係」を参照してください。
DCCMへの一方送信時の処理の流れを,dc_mcf_send関数を使用する場合を例に,次の図に示します。
図2-50 DCCMへの一方送信時の処理の流れ
TP1/NET/TCP/IPは,受信した応答専用データをUAPに通知しません。
コネクション定義のメッセージ送信完了監視時間(mcftalccn -b sndcmptim)を指定している場合,メッセージ送信から応答専用データの受信までを監視できます。応答専用データの受信監視時間がタイムアウトした場合,CERREVTを起動します。このとき,送信メッセージは出力キューに戻されます。
DCCMからの一方受信時の処理の流れを,dc_mcf_receive関数を使用する場合を例に,次の図に示します。
図2-51 DCCMからの一方受信時の処理の流れ
TP1/NET/TCP/IPとDCCM間で送受信するメッセージの形式を次の図に示します。
図2-52 TP1/NET/TCP/IPとDCCM間での送受信メッセージの形式
メッセージ送達確認機能を使用する場合,メッセージ長,セグメント情報,メッセージIDはTP1/NET/TCP/IPが自動的に付加・削除します。
表2-7 セグメントの種類と応答要求の種類
セグメントの種類 | 応答要求の種類 | 格納値※ | |
---|---|---|---|
TP1/NET/TCP/IPからの送信 | DCCMからの送信 | ||
単一セグメント | 応答不要 | - | (10)16 |
自動応答要求 | (18)16 | (18)16 |
DCCMのプロトコルではセグメント情報に単一セグメントと複数セグメントを設定できますが,TP1/NET/TCP/IPは単一セグメントだけをサポートします。DCCMから複数セグメントのメッセージを受信した場合,TP1/NET/TCP/IPは不正データと見なしてコネクションを解放します。
TP1/NET/TCP/IPとDCCM間で送受信する応答専用データの形式を次の図に示します。
図2-53 応答専用データの形式
TP1/NET/TCP/IPのメッセージ送信と,DCCMのメッセージ送信が衝突した場合の処理の流れについては,「付録F 送受信メッセージの衝突時の処理の流れ(メッセージ送達確認機能使用時)」を参照してください。
受信メッセージ判定UOCを使用し,TP1/NET/TCP/IPが受信したメッセージが送達確認メッセージかどうかを判定することで,任意の相手システムとのメッセージ送達確認を行うことができます。
受信メッセージ判定UOCを使用した任意の相手システムとのメッセージ送達確認では,受信メッセージ判定UOCのmsg_typeに指定したメッセージの種別によって,処理が異なります。
メッセージの種別には,次の種別があります。
種別ごとに,処理の流れを説明します。
相手システムへの一方送信時の処理の流れを次の図に示します。
図2-54 相手システムへの一方送信時の処理の流れ(DCTCP_UOC_MR_MT_ACK)
コネクション定義のメッセージ送信完了監視時間(mcftalccn -b sndcmptim)を指定している場合,メッセージ送信から送達確認メッセージの受信までを監視できます。メッセージ送信完了監視時間がタイムアウトした場合,CERREVTを起動します。このとき,送信メッセージは出力キューに戻されます。
相手システムからの一方受信時の処理の流れを次の図に示します。
図2-55 相手システムからの一方受信時の処理の流れ(DCTCP_UOC_MR_MT_INFO)
受信メッセージ判定UOCで,メッセージ種別にコネクション解放を設定した場合,TP1/NET/TCP/IPは受信したメッセージをUAPに通知しないで破棄し,メッセージログ(KFCA14850-I)を出力してコネクションを解放し,CERREVTを起動します。このとき,送信処理中のメッセージは出力キューに残ります。
受信メッセージ判定UOCで,メッセージ種別に破棄メッセージを設定した場合,TP1/NET/TCP/IPはメッセージログ(KFCA14849-I)を出力して,受信したメッセージをUAPに通知しないで破棄します。コネクション確立状態を維持したまま受信したメッセージをUAPに通知させない場合に指定してください。
TP1/NET/TCP/IPのメッセージ送信と,相手システムのメッセージ送信が衝突した場合の処理の流れについては,「付録F 送受信メッセージの衝突時の処理の流れ(メッセージ送達確認機能使用時)」を参照してください。