TIME_WAIT
Суть в том, что TCP пакеты могут путешествовать по сети через разные пути и приходить с разными задержками. Тот, кто первым закрывает TCP соединение должен ожидать 120 секунд на получение затерявшегося пакета с адресами и портами ранее закрытого соединения и отсылать на него повторный закрывающий соединение пакет (типа BREAK обычно). Т.е. после закрытия соединения новая связь задействованных ранее IP и портов в TCP невозможна в течении 120…180 секунд. Это так же указывает всяким роутера, шлюзам, что через данный период после закрытия можно убирать данное соединение из таблицы обслуживания.
Это может перегружать любой мощный сервер, если TCP (TIME_WAIT) описан не полностью – например, не учитывается сторонний IP : port, а берется только свой port, которых всего 65535 шт. Тогда за 120 секунд это кол-во портов может быть использовано и не останется на другие соединения. Lwip, используемый в ESP именно так и работает – не учитывает внешний IP : port в TIME_WAIT. Но у ESP с LWIP и так нет памяти для содержания 65535 шт структур описаний TCP соединений (более 100 байт на шт) и опроса 65535 таймеров . По этому в TCP у ESP всё вырезано и не соответствует никаким стандартам.
От этого бывают приколы - ESP долбится по своему-же ранее закрытому соединению и так и висит, создавая сотни красных полосок в Wireshark...
Когда пойдет связь с космическими фигнями всё будут усиленно чинить это.