Можно ли повторно использовать TCP-порт до истечения TIME-WAIT?

У нас есть класс 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, отправленный с более высоким номером, чем самый высокий порядковый номер, использованный в предыдущем сеансе.

Возможно ли это достичь?


person Max    schedule 27.03.2014    source источник


Ответы (2)


Windows уже изначально реализует для вас более высокие порядковые номера, вам не нужно делать ничего особенного, чтобы получить эту функциональность. Статья вы столько же ссылались на состояния:

Реализация Microsoft TCP/IP использует эту функциональность. ... TCP TIME-WAIT Assassination очень хорошо работает между системами Windows и может не работать должным образом, когда Windows обменивается данными с хостами, на которых запущены другие реализации TCP/IP. В документе RFC1337, Опасности TIME-WAIT Assassination, обсуждаются возможные подводные камни: http://tools.ietf.org/rfc/rfc1337.txt

person Remy Lebeau    schedule 28.03.2014

ISN является случайным по замыслу. Вы не можете управлять им из API.

person user207421    schedule 27.03.2014