Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: TCP-сервер не отправляет SYN/ACK в ответ на SYN от клиента  (Прочитано 10546 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Abrian
Новенький

ru
Offline Offline

« : 17-03-2014 22:33 » 

Здравствуйте!

Написал с помощью winsock небольшое клиент-серверное приложение (эхо-сервер на блокируемых сокетах + клиент) и помимо этого хочу реализовать приложение, генерирующее tcp-сегменты (с использованием winpcap).
Столкнулся с проблемой: в pcap'овском приложении создаю tcp-сегмент с установленным флагом SYN, заполняю все заголовки и поля самостоятельно (MAC назначения, IP назначения и порт назначения - принадлежащие серверу). Пакет отправляется успешно, Wireshark на принимающей стороне его видит, но ответный SYN/ACK от приложения-сервера не посылается. Мне даже не ясно, прошёл ли сегмент вверх по стеку до прикладного уровня, где работает приложение. Подскажите, в чём может крыться проблема?
Тестирование произвожу с помощью VMWare Workstation 10. На машинах клиента, сервера, и "генератора пакетов" установлена Win XP.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-03-2014 00:13 » 

SYN-пакет и не должен доходить до приложения. Приложение вообще не видит транспортного протокола.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
darkelf
Молодой специалист

no
Offline Offline

« Ответ #2 : 18-03-2014 06:29 » 

Написал с помощью winsock небольшое клиент-серверное приложение (эхо-сервер на блокируемых сокетах + клиент) и помимо этого хочу реализовать приложение, генерирующее tcp-сегменты (с использованием winpcap).
Для подобного роде тестов есть очень удобная утилита - telnet, которая в любом случае сгенерирует правильные tcp-сегменты.
Столкнулся с проблемой: в pcap'овском приложении создаю tcp-сегмент с установленным флагом SYN, заполняю все заголовки и поля самостоятельно (MAC назначения, IP назначения и порт назначения - принадлежащие серверу). Пакет отправляется успешно, Wireshark на принимающей стороне его видит, но ответный SYN/ACK от приложения-сервера не посылается. Мне даже не ясно, прошёл ли сегмент вверх по стеку до прикладного уровня, где работает приложение. Подскажите, в чём может крыться проблема?
Проблема может быть, например, в антивирусе и файерволе.
Записан
Abrian
Новенький

ru
Offline Offline

« Ответ #3 : 18-03-2014 11:06 » 

SYN-пакет и не должен доходить до приложения. Приложение вообще не видит транспортного протокола.
Согласен, некорректно выразился. Имею в виду, что хочу узнать, есть ли вообще хоть какая-то реакция на созданный мной сегмент на принимающей стороне.
Telnet соединение устанавливает нормально.
Антивирусов нет, файервол стандартный выключен.
Записан
darkelf
Молодой специалист

no
Offline Offline

« Ответ #4 : 18-03-2014 11:14 » 

Telnet соединение устанавливает нормально.
Антивирусов нет, файервол стандартный выключен.
Вот Вам и ответ - скорее всего Вы неправильно формируете запрос.
Записан
Abrian
Новенький

ru
Offline Offline

« Ответ #5 : 18-03-2014 11:26 » 

В Wireshark сравниваю два сегмента: мой и telnet'овский. Они идентичны, за исключением полей: source port и sequence number, и, как следствие, полей контрольных сумм. Только на сегмент telnet есть ответ от сервера,а на мой нет. Проверяю пакеты, конечно, в шестнадцатеричном представлении. Есть ли возможность их проверить побитно (в виде последовательности 0 и 1)?
Записан
darkelf
Молодой специалист

no
Offline Offline

« Ответ #6 : 18-03-2014 13:35 » 

В Wireshark сравниваю два сегмента: мой и telnet'овский. Они идентичны, за исключением полей: source port и sequence number, и, как следствие, полей контрольных сумм.
Возможно у Вас всё-таки не совсем правильно считается контрольная сумма. Других причин отбросить пакет (раз telnet работает) вроде как нет.
Записан
Abrian
Новенький

ru
Offline Offline

« Ответ #7 : 18-03-2014 14:34 » new

Возможно у Вас всё-таки не совсем правильно считается контрольная сумма. Других причин отбросить пакет (раз telnet работает) вроде как нет.
Да, Вы оказались правы. Нашёл ошибку в контрольной сумме tcp-заголовка (по умолчанию wireshark её не проверяет). Буду пересчитывать, спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines