Форум сайта python.su
Не установлен. FIN — это единичка. 24 — это PUSH и ACK.
Константы для флагов определены в самом начале http://code.google.com/p/dpkt/source/browse/trunk/dpkt/tcp.py
Офлайн
Ага, теперь все ясно. А проверять я так понимаю можно так:
if TH_FIN == (TH_FIN & flag):
print 'Connection termination.'
Андрей СветловДа действительно соединение после первого HTTP запроса на сервер не рвется. Не подскажите какие есть методы как можно отследить конец HTTP ответа, для этого случая? Заранее благодарен.
На самом деле для HTTP все чуть сложее: если клиент и сервер оба поддерживают keep-alive (http://en.wikipedia.org/wiki/HTTP_persistent_connection)
Отредактировано (Июнь 24, 2011 15:08:52)
Офлайн
Нужно парсить HTTP заголовки.
Заголовок ответа начинается со строки типа
HTTP/1.1 200 OK
и заканчивается двумя пустыми строками. Дальше идет ответ.
Персистентное соединение должно указывать в Content-Length длину ответа.
Этого достаточно.
Офлайн
Андрей СветловНа счет начала ответа определился, а вот определение конца реализовал по другому. Если в TCP сегменте есть флаг PSH значит запрос окончен. Огромное спасибо за помощь!
Нужно парсить HTTP заголовки.
Заголовок ответа начинается со строки типа
HTTP/1.1 200 OK
и заканчивается двумя пустыми строками. Дальше идет ответ.
Персистентное соединение должно указывать в Content-Length длину ответа.
Этого достаточно.
Офлайн
Это же не совсем правильно http серверы и прокси не обязаны выставлять PSH. Кто-то делает, другие — нет.
Парсинг HTTP заголовков — это «правильный» способ.
Офлайн
Андрей СветловЯ с Вами полностью согласен. Но дело в том, что мне нужен сниффер сейчас под конкретный сервер.
Это же не совсем правильно http серверы и прокси не обязаны выставлять PSH. Кто-то делает, другие — нет.
Парсинг HTTP заголовков — это «правильный» способ.
Отредактировано (Июнь 24, 2011 20:04:15)
Офлайн