0

据我了解,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 个连接到我的服务器,这严重限制了模拟能力。

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

4

1 回答 1

1

我深入研究了 OPNET TCP 模型的源代码,发现了 bug。

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

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

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

于 2015-05-08T07:44:33.460 回答