2.2.6 ハンドシェイク

ハンドシェイクとは,システム間で同期を取ってデータを処理するための機能です。同期用の処理をユーザ側で設定する必要がないため,処理を軽減できます。

ハンドシェイク要求は,全二重の場合コンテンションでの優先権に関係なく,どちらのシステムからでも発行できます。半二重の場合制御権のある側だけが発行できます。

相手システムからハンドシェイク要求を受けると,TP1/NET/OSI-TPはメッセージを編集し,UAPに渡します。UAPは同期合わせをしたあと,相手システムにハンドシェイク応答(TP-HANDSHAKE)を送信します。要求を拒否する場合は,ハンドシェイクの拒否応答(TP-U-ERROR)を送信します。このとき制御権は移動します。

TP1/NET/OSI-TPがハンドシェイクの要求を受信した場合の処理を,次の図に示します。

図2-20 ハンドシェイク

[図データ]

注※
同期が取れなかった場合,UAPはハンドシェイクを拒否します。TP1/NET/OSI-TPは,相手システムにハンドシェイク拒否応答を返します。

なお,半二重の場合ハンドシェイクが完了しても制御権は移動しません。

半二重通信の場合,制御権委譲とハンドシェイクをまとめて一度に処理できます。相手システムから制御権委譲付きハンドシェイク(TP-HANDSHAKE-AND-GRANT-CONTROL)の要求を受けると,TP1/NET/OSI-TPはメッセージを編集し,制御権委譲付きハンドシェイク(TP-HANDSHAKE-AND-GRANT-CONTROL)の指示をUAPに渡します。UAPは受諾する場合,sendsyncで制御権委譲付きハンドシェイクの応答(TP-HANDSHAKE-AND-GRANT-CONTROL)を送信します。また,要求を拒否する場合は,制御権委譲付きハンドシェイクの拒否応答(TP-U-ERROR)を送信します。制御権は応答の内容に関係なく移動します。制御権委譲付きハンドシェイクの処理を次の図に示します。

図2-21 制御権委譲付きハンドシェイク

[図データ]

注※
同期が取れなかった場合,UAPは制御権委譲付きハンドシェイクを拒否します。TP1/NET/OSI-TPは,相手システムに制御権委譲付きハンドシェイクの拒否応答を返します。