我可以在来自我的服务器的数据包到达我的客户端之前对其进行编辑吗?

Can I edit packets from my server before they reach my Client?

我在 TCP 上制作了一个简单的即时消息聊天客户端和服务器,两者都 运行 离开了 Adob​​e AIR。它运行良好,是学习基本网络编程的有趣方式。

我的问题:是否可以在不使用服务器或客户端的情况下,在聊天服务器发送的数据包到达客户端之前更改数据包中的数据?也许像一个程序?

我是网络编程的新手,如果这是一个愚蠢的问题,我深表歉意。

你的问题很宽泛。所以答案也很广泛。是的。有可能。

为此,您需要让客户端和服务器之间的数据包通过第三方程序。有很多方法可以实现这一目标。以下是非详尽列表:

首先,在您自己的机器 (client/server) 上,您可以使用各种低级 API 从操作系统访问数据包。例如iptables+nfqueue in Linux or the Windows Filtering Platform on Windows

其次,您可以通过有意让数据包通过某些 proxy program 进行通信来访问数据包,这些 proxy program 可能与客户端或服务器驻留在同一服务器上,也可能不在同一服务器上。

第三,您可以通过从网络本身获取数据包来访问它们。例如,您可以将一些 Linux 机器设置为路由器,并将其置于客户端和服务器之间(只要它们不在同一台机器上)。 Linux 机器现在可以访问所有通过它的数据包,并且它可以使用钩子将它们传递给各种用户-space 程序,例如前面提到的 nfqueue。