上位プログラムは,相手のユーザ通信エンティティとの間でのデータ転送の完了に伴い,アソシエーションを解放(非活性化)します。上位プログラムがACSEのユーザデータを送受信することによって,アソシエーションを解放します。
アソシエーションを解放するには,正常解放と強制解放の二つの方法があります。
正常解放では,両方のユーザ通信エンティティが合意した場合にアソシエーションを解放します。通常は,この方式でアソシエーションの解放を行います。
上位プログラムは,自分からアソシエーションを解放する場合,相手のユーザ通信エンティティに対して解放要求(DISABLE)を行います。その後,相手のユーザ通信エンティティから受諾応答を受け取り,アソシエーションの解放が完了します。
相手のユーザ通信エンティティから解放する場合は,アソシエーションの解放要求を受けた(RECEIVEで受信)時点で,受諾応答(DISABLE)を返します。そこでアソシエーションの解放が完了します。
強制解放では,どちらかのユーザ通信エンティティがアソシエーションを強制的に解放(アボート)します。上位プログラムが自分からアソシエーションを強制的に解放する場合は,相手のユーザ通信エンティティに対して強制解放要求(DISABLE)を行います。この方式の場合は,相手のユーザ通信エンティティから受諾応答を待つ必要はありません。相手のユーザ通信エンティティからの強制解放の場合は,強制解放要求を受けた(RECEIVEで受信)時点でアソシエーションは解放されています。
この場合は,非活性化(DISABLE)要求でアソシエーションが解放状態であることをOSI通信機能に知らせます。
なお,アソシエーション強制解放は,上位プログラムのほかに,OSI通信機能がする場合もあります。これを「提供者アボート」といい,上位プログラムのアボート「利用者アボート」と区別しています。
OSI通信機能がする場合も,アソシエーション強制解放を受けた(RECEIVEで受信)時点でアソシエーションは解放されています。非活性化(DISABLE)要求でアソシエーションが解放状態であることをOSI通信機能に知らせます。
アソシエーションの解放手順(同期型の場合)を図3-3に,アソシエーションの解放手順(非同期型の場合)を図3-4に示します。
図3-3 アソシエーションの解放手順(同期型の場合)
図3-4 アソシエーションの解放手順(非同期型の場合)