Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm rsync算法中的重叠块_Algorithm_Rsync_Checksum - Fatal编程技术网

Algorithm rsync算法中的重叠块

Algorithm rsync算法中的重叠块,algorithm,rsync,checksum,Algorithm,Rsync,Checksum,我正在浏览实用程序,在部分:确定文件的哪些部分已更改它说:发送方在其自己的文件版本中为大小为S的每个块计算滚动校验和,即使是重叠的块 疑问来了: 为什么收件人计算非重叠块的校验和,而发件人计算大小为S的重叠块 收件人和发件人的大小是否相同 什么是重叠块?假设您的文本为:abcdefgh和s=4,则接收方将计算abcd和efgh的校验和,并将其发送给发送方。然后,发送方将计算以下各项的校验和:abcd,bcde,cdef,defg,efgh(这是重叠块)并与接收方进行比较 那么它如何计算差异,即

我正在浏览实用程序,在部分:确定文件的哪些部分已更改它说:发送方在其自己的文件版本中为大小为S的每个块计算滚动校验和,即使是重叠的块

疑问来了:

  • 为什么收件人计算非重叠块的校验和,而发件人计算大小为S的重叠块
  • 收件人和发件人的大小是否相同
  • 什么是重叠块?假设您的文本为:
    abcdefgh
    s=4
    ,则接收方将计算
    abcd
    efgh
    的校验和,并将其发送给发送方。然后,发送方将计算以下各项的校验和:
    abcd
    bcde
    cdef
    defg
    efgh
    (这是重叠块)并与接收方进行比较
  • 那么它如何计算差异,即发送方和接收方不同的部分

如果收件人计算所有重叠块的滚动校验和,则校验和的数量几乎与文件大小相同。因此,将校验和发送给发送方要比发送文件的全部内容更昂贵,而且不会节省任何费用。因此,接收者将文件分割成大的、不重叠的块,这样它就可以发送少量的校验和和散列

发件人和收件人的大小必须相同。否则,校验和和和散列就永远不会匹配

可以找到关于该算法的更详细解释。它清楚地表明,S在发送者和接收者身上是相同的

这里有一个例子。假设收件人上的文件为:

abcdefghijkl
S=4。收件人将向发件人发送
abcd
efgh
ijkl
的校验和和散列

假设在发送方的文件中插入一个字符X:

abcdeXfghijkl
它将计算以下各项的校验和:

abcd
bcde
cdeX
deXf
eXfg
Xfgh
fghi
ghij
hijk
ijkl

它会将这些校验和与从收件人处收到的校验和进行比较,并确定
abcd
ijkl
没有改变。它只需要发送
eXfgh
,并指示它应该替换
efgh
区块。

如果收件人计算所有重叠区块的滚动校验和,则校验和的数量几乎与文件大小相同。因此,将校验和发送给发送方要比发送文件的全部内容更昂贵,而且不会节省任何费用。因此,接收者将文件分割成大的、不重叠的块,这样它就可以发送少量的校验和和散列

发件人和收件人的大小必须相同。否则,校验和和和散列就永远不会匹配

可以找到关于该算法的更详细解释。它清楚地表明,S在发送者和接收者身上是相同的

这里有一个例子。假设收件人上的文件为:

abcdefghijkl
S=4。收件人将向发件人发送
abcd
efgh
ijkl
的校验和和散列

假设在发送方的文件中插入一个字符X:

abcdeXfghijkl
它将计算以下各项的校验和:

abcd
bcde
cdeX
deXf
eXfg
Xfgh
fghi
ghij
hijk
ijkl
它会将这些校验和与从收件人处收到的校验和进行比较,并确定
abcd
ijkl
没有改变。它只需要发送
eXfgh
,并指示它应该替换
efgh