Re: как обработать TCP RST на уровне приложения
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.02.12 18:00
Оценка:
Здравствуйте, rnn, Вы писали:

rnn>Существует следующая ситуация. Стороннее приложение, которое взаимодействует с моим, как я понимаю в какой то момент шлет TCP RST, но перед этим запросило нас выполнить определенное действие.


Мнэээ... вообще-то в протоколе TCP не предполагается посылки RST для существующего корректного соединения. RST посылается или при явной ошибке параметров, или для несуществующего соединения, или как грубое средство его порвать всякими промежуточными агентами (файрволлами, экранами, NATами и прочими). Нормальное закрытие соединения на передачу это посылка FIN, которая должна быть хорошо заметна, а закрытие на приём — это присылка ACK с нулевым окном. Думаю, тут у вас не ваш удалённый собеседник шлёт RST, а кто-то левый. Или же IP стек сделан с нарушением базовых принципов, такое редко, но бывает. Или же там не RST, но вы почему-то думаете, что RST.

rnn> Суть в том что стороннее приложение считает что послав TCP RST оно отменяет выполнение действия, но наше приложение работает с данными полученными по http протоколу и не может отслеживать tcp сессии(как я понимаю это вообще ложится на плечи вэб сервера). Вопрос в следующем, могу ли я как то в своем приложение обработать эту ситуацию и отменить действие по TCP RST событию?


Очевидно, если об этом не сообщили, то не можете. А как именно веб-сервер может сообщить об этом, пока идёт обработка запроса, зависит от этого сервера.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.