тсп сегменты мимо bpf ???

Тема в разделе "WASM.NETWORKS", создана пользователем goga2007, 5 дек 2010.

  1. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    имеется машина FreeBSD стоящая шлюзом в сеть и Win Vista выходящая через нее на другой (машине).
    на freebsd работает программа сборщик тсп сегментов:
    открывает bpf в буфер читает пакеты, которые ловит bpf.
    Vista качает файл из интернета. задача - получить файл на фре, который качает виста.
    в общем до тсп протокола все работает.
    до поры до времени программа собирает сегменты и пишет в файл, но в какой-то момент видно, что виста подтверждает тсп сегмент, который не проходил. что это может быть. rfc 793 ничего не говорит. может bpf не все пакеты ловит????
    прилагаю лог с хронологией прохождения пакетов.

    вот этот фрагмент: tcp: - пришедший тсп сегмент, seq - номер его последовательности, data_len-длина данных в нем
    , ack - номер подтверждения в нем же, ESTABLISHED -состояние соединения, seq_expected -ожидаемый номер последовательности, seq_last-последний номер сегмента, данные которого записаны в файл с незатейливым названием <ip_1_ip_2/port_src__port_dst>, buffered - сегменты прибывшие вне очереди и как следует - буферезированы)), freed - освобожденные сегменты и записаные в файл по прибытии ожидаемого, т.е. собранные по порядку номеров последовательности.(если buffered == freed => нет буферезированных сегментов. так сделано, чтобы контролировать сколько было израсходовано памяти).
    Код (Text):
    1. ...
    2. tcp: seq 911e1789 data_len 5b4 ack 20571db2 flags 10
    3.     ESTABLISHED seq_expected 911e1789 seq_last 911e11d5 ack 911e066d buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    4.  
    5. tcp: seq 911e1d3d data_len 5b4 ack 20571db2 flags 10
    6.     ESTABLISHED seq_expected 911e1d3d seq_last 911e1789 ack 911e066d buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    7.  
    8. tcp: seq 911e22f1 data_len 5b4 ack 20571db2 flags 10
    9.     ESTABLISHED seq_expected 911e22f1 seq_last 911e1d3d ack 911e066d buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    10.  
    11. tcp: seq 911e28a5 data_len 5b4 ack 20571db2 flags 10
    12.     ESTABLISHED seq_expected 911e28a5 seq_last 911e22f1 ack 911e066d buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    13.  
    14. tcp: seq 911e2e59 data_len 5b4 ack 20571db2 flags 10
    15.     ESTABLISHED seq_expected 911e2e59 seq_last 911e28a5 ack 911e066d buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    16.  
    17. tcp: seq 911e340d data_len 5b4 ack 20571db2 flags 10
    18.     ESTABLISHED seq_expected 911e340d seq_last 911e2e59 ack 911e066d buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    19.  
    20. tcp: seq 20571db2 data_len 0 ack 911e1789 flags 10
    21.     ESTABLISHED seq_expected 20571db2 seq_last 20571db2 ack 20571db2 buffered 0 freed 0 file MAIN/10.225.69.167_78.24.9.183/F2C2__0050
    22. tcp: seq 20571db2 data_len 0 ack 911e22f1 flags 10
    23.     ESTABLISHED seq_expected 20571db2 seq_last 20571db2 ack 20571db2 buffered 0 freed 0 file MAIN/10.225.69.167_78.24.9.183/F2C2__0050
    24. /*
    25.  вот подтверждается сегмент, который не приходил. ack 911e3f75 !!!!!!!
    26.  все бы ничего, да только он и не придет(((
    27. */
    28. tcp: seq 20571db2 data_len 0 ack 911e340d flags 10
    29.     ESTABLISHED seq_expected 20571db2 seq_last 20571db2 ack 20571db2 buffered 0 freed 0 file MAIN/10.225.69.167_78.24.9.183/F2C2__0050
    30. /*
    31.  вот этот не придет уже!!!
    32.  или может он все-таки проходил, да bpf мышей не ловит????
    33. */
    34. tcp: seq 20571db2 data_len 0 ack 911e3f75 flags 10
    35.     ESTABLISHED seq_expected 20571db2 seq_last 20571db2 ack 20571db2 buffered 0 freed 0 file MAIN/10.225.69.167_78.24.9.183/F2C2__0050
    36. /*
    37.  программа буферезирует сегмент, пришедший вне очереди (+ плюс в логе это и означает. -минус соответственно  
    38.  освобождение)
    39. */
    40. tcp: seq 911e3f75 data_len 5b4 ack 20571db2 flags 10
    41.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 206 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    42. +
    43. tcp: seq 911e4529 data_len 5b4 ack 20571db2 flags 10
    44.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 207 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    45. +
    46. tcp: seq 911e4add data_len 5b4 ack 20571db2 flags 10
    47.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 208 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    48. +
    49. tcp: seq 911e5645 data_len 5b4 ack 20571db2 flags 10
    50.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 209 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    51. +
    52. tcp: seq 911e5091 data_len 5b4 ack 20571db2 flags 10
    53.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 210 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    54. +
    55. tcp: seq 911e5bf9 data_len 5b4 ack 20571db2 flags 10
    56.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 211 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    57. +
    58. tcp: seq 911e61ad data_len 5b4 ack 20571db2 flags 10
    59.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 212 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    60. +
    61. tcp: seq 911e6761 data_len 5b4 ack 20571db2 flags 10
    62.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 213 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    63. +
    64. tcp: seq 911e6d15 data_len 5b4 ack 20571db2 flags 10
    65.     ESTABLISHED seq_expected 911e39c1 seq_last 911e340d ack 911e3f75 buffered 214 freed 206 file MAIN/10.225.69.167_78.24.9.183/0050__F2C2
    66. +
    67. ...
    спасибо за внимание.
     
  2. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    пытаюсь полный лог прикрепить....
    никак, но главный фрагмент написал..
     
  3. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Я вообще никогда не пользовался bpf , могу посоветовать одно, внедрись в первую функцию tcp стека, и будет тебе счастье..гарантировано будешь получать ВСЕ пакеты обрабатываемые tcp протоколом.

    Хотя нет, токачто вспомнил, внедряйся в первую функцию сетевого стека обрабатывающего ip ! т.к. твои пакеты могут до tcp не доходить во free а пересылаться сразу на win.

    А да,ещё в третий раз дополню, кажется последний пакет tcp это уже не "установленное соединение" (отправляемое клиентом серверу, откуда качается файл)
     
  4. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    кстати забыл сказать - windows натится pf -ом. может поэтому???
    ...вообще хочется разобраться что происходит: bpf ли пропускает пакет, или же какая-то хитрость протокола тсп, пропускать некоторые сегменты которая,возможно, освещается в дополнительных рфси???

    последний пакет в принципе не нужен, фал к тому времени уже собран. каждое направление у меня описывается структурой, поэтому FIN в любом направлении дает понять, что соединение закрывается, хотя в общем случае соединение закрывается как положено двумя fin-ами и двумя ack-ами.
     
  5. reversecode

    reversecode Guest

    Публикаций:
    0
    а что bpf обещал вам или кому то что он все пакеты будет ловить?
    теорию читайте
    где то уже обсуждали, что bpf никому ничего не обещает
    и по определению может не все пакеты улавливать
     
  6. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    а ежели пропатчить драйвер сетевой карты и из него сразу же писать в pcap файл, а опосля уже анализировать?? исключен ли в этом случае пропуск сегментов или скорость работы сетевой карты не может гарантировать отлов ВСЕХ пакетов??? ...или мне придется это узнавать на практике???((
    пс: я имею ввиду весь трафик, окружающий wifi адаптер, когда он переведен в режим мониторинга.