【问题标题】:Can I edit packets from my server before they reach my Client?我可以在来自我的服务器的数据包到达我的客户端之前对其进行编辑吗?
【发布时间】:2017-10-26 17:47:27
【问题描述】:

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

我的问题:是否可以在从聊天服务器发送的数据包到达客户端之前更改数据包中的数据,而无需使用服务器或客户端这样做?可能像一个程序?

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

【问题讨论】:

  • 这比看起来更复杂。 TCP 有一个 CRC,如果您更改段中的任何内容,则必须重新计算该 CRC。 CRC 也使用伪报头。如果您更改 IPv4 数据包的数据包标头中的任何内容,则必须重新计算 IPv4 标头校验和。如果您在 IEEE LAN 帧中对此进行修改,则需要重新计算 FCS。

标签: actionscript-3 networking air adobe packet-capture


【解决方案1】:

您的问题非常广泛。所以答案也很广泛。是的。有可能。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多