Могу ли я отправить ответ ACK на успешно полученный SYNACK, используя исходные сокеты BSD? - PullRequest
0 голосов
/ 20 декабря 2010

Мой код пытается вручную установить рукопожатие TCP, а затем отправляет сегмент данных, запрашивающий ресурс, через HTTP GET.

Я использую необработанные сокеты для создания заголовков и отправки пакетов, а также libpcap для проверки заголовков полученных пакетов.

SYN успешно отправлено получателю, который затем отвечает мне SYNACK. Пока что это работает, но когда я получаю это SYNACK, я пытаюсь ACK это, а затем отправляю HTTP GET следующее, что не похоже на работу. Я вижу, что заголовки в Wireshark в порядке.

Итак, мои вопросы: могу ли я ACK SYNACK через необработанные сокеты так же, как я получаю его, используя тот же сокет, который я использовал для отправки SYN? И нужно ли OPTIONS идти вместе с заголовками, чтобы достичь этого?

Я подтверждаю это SYNACK, и сразу после этого я отправляю сегмент с установленными флагами ACK и PSH, чтобы запросить ресурс через HTTP. Я вижу их обоих на Wireshark, но я не получаю ответ от сервера.

1 Ответ

0 голосов
/ 20 декабря 2010

Нет причины, по которой вы не можете ACK использовать необработанные сокеты, однако стек ядра вашей ОС также увидит полученный SYNACK, которого он не ожидает, и отправит RST.Вы делаете что-нибудь, чтобы этого не случилось?В противном случае, возможно, вы не отправляете правильные номера SEQ / ACK.

...