![监听本地主机消息](https://linux22.com/image/1486010/%E7%9B%91%E5%90%AC%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E6%B6%88%E6%81%AF.png)
假设 TCP/IP 客户端应用程序已连接到服务器上的某个端口。
客户端和服务器都在本地主机上运行。
另一个应用程序(也在本地主机上)是否可以监听客户端发送到该端口的消息?
答案1
这完全取决于你所说的“听”是什么意思。
您可以配置 wireshark 来嗅探环回接口,用于捕获进程间通信流中的数据包,或用于寻址 127.0.0.1 的服务。
尽管如此,你仍然需要能够解码二进制序列化数据,如果进程正在传输非文本数据,这可能并不简单。如果数据是字符流然而大多数嗅探器解码为ASCII和/或统一码当您查看数据包数据时会自动执行。
但是,嗅探器类产品是您唯一的选择。端口专属于创建它们的进程,因此除非服务器设计为可通过某种代理程序(例如连接池)供多个应用程序访问,否则端口无法由外部程序监控。唯一的例外是系统软件,它使用驱动程序绕过大量 OS TCP/IP 堆栈(嗅探器就是通过直接从网卡读取数据并使用其自己的 TCP/IP 代码来分析数据结构)。这意味着您必须执行TCP 劫持(中间人攻击)对于现代 TCP/IP 堆栈来说,这种攻击非常困难。