zoukankan      html  css  js  c++  java
  • 文件快速上传和下载原理

    <1>Remote端(服务器端)数据的处理
    没必要去实现这个算法。直接调用库就可以了。
    chunk一块一块的数据块
    1. 将Remote端(服务器端)的数据按照Chunck进行切分
    2. 计算每一个chunk的弱校验和(Adler-32算法)与强校验和(MD5算法)
    3. 保存进Map中,key为弱校验ID,value为chunk链表
     Map>

    <2>Local 端处理(本地端)
    1. 读取一个Chunck  判断数据是否够一个chunck大小
    2. 根据读取到的Chunk 去Remote的Map中判断是否匹配. 如果匹配上看之前是否有differ Data ,如果有Differ Data则将diff Data加入patch中.
    最终会得到一个以匹配上的chunk index + differ Data的链表


    如果不匹配,就右移动一个字节,左边剩下的那个字节叫differ date,是服务器里没有的字节,是需要上传的字节。

    differ date(**)
    **01**02**03****0x  服务器收到的数据
    然后匹配填充形成新数据
    新数据 = differ date(客户端穿上来的)+ 服务器里已有的匹配数据

    这种算法的优缺点:节省了上传的文件大小,但是牺牲了CPU(CPU需要不停地计算,占用了CPU)

    网页是不能读取本地文件(处于安全考虑);所以有时需要装插件。

     
  • 相关阅读:
    利用Masscan批量生成随机ip地址表
    国光大力推荐(安利)Deepin15.4
    开启你的kali linux DIY之旅
    Docker入门简明教程
    Deepin Linux下的Metasploit安装及优化
    Hexo博客配置笔记
    Mac OS下开启自带的apache服务
    PentestBox简明使用教程
    Pentester中的XSS详解
    信息收集之网站镜像克隆
  • 原文地址:https://www.cnblogs.com/kelan/p/5284490.html
Copyright © 2011-2022 走看看