代码之家  ›  专栏  ›  技术社区  ›  Xinus

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

  •  0
  • Xinus  · 技术社区  · 15 年前

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

    我们尝试了以下方法(所有方法都在本地主机上工作):

    作为发件人的firefox xpcom组件 ---GT; 作为接收器的firefox xpcom组件 ——不工作

    作为发送方的python命令行 ---GT; 作为接收器的firefox xpcom组件 -工作

    作为发件人的firefox xpcom组件 --> 作为接收器的python命令行 ——不工作

    python命令行作为发送者 ---GT; 作为接收器的python命令行 -工作

    当我们使用wireshark观察数据包时,我们发现了一些不同之处--

    firefox xpcom到python命令行 firefox xpcom到firefox xpcom (不起作用)有如下分组记录

    这种类型的数据包(源端口标记为非数字)由

    Winsock(C++)

    XPCM组件

    C.*

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

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

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

    我对网络不太了解,但记录上写着 ..Source port: timbuktu-srv2.. 无法到达目的地。

    我一直在使用Python、C++(Winsock)、C语言来尝试P2P通信,但只能用Python成功,只能用Python来观察这种类型的特定记录。

    一些网络专家能在上面闪灯吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   caf    15 年前

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

    timbuktu-srv2   1418/udp   Timbuktu Service 2 Port
    

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

    这本身并不能解释这个问题——实际上,服务器端应该接受客户机使用它想要的任何源端口。然而,在这种情况下,接收方似乎只接受源端口为30000的数据包。要实现这一点,您需要将套接字绑定到本地地址 INADDR_ANY 和端口30000,然后发送数据包。