Модераторы: marykone
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TCP. Установка флага RST, Обрывается TCP-соединение 
V
    Опции темы
Lexicss
Дата 3.9.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Имеется своё сетевое приложения на клиенте и сервере. Подключаюсь с клиента к серверу по tcp. Соединение есть, идёт обмен данными, но спустя 5-10 сек. соединение обрывается. Приложение клиента никаких ошибок не выдаёт, лишь сервер говорит что удалённый хост разорвал соединение. 
Поставил сетевой анализатор и увидел что во время обмена вдруг ни с того ни с сего клиент отправляет пакет с установленным флагом RST(на этом соединение и завершается). 
По каким причинам  может отправляться такой пакет во время обмена? Неисправная сетевая карта или драйвер? Т.е. из-за чего?
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
ZeeLax
Дата 3.9.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 19
Всего: 88



Как ведут себя другие приложения?


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
marykone
Дата 3.9.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: 24
Всего: 67



Lexicss, посмотрите на своего клиента, код имеется ввиду. в нем гвоздь, скорее всего.


--------------------
получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы).

PM   Вверх
Lexicss
Дата 3.9.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Ксожалению, такая ситуация происходит на компьютере пользователя, который за 300 км от меня. Как себя ведут другие приложения, сложно сказать, вроде он там работает по сети. Или может именно этот порт глючный с которым моё приложение работает, может быть такое?  Но могу сказать что на других компьютерах это приложение работает. Когда я через модем(пользователь живёт в другом городе) подключаюсь своим приложением к его серверу - ничего не обрывается при обычной работе с нагрузкой. И даже если пользователь подключается с другого компьютера(т.е. другого клиента) ЭТИМ ЖЕ ПРИЛОЖЕНИЕМ, то тоже утверждает что всё работает. В своём приложении я сделал вывод ошибок по любой неадекватной ситцации сокетов, но ошибок нету на клиенте. 
Т.е. подозрения что это что-то системное, но даже если и так то хочется досконально разобраться почему такое поведение.

И кстати обрывается соединение именно когда пользователь даёт нагрузку, на обычных байтовых обменах соединение живёт.

Код приложения сетевой подсистемы выложить не смогу, очень большой.

Добавлено через 11 минут и 24 секунды
Могу выложить протокол сетевого обмена во время разрыва(*.pcap) если это поможет. :/

Это сообщение отредактировал(а) Lexicss - 3.9.2010, 13:55
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
marykone
Дата 3.9.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2722
Регистрация: 2.5.2006
Где: Краснодар

Репутация: 24
Всего: 67



Цитата(Lexicss @  3.9.2010,  13:49 Найти цитируемый пост)
Могу выложить протокол сетевого обмена во время разрыва(*.pcap) если это поможет. :/

давайте попробуем посмотреть.


--------------------
получил ответ, пометь вопрос как решенный (правый верхний угол вашей темы).

PM   Вверх
Lexicss
Дата 3.9.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Файл сделан в wireshark 1.1.2
Немного прокомментирую: Анализатор засёк два подключения к серверу с обрывами, сегмент 12 и сегмент 36 - посылка клиентом пакета с флагом RST.

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  281.pcap 9,46 Kb
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
Secandr
Дата 6.9.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 8
Всего: 39



В описании пакета есть текст ошибки:
Acknowledgement number: Broken TCP. The acknowledge field is nonzero while the ACK flag is not set

Хотя этого пакета я не вижу, из-за которого рвётся tcp.

Судя по номерам поcледовательностей в пакетах у вас вырезан из pcap файла весь пользовательский трафик, а это сделано зря, покажите пакеты между последним ACK и RST.

P.S. Похоже на той стороне кто-то путается с полями tcp заголовка в пользовательском трафике...

Это сообщение отредактировал(а) Secandr - 6.9.2010, 15:06


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Lexicss
Дата 7.9.2010, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Secandr, Да ничего и не вырезал. Wireshark установлен на компе клиента(10.252.17.38) и ведётся весь траффик связанный с портом 5958. Может тока что wireshark не обнаруживает какие-то пакеты.
И судя по последовательностям, вроде как всё верно, 
если я , конечно правильно понимаю.  К Номер след. последовательности добавляется длина данных. например, если рассмотреть пакеты клиента начиная с 32-го.
32.Seq=83, Len = 47
34.Seq=130=83+47, Len = 47
36.Seq=177=130+47, Len = 0.

Единственное что, в пакете с ошибкой содержится неверной значение абсолютного подверждения(ACK), т.е. кал-будто клиент предыдущий пакет принял с нулевыми данными.


Это сообщение отредактировал(а) Lexicss - 7.9.2010, 10:52
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
Secandr
Дата 8.9.2010, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 8
Всего: 39



попробуйте поставить фильтр не на порт, а на хост:
host 10.252.17.31

seq изменяется на 1 при пересылке каждого кадра, у вас судя по всему поймалась только сигнализация самого tcp без данных из-за фильтра, а ошибка в пакете с данными ИМХО.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Lexicss
Дата 14.9.2010, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Как окзалось такую ситуация вызывала на клиенте функция shutdown - закрывающая сокет на приём, именно это и приводило к посылке флага RST.
Спасибо всем кто откликнулся и помогал.
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
Secandr
Дата 14.9.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 8
Всего: 39



что за функция shutdown?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Lexicss
Дата 14.9.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Secandr, Remarks

shutdown is used on all types of sockets to disable reception, transmission, or both.
If how is SD_RECEIVE, subsequent receives on the socket will be disallowed. This has no effect on the lower protocol layers. For TCP sockets, if there is still data queued on the socket waiting to be received, or data arrives subsequently, the connection is reset, since the data cannot be delivered to the user. For UDP sockets, incoming datagrams are accepted and queued. In no case will an ICMP error packet be generated.

If how is SD_SEND, subsequent sends are disallowed. For TCP sockets, a FIN will be sent.
Setting how to SD_BOTH disables both sends and receives as described above.
Note that shutdown does not close the socket, and resources attached to the socket will not be freed until closesocket is invoked.

И обратил внимание что wireshark выдавало пакет с флагом RST именн по выполнению у меня на клиенте функции (shutdown(Sock, SD_BOTH) или если второй параметр поставить SD_RECEIVE

Добавлено через 6 минут и 56 секунд
Теперь у меня уже другая проблема. На клиенте при приёме данных выдаётся ошибка, что не хватает буфферов.
Если кто желает помочь/подсказать буду признателен, подробнее здесь. http://forum.vingrad.ru/forum/topic-309944...wsaenobufs.html
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Сетевые технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0879 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.