OPNET Simulation - Невозможно установить несколько соединений TCP на одном порту
Насколько я понимаю, сеанс 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>
не может быть установлен, потому что порт 80 192.168.0.1 уже используется.
С учетом этой модели, если я попытаюсь разместить службу HTTP на 192.168.0.1:80, одновременно может быть только 1 соединение с моим сервером, что серьезно ограничивает возможности моделирования.
Пожалуйста, подтвердите, действительно ли модель проблематична, или я что-то упустил из виду. Также решение было бы очень полезно.
1 ответ
Я покопался в исходном коде модели OPNET TCP и обнаружил ошибку.
Прежде всего, 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
(слушать) или ACTIVE
(подключиться)), модель проверит, используется ли локальный порт. Если используется локальный порт, сигнал ошибки будет возвращен независимо от типа открытого запроса, тогда как правильное действие - проверять только ACTIVE
открыть.
Решение состоит в том, чтобы изменить процедуру проверки, чтобы работать только для ACTIVE
открытое дело. Предварительный тест показывает, что на одном и том же порте прослушивания может быть установлено несколько соединений.