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

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

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

"железокаменный метеорит" мог образоваться от расплавления металлических конструкций в результате например ядерного взрыва и стекания жидкого железа в какой нибудь щебень (c) Иванов С.
darkelf
Молодой специалист

ua
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
Молодой специалист

ua
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
Молодой специалист

ua
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