Зачем вам нужно сразу проверять контрольные суммы при загрузке или выгрузке из системы хранения объектов? - PullRequest
0 голосов
/ 24 апреля 2020

Системы хранения объектов, такие как AWS S3 и Google Cloud Storage, обсуждают необходимость проверки целостности загруженных и загруженных объектов сразу после передачи, чтобы убедиться в отсутствии повреждений.

Например, AWS CLI do c упоминает:

Загрузка: CLI AWS рассчитает и автоматически заполнит заголовок Content-MD5 для обоих стандартных и многочастные загрузки. Если контрольная сумма, которую вычисляет S3, не соответствует предоставленному Content-MD5, S3 не сохранит объект и вместо этого вернет сообщение об ошибке обратно AWS CLI.

Загрузка: AWS CLI будет пытаться проверить контрольную сумму загрузок, когда это возможно, на основе заголовка ETag, возвращаемого из запроса GetObject, который выполняется всякий раз, когда AWS CLI загружает объекты из S3. Если вычисленная контрольная сумма MD5 не соответствует ожидаемой контрольной сумме, файл удаляется и загрузка повторяется.

Учитывая, что TCP включает автоматическую проверку целостности c, почему эти системы требуют дополнительную контрольную сумму проверить целостность? Похоже, что с помощью TCP мы сможем убедиться, что при передаче не произошло повреждение.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Контрольные суммы TCP (и UDP) не всегда будут защищать вас, и известно, что они годами были слабыми (если не десятилетиями), быстрый поиск дает их, я уверен, что вы можете найти другие (и, возможно, лучшие) ссылки :

https://www.evanjones.ca/tcp-and-ethernet-checksums-fail.html https://www.evanjones.ca/tcp-checksums.html

Это не единственная причина, вы можете столкнуться с повреждением данных на локальном диске или Процессор может повредить биты при шифровании данных (это действительно происходит) или некоторую другую необычную проблему.

В целом, все эти системы предназначены для обработки угловых случаев и нечетных ситуаций, которые случаются настолько редко, что большинство мы не будем испытывать их через десятилетия. Но потому что эти системы используются очень многими людьми, и читают / пишут так много байтов, что они испытывают их ежедневно. Другими словами: редкие события в достаточно большом масштабе случаются часто.

0 голосов
/ 24 апреля 2020

Причин может быть много, но первая, которая приходит на ум, - это проверка того, что полезная нагрузка клиента не была повреждена (или злонамеренно изменена) во время чтения из источника данных до того, как данные действительно были переданы. Точно так же может быть повреждение записи в хранилище на стороне облака. Использование контрольной суммы на обоих концах - это способ застраховаться от этого, даже если это маловероятно.

...