Не установлен. 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)
Андрей СветловНа счет начала ответа определился, а вот определение конца реализовал по другому. Если в TCP сегменте есть флаг PSH значит запрос окончен. Огромное спасибо за помощь!
Нужно парсить HTTP заголовки.
Заголовок ответа начинается со строки типа
HTTP/1.1 200 OK
и заканчивается двумя пустыми строками. Дальше идет ответ.
Персистентное соединение должно указывать в Content-Length длину ответа.
Этого достаточно.
Андрей СветловЯ с Вами полностью согласен. Но дело в том, что мне нужен сниффер сейчас под конкретный сервер.
Это же не совсем правильно http серверы и прокси не обязаны выставлять PSH. Кто-то делает, другие — нет.
Парсинг HTTP заголовков — это «правильный» способ.