我知道每个端口只能分配给一个应用程序。但是,我想这样做:
(1) 我想监控一个端口,例如 80。该端口已被另一个应用程序分配,例如 Apache
(2) 我可以复制发送到该端口的每个套接字,并将这些端口重定向到另一个端口
我搜索过tcpdump,它可以捕获数据包(包含全部内容)。但我不知道如何复制数据包然后将它们发送到另一个端口?
或者,也许还有其他工具可以轻松捕获数据包?
如果我想自己实现,可以给我一些细节吗?因为我不擅长socket编程。
最佳答案
正如您正确指出的那样,您将无法使用套接字轻松地从端口 80 获取数据包。这是因为如果第二个套接字也接收该端口的数据包,那么它将需要重用该端口(SO_REUSEADDR 选项)。如果应用程序是第三方的并且您无法将此选项设置为服务器套接字,那么这将不起作用。您可能可以尝试检查 scapy,它有一个嗅探数据包的选项,看看它是否满足我们的要求:http://www.secdev.org/projects/scapy/doc/usage.html 。
关于linux - 监听Socket并复制到另一个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18502170/