在程序中使用本地主机 TCP/IP 通信 - 总是安全吗?

在程序中使用本地主机 TCP/IP 通信 - 总是安全吗?

我有一个应用程序,它分为几个部分(进程),通过 TCP/IP 进行通信,使用本地主机上预定义的端口。

这总是安全的吗?某种防火墙(企业防火墙、本地安装的防火墙、Windows 防火墙等)可以阻止这种流量吗?或者操作系统中的某些用户设置可以阻止这种流量吗?

我感兴趣的操作系统是 Windows(XP 到 7)和 Linux(Ubuntu、Red Hat Linux 和 SUSE)。

答案1

  • 往返流量由 TCP/IP 堆栈内部127.0.0.0/8处理::1/128。它不会到达物理网卡,也不会离开计算机,因此无法被企业防火墙阻止。

  • 由于环回套接字对于 IPC 来说非常常见,因此良好的防火墙绝不会阻止它。(Windows 防火墙不会。)但是,有些人过于偏执……在这种情况下,我会责怪防火墙,而不是您的软件。

  • 在 Unix 上,可能会 (意外) 关闭环回接口 (通常lo)。同样,这种情况非常不常见。

  • socketpair()在适用的情况下,应使用硬编码端口,而不是硬编码端口,以避免端口冲突。

  • 更好的方法是在 Linux 上使用 Unix 套接字,在 Windows 上使用命名管道。

答案2

所有这些操作系统都支持运行防火墙软件。这些软件可能会阻止本地主机连接,尽管这种情况并不常见(以我的经验来看)。

有很多应用程序/服务可以做到这一点。只需尝试netstat -an在您的机器上运行:您很可能会看到很多应用程序打开了监听套接字127.0.0.1

我不知道哪些用户设置会阻止它在 Linux 上运行。不知道 Windows 是否也是如此。但同样,这是一种常见的技术。

相关内容