У меня два сервера Linux (давайте именем их A и B), подключенные к тому же (неуправляемую) переключатель. Я отключил брандмауэр на обоих серверах (нет правил во всех таблицах, и все политики по умолчанию, набор для принятия). Таким образом, ничто не должно предотвратить их сервер для отправки любых пакетов TCP / IP и другой сервер для их получения, как есть.
Теперь, на A мы запускаем приложение TCP Server, которое слушаю / принимают входящие соединения, а затем отправляют много данных в цикле для подключенного клиента (ы). Он не пытается прочитать от клиента и ожидать, что ошибка EPIPE при выполнении записи () для сокета, если / когда клиент отключается.
Далее, на B i Run NC (Netcat) в качестве клиентского приложения, подключается к приложению сервера на A, начнут получать данные, а через несколько секунд я нажимаю Ctrl-C, чтобы прервать это соединение.
Что я вижу, это серверное приложение на просто висит в записи (), у него нет EPIPE или любой другой ошибки.
Я проследил пакеты TCP / IP, используя TCPDUMP, а вот то, что я вижу:
Я также пытался запустить NetCat на A (так, чтобы как клиентские, так и серверные приложения работают на одном физическом сервере), и таким образом все работает, как ожидалось - сервер Применение получило еще сразу после прерывания NetCat с Ctrl-C. И TCPDUMP Show есть RST Packet, который отправляется как ожидалось.
Итак, что может привести к не отправлять RST в этом случае?
Я использую затвердевший Gentoo Linux, актуальную, ядро 2.6.39-OnDed-R8, без какой-либо конкретной сетевой конфигурации Sysctl Отказ
Это может быть или не может быть или не может быть важно отметить, что на этих серверах есть значительная сетевая активность, около 5000 подключений TCP, перечисленные со netstat -alnp
в любой момент, и я думаю, что около 1000 соединений открывается и закрывает каждый второй в среднем. Обычно увидит в журнале ядра что-то вроде этого (но номер порта отличается от использования сервера приложения, обсуждаемое выше):
TCP: Possible SYN flooding on port XXXXX. Sending cookies.
net_ratelimit: 19 callbacks suppressed
Вот как сеанс TCP обычно выглядит: http://i54.tinypic.com/ http://i54.tinypic.com/ 1zz10mx.jpg