2016-06-28 2 views
1

Я делаю SSL-сервер, и я не использую библиотеку python, так как хочу внести некоторые неортодоксальные изменения в процесс. Из-за этого я не могу просто запустить TCP-соединение, так как мне нужно передать данные шифрования с помощью рукопожатия, которое я не могу выполнить над сокетами. Поэтому я использую scapy для создания рукопожатия, но после этого я хотел бы продолжить работу с TCP-сокетом, не переходя снова в процесс рукопожатия. Это возможно?Возможно ли запустить соединение сокетов TCP без установления связи?

ответ

1

Если я правильно понял ваш вопрос, вы обменялись несколькими сегментами, используя scapy, и теперь хотите изготовить из них полноценный полноразмерный разъем.

Это нелегко: для всех практических целей ваш TCP не обращает внимания на то, что вы отправили в своих пакетах, и он не поддерживает какое-либо состояние для этого TCP-соединения: все состояние находится в вашем приложении.

Сказанное: в Linux есть вещь, называемая TCP_REPAIR, которая позволяет помещать сокет в заданное состояние.

Когда эта опция используется, сокет переключается в специальный режим, в которой любое действие, выполненное на нем не приводит к чему определенной с помощью соответствующих действий протокола, а скорее непосредственно ставит гнездо в состояние, в котором ожидается, что гнездо находится в конце успешно завершенной операции.

Если вы установили порядковые номера правильно, розетка должна «просто работать».,

Кроме того, нужно восстановить последовательность TCP номеров. Для этого были введены параметры TCP_REPAIR_QUEUE и TCP_QUEUE_SEQ.

Конечно, все это относится к современной Linux; другие операционные системы могут иметь или не иметь аналогичных механизмов.

+0

спасибо. Я не запускаю Linux, есть ли возможность запускать сокет из UDP в TCP после выполнения рукопожатия? Кроме того, я слышал о «Raw Sockets». Можно ли использовать все это вместо этого? Я еще не читал о сырых сокетах, но если вам удалось узнать, что это возможно с этим методом, я буду изучать их. –

+0

@jep_macca "есть возможность отличать сокет от UDP до TCP" абсолютно нет. Необработанные сокеты вам не помогут: по определению сырые сокеты не имеют семантики уровня транспорта. – cnicutar

+0

Хорошо, спасибо вам за помощь. Я буду искать TCP_REPAIR для Windows, надеюсь, что есть такая вещь. Создание TCP-соединения было бы очень утомительным при подключении UDP и таймаутах. –

Смежные вопросы