【问题标题】:OPNET Simulation - Unable to establish multiple TCP connection on the same portOPNET 模拟 - 无法在同一端口上建立多个 TCP 连接
【发布时间】:2015-05-07 13:21:22
【问题描述】:

据我了解,TCP 会话被标识为<ServerIP, ServerPort, ClientIP, ClientPort>

例如,会话<192.168.0.1, 80, 192.168.0.2, 1000><192.168.0.1, 80, 192.168.0.2, 1001> 分开,这两个会话可以同时在主机上共存。

但是,在 OPNET 中,如果 <192.168.0.1, 80, 192.168.0.2, 1000> 已建立,则无法建立 <192.168.0.1, 80, 192.168.0.2, 1001>,因为 192.168.0.1 的 80 端口已在使用中。

鉴于此模型,如果我尝试在 192.168.0.1:80 上托管 HTTP 服务,一次只能有 1 个连接到我的服务器,这严重限制了模拟能力。

请确认该模型是否确实有问题,或者有什么我忽略了。也非常感谢解决方法。

【问题讨论】:

  • 看起来像是 OPNET 中的一些错误。看看这个问题:stackoverflow.com/questions/489036/…
  • 我也觉得是bug,但奇怪的是,OPNET是世界级的通信网络模拟软件,我无法想象它会有这么低级的bug。
  • 在端口 80 尝试另一个与服务器的连接时遇到什么错误?
  • 错误是“TCP OPEN failed - Port is already in use.”

标签: tcp opnet


【解决方案1】:

我挖掘了OPNET TCP模型的源代码,发现了bug。

首先,OPNET 确实将<192.168.0.1, 80, 192.168.0.2, 1000><192.168.0.1, 80, 192.168.0.2, 1001> 视为两个独立的会话,并且可以使用session_key 区分它们。

但是,模型中存在一个小错误。当向 TCP 模型层(PASSIVE(listen) 或 ACTIVE(connect))发出打开请求时,模型将检查本地端口是否正在使用。如果使用本地端口,无论打开请求的类型如何,都会返回错误信号,而正确的操作是只检查ACTIVE打开。

解决方案是将检查程序修改为仅适用于ACTIVE 打开的案例。初步测试表明现在可以在同一个监听端口上建立多个连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2013-04-27
    • 2011-03-27
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多