Получение флагов FIN и RST при попытке рукопожатия TCP в OS X

Пытаюсь установить tcp соединение между клиентом/сервером. Обе машины являются Mac и находятся в одной локальной сети. Приложение сервера прослушивает порт 12345. После получения «SYN, ACK» от сервера я отправляю «ACK», но затем мой клиент автоматически отправляет «FIN, ACK», за которым следует «RST, ACK». Таким образом, поток TCP выглядит следующим образом:

Клиент отправляет SYN. SVR отправляет SYN, ACK. Клиент отправляет ACK. Клиент отправляет FIN, ACK. Клиент отправляет RST, ACK. SVR отправляет ACK. SVR отправляет ACK. Клиент отправляет RST. Клиент отправляет RST.

Судя по другим сообщениям с похожими проблемами, это может происходить из-за того, что я пытаюсь вручную создать рукопожатие на уровне пользователя, а ядро ​​Unix (работающее на системном уровне) видит «SYN, ACK» намного раньше, чем что-либо на уровень пользователя может ответить и перейти к закрытию соединения, считая его открытым без причины. Проблема, аналогичная той, с которой столкнулся этот пользователь Linux: Нежелательный TCP-пакет RST со Scapy

В то время как iptables работал для пользователя Linux, должен ли я использовать что-то вроде pf в Mac OS X, чтобы заблокировать / удалить сообщения FIN и RST? Мой клиент работает под управлением 10.9.5, а мой сервер - 10.10.3.

Вот блок-схема сервера связи tcp 10.0.100.5 и клиента 10.0.100.4:


person Flan    schedule 28.07.2015    source источник
comment
Не уверен, что вы имеете в виду, говоря, что я пытаюсь вручную создать рукопожатие на уровне пользователя. Вы создаете необработанный пакет с вручную созданным заголовком IP/TCP?   -  person Zaboj Campula    schedule 29.07.2015
comment
@ZabojCampula Да, это именно то, что я пытаюсь сделать. Программное обеспечение на стороне сервера, с которым я взаимодействую, отправляет строку рукопожатия\0 с SYN-ACK, и с моим ответным ACK мне нужно отправить ту же строку рукопожатия\0. Я могу использовать pf для блокировки исходящих FIN и RST от моего клиента, а затем я могу отправить SYN-ACK с пользовательской строкой без нежелательных флагов FIN и RST.   -  person Flan    schedule 30.07.2015