ソケットオプションSO_KEEPALIVEを有効にしていると、通信が無い状態が一定時間続いた場合、ピアの生存確認のためにKeepAliveパケットが送られるということは分かりました。Linuxの場合だと下記のパラメータから、
- 2時間通信が無い場合に
- 75秒間隔でKeepAliveパケットを送り
- 9回連続で応答が無い場合にコネクションを切断する
となると思います。
net.ipv4.tcp_keepalive_intvl = 75 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_time = 7200
これらのパラメータはソケットオプションTCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNTにより、ソケット毎にも設定できるそうです。
では、SO_KEEPALIVEが無効の場合(Linuxではデフォルト)、通信が無い状態が一定時間続くとどうなるのでしょうか?
KeepAliveパケットを送ることなしに必ずコネクションを閉じるのでしょうか?その時間は tcp_keepalive_time
の値で決まるのでしょうか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/08 16:24
2018/01/09 03:00