IpSecManager.ApplyTransportModeTransform メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| ApplyTransportModeTransform(FileDescriptor, IpSecTransportDirection, IpSecTransform) |
ソケットに IPsec 変換を適用します。 |
| ApplyTransportModeTransform(DatagramSocket, IpSecTransportDirection, IpSecTransform) |
データグラム ソケットに IPsec 変換を適用します。 |
| ApplyTransportModeTransform(Socket, IpSecTransportDirection, IpSecTransform) |
ストリーム ソケットに IPsec 変換を適用します。 |
ApplyTransportModeTransform(FileDescriptor, IpSecTransportDirection, IpSecTransform)
ソケットに IPsec 変換を適用します。
[Android.Runtime.Register("applyTransportModeTransform", "(Ljava/io/FileDescriptor;ILandroid/net/IpSecTransform;)V", "GetApplyTransportModeTransform_Ljava_io_FileDescriptor_ILandroid_net_IpSecTransform_Handler", ApiSince=28)]
public virtual void ApplyTransportModeTransform(Java.IO.FileDescriptor socket, Android.Net.IpSecTransportDirection direction, Android.Net.IpSecTransform transform);
[<Android.Runtime.Register("applyTransportModeTransform", "(Ljava/io/FileDescriptor;ILandroid/net/IpSecTransform;)V", "GetApplyTransportModeTransform_Ljava_io_FileDescriptor_ILandroid_net_IpSecTransform_Handler", ApiSince=28)>]
abstract member ApplyTransportModeTransform : Java.IO.FileDescriptor * Android.Net.IpSecTransportDirection * Android.Net.IpSecTransform -> unit
override this.ApplyTransportModeTransform : Java.IO.FileDescriptor * Android.Net.IpSecTransportDirection * Android.Net.IpSecTransform -> unit
パラメーター
- socket
- FileDescriptor
ソケット ファイル記述子
- direction
- IpSecTransportDirection
変換を適用する方向
- transform
- IpSecTransform
トランスポート モード IpSecTransform
- 属性
注釈
これにより、特定のソケットにトランスポート モードカプセル化が適用されます。 適用されると、ソケットの I/O は、 IpSecTransformのパラメーターに従ってカプセル化されます。
#removeTransportModeTransformsを呼び出して変換がソケットから削除されると、そのソケットで保護されていないトラフィックが再開される可能性があります。
セキュリティ上の理由から、ソケット上のトラフィックの宛先アドレスは、InetAddressのリモート IpSecTransformと一致する必要があります。 他の IP アドレスにトラフィックを送信しようとすると、IOException が発生します。 さらに、ユーザーが ( IpSecTransform#close() を呼び出して) #removeTransportModeTransformsを呼び出さずに変換を非アクティブ化すると、ソケットでの読み取りと書き込みによって IOException がスローされます。
TCP ソケットに適用すると、グレースフル シャットダウンが完了する前に適用された変換に対して IpSecTransform#close() を呼び出すと、シャットダウン シーケンスの完了に失敗する可能性があることに注意してください。 そのため、正常なシャットダウンを必要とするアプリケーションは、適用された変換を非アクティブ化する前にソケットを閉じる必要があります。 ソケット クロージャは非同期的に (バッチで) 実行される可能性があるため、close 関数を返してもソケットのシャットダウンは保証されません。 SO_LINGERタイムアウトを設定すると、ソケットクロージャが同期的に実行され、シャットダウンを確保するのに十分です。
具体的には、変換が非アクティブ化されている場合 ( IpSecTransform#close()呼び出しによって)、ソケットが閉じられる前に、標準の [FIN - FIN/ACK - ACK]、またはリセット [RST] パケットは、有効な変換がないために破棄されます。 同様に、SO_LINGER オプションが設定されていないソケットを閉じると、遅延/バッチ FIN パケットが破棄される可能性があります。
<h4>Rekey プロシージャ</h4>
送信方向のソケットに新しい変換フォームを適用すると、前の変換が削除され、新しい変換がすぐに有効になり、新しい変換のすべてのトラフィックが送信されます。ただし、受信方向に変換を適用する場合、古い変換のトラフィックは、 IpSecTransform#close()を呼び出して変換の割り当てが解除されるまで復号化され、配信され続けます。 この重複により、両方のエンドポイントが新しい変換を使用し、すべてのインフライト パケットを受信するまで、両方の変換が有効な無損失のキー更新手順が可能になります。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
ApplyTransportModeTransform(DatagramSocket, IpSecTransportDirection, IpSecTransform)
データグラム ソケットに IPsec 変換を適用します。
[Android.Runtime.Register("applyTransportModeTransform", "(Ljava/net/DatagramSocket;ILandroid/net/IpSecTransform;)V", "GetApplyTransportModeTransform_Ljava_net_DatagramSocket_ILandroid_net_IpSecTransform_Handler", ApiSince=28)]
public virtual void ApplyTransportModeTransform(Java.Net.DatagramSocket socket, Android.Net.IpSecTransportDirection direction, Android.Net.IpSecTransform transform);
[<Android.Runtime.Register("applyTransportModeTransform", "(Ljava/net/DatagramSocket;ILandroid/net/IpSecTransform;)V", "GetApplyTransportModeTransform_Ljava_net_DatagramSocket_ILandroid_net_IpSecTransform_Handler", ApiSince=28)>]
abstract member ApplyTransportModeTransform : Java.Net.DatagramSocket * Android.Net.IpSecTransportDirection * Android.Net.IpSecTransform -> unit
override this.ApplyTransportModeTransform : Java.Net.DatagramSocket * Android.Net.IpSecTransportDirection * Android.Net.IpSecTransform -> unit
パラメーター
- socket
- DatagramSocket
データグラム ソケット
- direction
- IpSecTransportDirection
変換を適用する方向
- transform
- IpSecTransform
トランスポート モード IpSecTransform
- 属性
注釈
これにより、特定のソケットにトランスポート モードカプセル化が適用されます。 適用されると、ソケットの I/O は、 IpSecTransformのパラメーターに従ってカプセル化されます。
#removeTransportModeTransformsを呼び出して変換がソケットから削除されると、そのソケットで保護されていないトラフィックが再開される可能性があります。
セキュリティ上の理由から、ソケット上のトラフィックの宛先アドレスは、InetAddressのリモート IpSecTransformと一致する必要があります。 他の IP アドレスにトラフィックを送信しようとすると、IOException が発生します。 さらに、ユーザーが ( IpSecTransform#close() を呼び出して) #removeTransportModeTransformsを呼び出さずに変換を非アクティブ化すると、ソケットでの読み取りと書き込みによって IOException がスローされます。
<h4>Rekey プロシージャ</h4>
送信方向のソケットに新しい変換フォームを適用すると、前の変換が削除され、新しい変換がすぐに有効になり、新しい変換のすべてのトラフィックが送信されます。ただし、受信方向に変換を適用する場合、古い変換のトラフィックは、 IpSecTransform#close()を呼び出して変換の割り当てが解除されるまで復号化され、配信され続けます。 この重複により、両方のエンドポイントが新しい変換を使用し、すべてのインフライト パケットを受信するまで、両方の変換が有効な無損失のキー更新手順が可能になります。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
ApplyTransportModeTransform(Socket, IpSecTransportDirection, IpSecTransform)
ストリーム ソケットに IPsec 変換を適用します。
[Android.Runtime.Register("applyTransportModeTransform", "(Ljava/net/Socket;ILandroid/net/IpSecTransform;)V", "GetApplyTransportModeTransform_Ljava_net_Socket_ILandroid_net_IpSecTransform_Handler", ApiSince=28)]
public virtual void ApplyTransportModeTransform(Java.Net.Socket socket, Android.Net.IpSecTransportDirection direction, Android.Net.IpSecTransform transform);
[<Android.Runtime.Register("applyTransportModeTransform", "(Ljava/net/Socket;ILandroid/net/IpSecTransform;)V", "GetApplyTransportModeTransform_Ljava_net_Socket_ILandroid_net_IpSecTransform_Handler", ApiSince=28)>]
abstract member ApplyTransportModeTransform : Java.Net.Socket * Android.Net.IpSecTransportDirection * Android.Net.IpSecTransform -> unit
override this.ApplyTransportModeTransform : Java.Net.Socket * Android.Net.IpSecTransportDirection * Android.Net.IpSecTransform -> unit
パラメーター
- socket
- Socket
ストリーム ソケット
- direction
- IpSecTransportDirection
変換を適用する方向
- transform
- IpSecTransform
トランスポート モード IpSecTransform
- 属性
注釈
これにより、特定のソケットにトランスポート モードカプセル化が適用されます。 適用されると、ソケットの I/O は、 IpSecTransformのパラメーターに従ってカプセル化されます。
#removeTransportModeTransformsを呼び出して変換がソケットから削除されると、そのソケットで保護されていないトラフィックが再開される可能性があります。
セキュリティ上の理由から、ソケット上のトラフィックの宛先アドレスは、InetAddressのリモート IpSecTransformと一致する必要があります。 他の IP アドレスにトラフィックを送信しようとすると、IOException が発生します。 さらに、ユーザーが ( IpSecTransform#close() を呼び出して) #removeTransportModeTransformsを呼び出さずに変換を非アクティブ化すると、ソケットでの読み取りと書き込みによって IOException がスローされます。
TCP ソケットに適用すると、グレースフル シャットダウンが完了する前に適用された変換に対して IpSecTransform#close() を呼び出すと、シャットダウン シーケンスの完了に失敗する可能性があることに注意してください。 そのため、正常なシャットダウンを必要とするアプリケーションは、適用された変換を非アクティブ化する前にソケットを閉じる必要があります。 ソケット クロージャは非同期的に (バッチで) 実行される可能性があるため、close 関数を返してもソケットのシャットダウンは保証されません。 SO_LINGERタイムアウトを設定すると、ソケットクロージャが同期的に実行され、シャットダウンを確保するのに十分です。
具体的には、変換が非アクティブ化されている場合 ( IpSecTransform#close()呼び出しによって)、ソケットが閉じられる前に、標準の [FIN - FIN/ACK - ACK]、またはリセット [RST] パケットは、有効な変換がないために破棄されます。 同様に、SO_LINGER オプションが設定されていないソケットを閉じると、遅延/バッチ FIN パケットが破棄される可能性があります。
<h4>Rekey プロシージャ</h4>
送信方向のソケットに新しい変換フォームを適用すると、前の変換が削除され、新しい変換がすぐに有効になり、新しい変換のすべてのトラフィックが送信されます。ただし、受信方向に変換を適用する場合、古い変換のトラフィックは、 IpSecTransform#close()を呼び出して変換の割り当てが解除されるまで復号化され、配信され続けます。 この重複により、両方のエンドポイントが新しい変換を使用し、すべてのインフライト パケットを受信するまで、両方の変換が有効な無損失のキー更新手順が可能になります。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。