powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нужно ли проверять checksum файла, переданного по сети?
25 сообщений из 131, страница 1 из 6
Нужно ли проверять checksum файла, переданного по сети?
    #38754003
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача: передать файл по сети.
Есть выбор протоколов для этого: plain TCP, SSH, FTP, HTTP итд
Многие из этих протоколов реализуют разные проверки на правильность передачи данных. Например TCP проверяет checksum пакетов, SSH вычисляет hash.

Вопросы:
1) каким способом передать файл наиболее надежно по критерию целостности файла
2) каким способом передать файл наиболее быстро
3) нужно ли проверять md5/checksum своим кодом
?
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754110
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymytry,

HTTP,FTP - работают поверх TCP. SSH - обертка для обеспечения безопасности. Я бы выбирал между TCP и FTP. Как оно в деталях - тебе сюда .
Хинт - при ошибке в checksum пакета протокол запрашивает его повторно.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754171
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше слать в архиве, тогда архиватор проверит при распаковке. И трафика будет поменьше.

Недавно столкнулся с тем что по FTP с помощью wput иногда доходят битые файлы. Еще не разбирался, думаю проблема в отправителе, т.к. наблюдается на двух разных FTP.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754752
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл двоичный режим передачи включить?..
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754797
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗабыл двоичный режим передачи включить?..
хз, передается многотомный rar-архив, 10-20 файлов, битый всегда последний файл (есть копия отправленного), причем валиться так что размер совпадает, а содержимое левое, но структура rar-a соблюдена. Мистика какая-то. Может винда как-то помогает. Иногда нормально доходит.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754816
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗабыл двоичный режим передачи включить?..
Не было, добавил -B, понаблюдаю.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754948
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymytryЕсть задача: передать файл по сети.
Есть выбор протоколов для этого: plain TCP, SSH, FTP, HTTP итд
Многие из этих протоколов реализуют разные проверки на правильность передачи данных. Например TCP проверяет checksum пакетов, SSH вычисляет hash.

Вопросы:
1) каким способом передать файл наиболее надежно по критерию целостности файла
2) каким способом передать файл наиболее быстро
3) нужно ли проверять md5/checksum своим кодом
?

все эти протоколы выстроены на базе TCP, который гарантирует целостность передачи, т.е. ты либо получишь целостную передачу, либо тебе выдадут ошибку. поэтому чексумма не нужна.

Но она может быть нужна для устранения других проблем -- подмены сайта передачи, программных ошибок при передаче и т.п.


1) каким способом передать файл наиболее надежно по критерию целостности файла

Любым.

2) каким способом передать файл наиболее быстро

Почти всё равно. Шифрованные протоколы немного медленнее.


3) нужно ли проверять md5/checksum своим кодом

Не нужно. НО можно.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754953
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TDimitry SibiryakovЗабыл двоичный режим передачи включить?..
хз, передается многотомный rar-архив, 10-20 файлов, битый всегда последний файл (есть копия отправленного), причем валиться так что размер совпадает, а содержимое левое, но структура rar-a соблюдена. Мистика какая-то. Может винда как-то помогает. Иногда нормально доходит.

Это реально мистика, видимо, у тебя битый эталон.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38754981
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymytry3) нужно ли проверять md5/checksum своим кодом
Несмотря на то что TCP и нижележащие протоколы имеют контрольные суммы, эти суммы не гарантируют что данные не битые.
Там простая 16-битная сумма, даже не CRC. Повреждения в виде двух битых байтов компенсирующих друг друга не определяются.
Поэтому если стоит задача гарантировать целостность переданных данных, то используйте дополнительно MD5/SHA-1 и подобные суммы.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755027
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как часто кто-либо видел искажание текста хоть на этом сайте, хоть где-то ещё?
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755057
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто реально мистика, видимо, у тебя битый эталон.
Это бэкап бэкапа на самый черный день. Несколько больших файлов ежедневно бэкапится, копия сливается на ftp. Т.к. размер большой, то пакуется томами по 50 Мб.

Вот кусок батника который копирует
Код: sql
1.
2.
3.
4.
5.
for %%f in (ONE\*.*) do (
echo %DATE% %TIME% Запись на FTP %%f>>..\backup.log
copy %%f ..\COPY\%%f
..\wput.exe -R -u -t=5 -B %%f ftp://%USER%:%PASS%@%SERVER%/
)


