У нас есть класс C# FTP, который отлично работает, но у нас заканчиваются TCP-порты, потому что все они находятся в состоянии TIME-WAIT и не могут быть повторно использованы. Мы можем уменьшить TIME-WAIT по умолчанию в реестре, но мы бы предпочли повторно использовать порты.
Итак, учитывая приведенный ниже блог: http://blogs.technet.com/b/networking/archive/2010/08/11/how-tcp-time-wait-assassination-works.aspx
В ситуации, когда сокет на стороне сервера переходит в состояние TIME-WAIT, а клиент повторно подключается к серверу в течение 2MSL (время TIME-WAIT по умолчанию), могут произойти две вещи:
1. Сервер не будет отвечать на пакеты SYN от клиента, поскольку сокет находится в состоянии TIME-WAIT.
2. Сервер может принять SYN от клиента и изменить состояние сокета с TIME-WAIT на ESTABLISHED. Это известно как убийство TIME-WAIT или воплощение предыдущей связи.
Ключом к приведенному выше сценарию «2» является то, что ISN (начальный порядковый номер) отправленного SYN должен быть выше самого высокого порядкового номера, использованного в предыдущем сеансе. Если ISN не соответствует ожидаемому, сервер не ответит на SYN, и сокет будет ждать 2MSL, прежде чем снова станет доступным для использования.
Я пытаюсь (программно на С#) найти способ всегда отправлять SYN, отправленный с более высоким номером, чем самый высокий порядковый номер, использованный в предыдущем сеансе.
Возможно ли это достичь?