Как разбить файл на пакеты

Тема в разделе "WASM.NETWORKS", создана пользователем System0x29A, 18 авг 2009.

  1. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    Подскажите как можно разбить файл на пакеты Ethernet+IP+TCP|UDP|ICMP.
    Меня интересует разбитие файла в тот момент когда файл готовится к передаче на другой хост. К сожалению я пока не знаю с помощью чего разбивается файл на пакеты(наверное с помощью дров) и как это делается. Наверное лучше выразится как разбить файл на части пакеты стека протолов TCP/IP, выполнить фрагментацию пакетов, если надо и сохранить каждый пакет хотя бы в отдельный файл для анализа или в бд(все пакеты одного файла).
    Можно ли как то решить эту задачу на языке программирования высокого уровня не ассемблере, если да, то подскажите как.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Файл? Вы понимаете что такое стек протоколов?
     
  3. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    И еще может в курсе как потом из пакетов, которые получились при разбиении файла, собрать этот же файл?
    Проверить целостность его после сборки можно будет наверное с помощью контрольной суммы.
    Данный пример мне нужен чисто ради научного интереса, не для Download Manager, с ним все проще(Там среда сама разбивает файл на фрагменты и отправляет фрагменты на другой хост, где эти фрагменты собираются в файл и сохраняются на диск).
    Интересует сам процесс сбора и разбиения файла на фрагменты(пакеты) и отправки по сети.
     
  4. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    Да RFC читал.
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    System0x29A
    тогда не порите чушь. и почитайте его еще раз.
     
  6. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    Та ну ладно. А зачем тогда форумы нужны.
    Я то надеялся на помощь зала. Звонок другу уже использовал))
     
  7. vover

    vover Владимир

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    202
    System0x29A, тебя интересует то как пакеты формируются ? если да, то это обширная тема - читай RFC и задавай более частные вопросы. Или тебя интересует то как отправить уже сформированный пакет?
     
  8. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    Да нет, меня интересует, как можно собрать из перехваченных сниффером пакетов, сообщение или файл?
    А также как вручную разбить например текстовый или любой бинарный файл на пакеты, поменять значения заголовков протоколов IP и TCP,отправить измененные пакеты на другой хост?
     
  9. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    а можно ведь все таки рфц почитать или в гугле на одной из "приблизительно 38 100 000" страниц, узнать что такое OSI, как по ее уровням распределены протоколы, и как согласно seq/ack, если у вас все таки tcp, все собрать
     
  10. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    Легко посылать всех в гугл, когда имееш опыт, но не хочеш им делиться с остальными.
     
  11. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    System0x29A, по TCP гонятся потоки данных. Никаких заголовков формировать не надо. В своём протоколе просто пошли два сообщения:

    info:
    size
    name len
    name data

    data:
    data bytes
     
  12. System0x29A

    System0x29A New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2009
    Сообщения:
    17
    ээ, а куда это записать? Можно поподробнее.
    И как это решит проблему разбиения файла на пакеты и обратно?
     
  13. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    В сокет открытого TCP соединения.

    Батенька, читайте книжки по сетевому программированию и потом сами напишите прогу в ответ на свой вопрос "как мне передать файл по сети".
     
  14. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Все же уже написали, что тебе нужно.
    1. Первым пакетом отправляешь имя файла, размер и атрибуты, если они тебе нужны.
    2. Последующими пакетами отправляешь сам файл по кускам. Куски выбираешь как тебе хочется с учетом ограничений на размер пакета.
    На другой строне:
    1. Получаешь имя файла и размер.
    2. Принимаешь пакеты по очереди с строишь из них файл по порядку, пока не наберется данных размером в файл.
    Если тебе нужно передавать много файлов, то можешь ввсети сигнатуру. По-типу первый байт = 1, если это данные, и равен 0, если это информационный поток.
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Forever
    тут еще не хватает кода контроля целостности, но для TCP это не критично.
     
  16. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    Forever
    max7C4

    а при чем тут это все?
    тс явно узазал что его интересует работа с необработанными пакетами,
     
  17. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    ТС хочет проэмулировать работу всего сетевого стека насколько я понял
     
  18. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    TSS
    Тогда можно придти к выводу, что хоть ТС и утверждает, но RFC он и в глаза не видел. А если и видел, то очень не точный перевод. В оригинале все есть, и таких вопросов возникать не должно.