Получатель вычисляет и отправляет скользящие контрольные суммы только для непересекающихся блоков.
Наоборот, отправитель вычисляет его для каждого возможного блока (но сохраняет результат локальным). Тогда для отправителя, это просто вопрос проверки, совпадает ли один из неперекрывающихся блоков (отправленных получателем) с любым (перекрывающимся) локальным блоком.
Ваш пример слишком прост, чтобы увидеть что-нибудь интересное, два последних блока просто не будут совпадать и будут отправлены на слияние.
С более интересным примером (верхний регистр - блок):
Отправитель:
A B Cabc D
приемник:
A B C D
Получатель отправит MD5 и скользящий хеш для A, B, C и D.
Отправитель будет вычислять скользящий хеш для каждого (перекрывающегося) блока, он будет соответствовать для A, для B, для C и для D. Поскольку abc
не совпадает, он отправит его с информацией где слить его.