Wireshark -------源端口:timbuktu-srv2?

时间:2009-09-27 19:13:44

标签: networking sockets p2p wireshark

我试图通过firefox扩展建立点对点(UDP)通信。我有python程序在命令行上工作。我使用它构建了一个xpcom组件。但令人惊讶的是,我只能从命令行python程序通过它接收消息。

我们尝试了以下(所有在localhost上工作):

Firefox XPCOM组件作为发件人 - > firefox XPCOM组件作为接收器 - 无法正常工作

Python命令行作为发件人 - > firefox xpcom组件作为接收器 - 工作

firefox xpcom组件作为发件人 - > Python命令行作为接收器 - 无法正常工作

Python命令行作为发件人 - > python命令行作为接收器 - 工作

当我们使用wireshark观察数据包时,我们得到了一些差异 -

Firefox xpcom到python命令行 firefox xpcom到firefox xpcom (哪些没用)有包记录如下

生成的此类数据包(标记为非数字的源端口)

的Winsock(C ++)

XPCOM组件

C#

...UDP  Source port: timbuktu-srv2  Destination port: 30000

python命令行到python命令行 Python命令行到XPCOM (确实有效)的数据包记录如下

... UDP Source port: 30000  Destination port: 30000

我对网络知之甚少,但标有..Source port: timbuktu-srv2..的记录无法到达目的地。

我一直在尝试使用Python,C ++(Winsock),C#进行p2p通信,但只能用Python才能成功,我只能观察到这种类型的特定记录与python ...

一些网络大师可以点亮吗?

1 个答案:

答案 0 :(得分:0)

您看到的timbuktu-srv2只是Wireshark根据已知服务列表查找实际端口号的结果。如果您查看IANA assigned port numbers list,则会看到此条目:

timbuktu-srv2   1418/udp   Timbuktu Service 2 Port

...这意味着您的应用程序使用1418作为其发送的UDP数据包的源端口。 30000不会变为文本服务名称,因为您的本地服务数据库没有该端口号的条目。

这本身并没有解释这个问题 - 实际上,服务器端应该使用它想要的任何源端口接受客户端。但是,在这种情况下,接收方似乎只接受源端口为30000的数据包。要实现这一点,您需要在发送数据包之前将套接字绑定到本地地址INADDR_ANY和端口30000(或多个)。