- 締切済み
UNIXのカーネルについて
keep alive option ってものが一体何をあらわしているのか調べましたがわかりませんでした。ご存知の方いたら、詳細をお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 1Yen
- ベストアンサー率28% (11/39)
例えばWindowsから、TelnetでSolarisに繋ぎます。 KEEP ALIVE が設定されていれば、時々メッセージが交換されて、生きているか確認します。 # telnet で login したまま家に帰ってもデータは # 流れます。 ここで、Windowsが 落ちた場合 KEEP ALIVE が、返ってこなくなるので in.telnetd は、相手がいなくなったと判断して終了します。 KEEP ALIVE が、指定されていないと 相手が落ちたのを知る術が無くて いつまでも、in.telnetd は動き続けたままです。 # Solarisが、落ちれば勿論 Windows の telnet が # 気付く/気付かない の差になるでしょうが、こち # らは普通、どうでもいい。 と、どこか昔の本で読んだ記憶があります。
- punchan_jp
- ベストアンサー率55% (155/280)
必要とはどういう意味でしょう? どういう文脈で選択を迫られているのですか? 何かプログラムを書いているのでしたら、相手との接続が長時間ダ ウンしたときにコネクションを切っておきたい場合にそのオプショ ンを setsockopt() で設定してやるだけです。そうしたいかどうか は基本的にはそのアプリケーションしだいです。 ただ、Solarisは知りませんが、OSによっては、全てのTCPコネクショ ンに強制的に KEEPALIVE を設定できる機能をもつものもあります。 この場合、ソケットにどんなオプションを設定しようと、 KEEPALIVE となります。それをするかどうかの選択があるのでした ら、デフォルトがあるなら普通はそちらでいいし、そうじゃない場 合でも、たぶん KEEPALIVE にしておく方がいいでしょうね。 サーバーとして動かしていて、相手が電源を切るなどした場合に、 プロセスが残り続けるのは好ましくないでしょうから。
- punchan_jp
- ベストアンサー率55% (155/280)
ソケットを利用してTCPコネクションを張るときに、ソケットに与 えるオプションです。 KEEP ALIVE とは、生きていることを保つというわけで、そのコネ クションが生きている(相手がつながっている)ことをときどき確 認します。もし、ある一定時間生きていることが確認できないと、 そのコネクションは切断され、ソケットの所有者に通知されます。
補足
solaris2.6でも必要なのでしょうか?