■ TCPパケットのRSTフラグが1になる条件について
本デバイスを問わず、TCPでは相手との通信を切断する時、FINやRTSを使います。 本デバイスがRSTパケットを相手側に送信する時は、主に次のような要因があります。
(1).KeepAliveパケットの応答がない 本デバイスはTCPのセッションが確立されるとリモートデバイスに対して15秒に1回程度の間隔で相手先デバイスとの接続が有効であるか確認するためキープアライブパケットを送信します。 リモートデバイスが応答を返さない場合、リモートデバイスは応答なしと判断してRSTパケットを発行して接続を切断します。
(2).セッション確立後60分(1時間以上)有意なUART通信(PSHパケット)がない場合(デフォルト設定) 本デバイスとリモートデバイスがセッション確立後、60分間に有意なUART通信によるTCP通信がない場合、本デバイスはリソースを開放するため、そのリモートデバイスとの通信は長時間にわたり通信がないデバイスとして判断してRSTパケットを送信し接続を切断します。
この時間は設定により60秒〜8640000秒(2400時間=100日)の間で設定できます。 設定は、本デバイスにブラウザからアクセスして次のように設定します。
1.本デバイスへwebブラウザでアクセス。 ※ログインIDとパスワードは、デフォルトでは admin です。
2."Misc Config"のページへ移動。
3."Reset Timeout"の項目に60〜8640000の値(単位:秒)を入力
4."Save"で保存
但し、ここで無通信時間のコネクション維持時間を指定できますが、1時間以上無通信というのはセキュリティ上もよくなくいため、通常は少ない時間にした方が安全です。 UART通信の頻度が少ないような環境ではUART通信する度にセッション確立→セッション終了を繰り返すようにします。できれば、デフォルト設定値の3600秒(1時間)で使用されることをおすすめしています。
なお、60分の間に1回でもリモートデバイスとシリアル通信をすれば(TCPのkeepalive以外)この時間はリセットされ、再度カウントを開始します。
(3).パケットロスなどネットワークに障害が発生した場合 ネットワークで通信ができなくなったりして(1)のキープアライブパケットに対するACKを受信できなかったり、通信不良で通信のシーケンスが合わなくなった場合などネットワークに障害がある時、RSTパケットが送信されます。
※RSTパケットが送信された場合にはセッションは破棄されますので、再度セッションの確立をする必要があります。データ交換の度にセッションの「確立→切断」をした方が確実です。 どうしてもセッションを長時間確立し続けるような使い方をする場合には、実データ送信に先立ちCR(0Dh)等の"害のなさそうな"データ(双方で無視できると決められている)を送信してみて、パケットを監視してください。送信後にRSTパケットが送信されてくるようならば、セッションは一度破棄(切断)して再度、セッションを確立した後に実データを送信するようにします。
|