Т.е. копируется в два места: локальная папка COPY и на FTP
Руками скачиваю с FTP и сверяю. Не сходится всегда последний.

Например сегодняПравильный локально:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
COPY\ONE\source_hdd_backup.part23.rar
0000000000:  52 61 72 21 1A 07 00 B9 │ 7D 73 51 00 0D 00 00 00  Rar!→• ╣}sQ ♪
0000000010:  00 00 00 00 D5 0C 74 C1 │ 90 3A 00 86 43 2F 00 86      ╒♀t┴Р: ЖC/ Ж
0000000020:  12 1A 41 02 E3 68 2B 9B │ AD BE 36 45 14 30 15 00  ↕→A☻уh+Ын╛6E¶0§
0000000030:  20 00 00 00 73 6F 75 72 │ 63 65 5F 68 64 64 5F 62      source_hdd_b
0000000040:  61 63 6B 75 70 2E 72 61 │ 72 00 B0 50 5A 17 D4 84  ackup.rar ░PZ↨╘Д
0000000050:  0D 1C 2C 87 A7 7C 3C 0F │ 06 66 2E 95 7E A9 5C 5E  ♪∟,Зз|<☼♠f.Х~й\^
0000000060:  91 C9 2D 6B 8A 0B 7E 23 │ 3B B6 27 43 69 08 C4 A6  С╔-kК♂~#;╢'Ci◘─ж
0000000070:  88 FA 9D 91 EB 29 A5 7F │ DC 1E 2B 5A 54 81 88 8E  И·ЭСы)е?▄▲+ZTБИО
0000000080:  96 3F 4F 29 7C AD AD 3E │ 24 D5 B1 78 2C 88 2D F4  Ц?O)|нн>$╒▒x,И-Ї
0000000090:  1B FB 98 39 69 19 8F E9 │ FA F2 83 99 D7 E4 8B 22  ←√Ш9i↓Пщ·ЄГЩ╫фЛ"
...
Неправильный на FTP
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FTP:\\ONE\source_hdd_backup.part23.rar
0000000000:  52 61 72 21 1A 07 00 B9 │ 7D 73 51 00 0D 00 00 00  Rar!→• ╣}sQ ♪
0000000010:  00 00 00 00 CE 28 74 C1 │ 90 3A 00 F6 3D 25 00 F6      ╬(t┴Р: Ў=% Ў
0000000020:  0C 10 41 02 A7 92 38 09 │ AD BE 34 45 14 30 15 00  ♀►A☻зТ8○н╛4E¶0§
0000000030:  20 00 00 00 73 6F 75 72 │ 63 65 5F 68 64 64 5F 62      source_hdd_b
0000000040:  61 63 6B 75 70 2E 72 61 │ 72 00 F0 7E C0 90 4B E7  ackup.rar Ё~└РKч
0000000050:  6B BC 26 C2 56 50 23 DF │ 5D ED 6F 07 3F BB 89 7D  k╝&┬VP#▀]эo•?╗Й}
0000000060:  43 09 75 35 82 4B C2 9F │ F3 85 A7 B6 D4 17 C5 1E  C○u5ВK┬ЯєЕз╢╘↨┼▲
0000000070:  8D 7C CE 61 4F 4B 4D 45 │ 1F 04 CF CB 99 3A 42 D0  Н|╬aOKME▼♦╧╦Щ:B╨
0000000080:  73 2B C4 09 86 49 95 19 │ 8B 51 77 DD C6 BB A1 1A  s+─○ЖIХ↓ЛQw▌╞╗б→
0000000090:  B1 A8 5D 4F 58 B7 E9 65 │ 90 15 08 30 B1 75 DC 50  ▒и]OX╖щeР§◘0▒u▄P
...
первые 22 тома совпадают до байта.
Было подозрение что это возможно вчерашний не затерся, нет, у вчерашнего другой размер и содержимое. Тут размер одинаковый. Содержимое чуть-чуть совпадает в первых байтах, дальше все разное. Мистика. -B сегодня добавил, может поможет, но сомневаюсь.
Причем таких многотомных архивов несколько, и в каждом валится только последний том. Иногда не валится, но редко.
Есть подозрение что может виндовс как-то "помогает", т.к. перед отправкой запаковка, но опять же локальная копия нормальная. В общем мистика.

