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