linux - 如何验证 TCP 在 Linux 上保持事件状态

标签 linux networking tcp amazon-redshift

我想在我的 linux 机器上设置 tcp keep alive。所以我正在做的是运行一个脚本

if [ `/sbin/sysctl -n net.ipv4.tcp_keepalive_time` != 200 ] ; then
   /sbin/sysctl -w net.ipv4.tcp_keepalive_time=200;

但我仍然无法与亚马逊的 Redshift 联系起来。有人可以帮我看看如何检查 tcp keep alive 是否真的设置了吗?

最佳答案

要检查 keep alive 是否处于事件状态,请打开一个连接,不要交换任何数据,并使用 tcpdump 或类似工具验证数据包是否在连接上定期交换,即使没有真正的数据交换。

但也许你只是把 keep-alive 和 timeout 搞混了:

  • 保持事件状态:检测连接是否仍处于事件状态,例如如有必要,可以交换这些数据。这将检测网络连接丢失等。保持事件在 TCP 层完成。
  • 超时:连接在一些不活动后关闭。这是在应用层完成的。

在这两种情况下,您都不会检测到问题,直到您尝试在套接字上读取或写入。

关于linux - 如何验证 TCP 在 Linux 上保持事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24428598/

相关文章:

linux - 以 "#"开头的字符串的 Bash 长度

linux - 从 Linux 命令行处理复杂的 CSV

linux - 在bash中提取没有路径和扩展名的文件基名

c# - 检查客户端是否正在尝试连接?

php - 远程 Ratchet 连接

vb.net - 如何分离 TCP 套接字消息

c# - 如何确定是什么正在重置我的连接?

linux - 如何使用 Bash 文件中列表中的变量处理文件名

networking - 在 docker 中使用 netcat 通信两个容器

python - C++ 服务器无法通过套接字从 python 客户端读取我的消息