PS Проверяйте бэкапы. Я так два года бэкапил, недавно решил проверить распаковку. Я в шоке.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755066
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИ как часто кто-либо видел искажание текста хоть на этом сайте, хоть где-то ещё?
Я видел. HTTP/GET скачивание файла. Некоторые прокси могут портить файлы. Редко, но бывает.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755070
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНекоторые прокси могут портить файлы. Редко, но бывает.Ну и каким боком кривой софт к надёжности протокола?
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755075
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovDima TНекоторые прокси могут портить файлы. Редко, но бывает.Ну и каким боком кривой софт к надёжности протокола?
А где гарантия что кривой софт не будет участвовать? В паре случаев был виноват кэш NGINX`а.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755092
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И?
От необходимости тестовых восстановлений это всё равно не освобождает, т.к. причин, по которым это восстановление не пройдёт - много и дефекты софта и железа будут явно не на первом месте.

P.S. Лично мне приходилось более-менее регулярно выкладывать архивы на пару-тройку гигабайт.
После того, как осознали, что 7-zip пишет в первый кусок нужную ему информацию после создания всего набора - проблем не было.
Даже после того, как отказались от дробления архивов на части.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755160
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИ?
От необходимости тестовых восстановлений это всё равно не освобождает, т.к. причин, по которым это восстановление не пройдёт - много и дефекты софта и железа будут явно не на первом месте.
Освобождает иногда. Если данные не являются куском чего-то более глобального (например репликации БД). В некоторых случаях достаточно чтобы получатель оперативно понял что не дошло, т.е. битого файла достаточно. Дальше сами свяжутся с отправителем и попросят повторить.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755178
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИ как часто кто-либо видел искажание текста хоть на этом сайте, хоть где-то ещё?
Какая разница как часто обнаруживали?
Главное что вероятность несрабатывания контроля довольно высока - 1/65536 от всех поврежденных пакетов.
Что например в сетях с высоким уровнем коллизий (сотовые/вайфай) на больших файлах дает ощутимую вероятность повреждения данных.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755182
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyГлавное что вероятность несрабатывания контроля довольно высока - 1/65536 от всех поврежденных пакетов.
Что например в сетях с высоким уровнем коллизий (сотовые/вайфай) на больших файлах дает ощутимую вероятность повреждения данных.Вероятность намного (на порядки) ниже. Существует еще проверка на канальном уровне (Ethernet-фрейм и т.п.) во всех современных средствах связи. Без таковой проверки последнее, что я видел, была модемная связь со скоростями порядка 7200-9600 (точные протоколы уже не помню).
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755194
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymytryЕсть задача: передать файл по сети.
Есть выбор протоколов для этого: plain TCP, SSH, FTP, HTTP итд
Многие из этих протоколов реализуют разные проверки на правильность передачи данных. Например TCP проверяет checksum пакетов, SSH вычисляет hash.

Вопросы:
1) каким способом передать файл наиболее надежно по критерию целостности файла
2) каким способом передать файл наиболее быстро
3) нужно ли проверять md5/checksum своим кодом
?
Я вспоминаю разные случаи из практики обмена бэкапами БД (нехилые кусочки по несколько терабайт)
когда вобщем-то протокол не имел значения (чаще всего это был SSH!). Попробую перечислить эпик-фейлы.

1) Слали на старую Linux/RHEL32 bit машинку в которой нельзя было
создавать файлы больше 2 Гб. Epic fail. Долго искали хвост проблемы.
Она каким-то образом сигнализировлась как ошибка другого рода.

2) Неграмотный админ очень резко закрывал сеанс Far/SCP копирования. Zip-плагин
отпускал управление очень быстро. Но в фоновом режиме FAR дописывал zip архив.
Админ этого не знал. Получали по башке все включая админа. Epic fail.

3) Слали многотомный архив RAR (опция Solid включена). Где-то запоролся 1 битик в среднем томе.
Пришлось перезаливать всё заново. RAR не мог восстановить трафик в середине после сбойного бита.
Оригинальные архивы не сохранялись по причине нехватки места на сервере БД.

4) Zip коцал кириллицу в именах файлов, gzip/tar по неизвестным причинам вдруг отказывались распаковываться
на винде. FTP сервер стоял в текстовом режиме. Были попытки протолкнуть много гигабайтный файл через корпоративную
почту.

Вобщем во многих этих случаях протокол связи не имел значения. Он вобщем-то свою задачу делал. Но
некорректным было обращение с файлами большого размера, незнание и неумение работать с сеткой
в highload, эникейство и раздолбайство многих ответственных лиц которые передавали файл.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755196
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВероятность намного (на порядки) ниже. Существует еще проверка на канальном уровне (Ethernet-фрейм и т.п.) во всех современных средствах связи.
А, ну если там другая к.сумма, тогда да.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно ли проверять md5/checksum своим кодом
Да. Нужно. Если вы - являетесь заинтересованным лицом, то перед отправкой файла
почтой, протоколом, вебом, диском или флешкой делаете

openssl md5 <filename>

формируйте контрольную сумму md5 и прикрепляйте ее рядом в виде текстового
файла или в почтовом сообщении. Обяжите получателя сделать проверку файла
при получении так-же.

Такая практика распространения файлов существует например у Apache Software Foundation
при публикации дистрибутивов и у многих других поставщиков опенсорца.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755216
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyГлавное что вероятность несрабатывания контроля довольно высока - 1/65536 от всех поврежденных пакетов.
Добавь еще такую же вероятность из IP (там также сумма считается), в который оборачивается TCP-пакет. Будет 1/2^32 и умнож на вероятность сбоя в канале передачи.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755218
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDymytryЕсть задача: передать файл по сети.
Есть выбор протоколов для этого: plain TCP, SSH, FTP, HTTP итд
Многие из этих протоколов реализуют разные проверки на правильность передачи данных. Например TCP проверяет checksum пакетов, SSH вычисляет hash.

Вопросы:
1) каким способом передать файл наиболее надежно по критерию целостности файла
2) каким способом передать файл наиболее быстро
3) нужно ли проверять md5/checksum своим кодом
?
Я вспоминаю разные случаи из практики обмена бэкапами БД (нехилые кусочки по несколько терабайт)
когда вобщем-то протокол не имел значения (чаще всего это был SSH!). Попробую перечислить эпик-фейлы.

1) Слали на старую Linux/RHEL32 bit машинку в которой нельзя было
создавать файлы больше 2 Гб. Epic fail. Долго искали хвост проблемы.
Она каким-то образом сигнализировлась как ошибка другого рода.

2) Неграмотный админ очень резко закрывал сеанс Far/SCP копирования. Zip-плагин
отпускал управление очень быстро. Но в фоновом режиме FAR дописывал zip архив.
Админ этого не знал. Получали по башке все включая админа. Epic fail.

3) Слали многотомный архив RAR (опция Solid включена). Где-то запоролся 1 битик в среднем томе.
Пришлось перезаливать всё заново. RAR не мог восстановить трафик в середине после сбойного бита.
Оригинальные архивы не сохранялись по причине нехватки места на сервере БД.

4) Zip коцал кириллицу в именах файлов, gzip/tar по неизвестным причинам вдруг отказывались распаковываться
на винде. FTP сервер стоял в текстовом режиме. Были попытки протолкнуть много гигабайтный файл через корпоративную
почту.

Вобщем во многих этих случаях протокол связи не имел значения. Он вобщем-то свою задачу делал. Но
некорректным было обращение с файлами большого размера, незнание и неумение работать с сеткой
в highload, эникейство и раздолбайство многих ответственных лиц которые передавали файл.

не знаю, мы очень большие файлы перекидывали rsync ом, никогда проблем не было.
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755220
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyвероятность 1/65536
Так тоже утверждать нельзя. Надо учитывать особенность канала передачи и алгоритм проверки. Наиболее вероятная ошибка канала - неправильный прием одного бита, т.е. 0 буде принят как 1 или наоборот. Алгоритм проверки это выявит. Вероятность двухбитовой ошибки = вероятность однобитовой в квадрате, трехбитовой - в кубе и т.д. Сколько бит должно быть искажено чтобы контрольная сумма совпала?
...
Рейтинг: 0 / 0
Нужно ли проверять checksum файла, переданного по сети?
    #38755226
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivне знаю, мы очень большие файлы перекидывали rsync ом, никогда проблем не было.
У заказчика чаще всего не было rsync. Да и разговор не вёлся в этом ключе.
Нас просто ставили перед фактом что будет так или эдак.
...
Рейтинг: 0 / 0
25 сообщений из 131, страница 1 из 6
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нужно ли проверять checksum файла, переданного по сети?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]