精华内容
下载资源
问答
  • DMA数据传输

    千次阅读 2018-05-24 15:51:06
    SD主控制器与系统存储空间进行数据传输时使用SDMA或ADMA2传输方式,需要配置的参数包括:一次传输的数据块数、每块数据大小、传输边界、传输方向、传输数据首地址、DMA传输模式等信息(1)单DMA传输(SDMA) 单DMA...
      SD主控制器与系统存储空间进行数据传输时使用SDMA或ADMA2传输方式,需要配置的参数包括:一次传输的数据块数、每块数据大小、传输边界、传输方向、传输数据首地址、DMA传输模式等信息
    (1)单DMA传输(SDMA)
    单DMA传输的流程图如下图所示,在这种模式下,数据搬运通过SDMA完成,无需处理器参与,释放了CPU资源。在SDMA模式下,System Address存储的是数据传输的实际地址。因此SDMA传输可以从任何字节开始,对地址没有限制。数据传输块大小的定义需要根据FIFO深度来设置,其大小不能超过FIFO数据容量,一次连续传输数据块数与传输的数据量有关。
    当传输达到SDMA存储边界时,SDMA控制器将停止当前传输并产生中断给CPU,需要CPU对SDMA数据传输首地址进行更新才能继续进行数据传输,降低数据传输速度!比如系统边界4KB的条件下,传输32KB的数据需要产生的8次中断才能完成数据的传输。
    操作步骤:
    1. 系统内存的数据位置被设置为SDMA系统地址寄存器。
    2. 设置BlockSize寄存器,对CMD17, CMD18, CMD24, CMD25访问有效,仅在未发生传输时可以修改。
    3. 设置BlockCount寄存器,仅在多块传输模式下有效,控制器在每传输完一块后自减,只有在空闲时可以修改。设置Argument寄存器,该寄存器需写入SD访问CMD的bit[39:8];
    4. 设置Transfer Mode寄存器,主机驱动选择多块还是单块,使能块计数,数据传输的方向,自动使能CMD12和使能DMA。
    5. 设置Command寄存器。注意:写入命令寄存器的高字节[3]时,发出SD命令并启动SDMA。
    6. 然后等待中断命令完成。
    7. 向中断状态寄存器位写‘1’清除中断位;
    8. 读Response响应寄存器获取从SD卡得到的相关信息;
    9. 等待传输完成中断和DMA中断。
    10. 如果传输完成设置为1,则如果DMA中断设置为1,则转到步骤(14),否则转到步骤(12).Transfer Complete比DMA Interrupt高。
    11. Normal Interrupt Status寄存器的DMA中断中写入1清除该位。
    12. 将下一个数据位置的下一个System Address设置到System Address寄存器并转到步骤(10)。
    13. 在Normal Interrupt Status寄存器中向传输完成和DMA中断写入1,以清除此位。
    注意:步骤(2)和步骤(3)可以同时执行。步骤(5)和步骤(6)也可以同时执行。


    (2)ADMA2传输
    使用ADMA数据传输没有存储边界,不需要产生CPU中断,提高数据数据传输速度。使用ADMA传输时,ADMA System Address寄存器里建立一张描述链表(descriptor table),SD主控制器通过使用ADMA系统地址确定描述链表的首地址,从而访问链表中的每一个描述项内容。ADMA2描述表中每个描述项包含64位,高32位用于保存完整的数据传输首地址,其后的16位用于定义存放在以高32位为首地址存储空间内的数据长度,表述项对应的操作用两位ACT来定义,低三位标志位为数据有效标志位VAL、结束标志位END和中断标志位INT。

    typedef  struct  adma2 {
        CPU_INT16U wAttribute;
        CPU_INT16U wLen;
        CPU_INT32U dwAddress;
    } ADMA2;
    
        ADMA2    *AdmaDes;
        AdmaDes = (ADMA2*)(ATCM_ROM+0x2000);
        regh = (SDHOST_REG*)SDHOST_BSP__BASE;
        regh->SDH_CLOCK_CONTROL = 0x0805;
        regh->SDH_INT_ENABLE = 0xFFFFFFFF;
        regh->SDH_SIGNAL_ENABLE = 0xFFFFFFFF;
        AdmaDes[0].dwAddress = 0x40000000+(ATCM_ROM+0x1000);//CPU访问地址和DMA访问地址相差0x40000000
        AdmaDes[0].wLen = 0x200;//分段大小必须为BlockSize的整数倍
        AdmaDes[0].wAttribute = 0x21;
        
        AdmaDes[1].dwAddress = 0x40000000+(ATCM_ROM+0x1700);
        AdmaDes[1].wLen = 0x200;
        AdmaDes[1].wAttribute = 0x23;
      ADMA采用分散—聚集的DMA算法,通过描述表来控制数据传输,不需要在每一次地址边界向CPU发送中断信号。使用ADMA1模式进行数据传输时必须以4KB作为最小页面地址的限制,降低了存储空间的利用率;ADMA2模式解除了这一限制,AMDA2模式的传输策略与ADMA1相同,使用描述链表来控制DMA传输过程中数据在系统存储空间的存取位置和规模。
    操作步骤:
    1. 在系统内存中为ADMA创建描述符表。
    2. 在ADMA System Address寄存器中设置ADMA的描述符地址。
    3. 设置Block Count寄存器对应于一个块的执行数据字节长度的值。
    4. 设置Block Count寄存器与执行的数据块数相对应的值。
    如果在Transfer Mode寄存器中启用的块数设置为1,那么总数据长度可以由Block Count寄存器和描述符表指定。这两个参数表示相同的数据长度。但是,传输长度受到Block Count寄存器的限制。
    如果Transfer Mode寄存器中启用的块计数设置为0,则总数据长度不是Block Count寄存器指定,而是描述符表。在这种情况下,ADMA读取的数据要多于从SD卡中编写的长度。太多的读操作会异步地终止,当ADMA完成时,额外的读取数据就会被丢弃。
    1. 将参数值设置为参数1寄存器。
    2. 设置Transfer Mode寄存器。主机驱动程序决定多个/单个块选择、块数启用、数据传输方向、自动CMD12启用和DMA启用。
    3. 设置Command寄存器。
    注意:写入Command寄存器的高字节[3]时,发出SD命令,并启动DMA。
    1. 然后等待中断命令完成。
    2. 将Normal Interrupt Status寄存器中的命令完成写入1清除该位。
    3. 读Response响应寄存器获取从SD卡得到的相关信息;
    4. 等待传输完成中断和ADMA错误中断。
    5. 如果传输完成设置为1,则转到步骤(13);如果ADMA错误中断设置为1,则转到步骤(14)。
    6. 将Normal Interrupt Status寄存器中的传送完成状态写入1清除位。
    7. 将1写入错误中断状态寄存器中的ADMA错误中断状态,以清除该错误位。
    8. 中止ADMA操作。SD卡操作应该通过发出中止命令来停止。如果需要时,主机驱动程序检查ADMA错误状态寄存器,以检测ADMA产生错误的原因。
     
    注意:步骤(3)和步骤(4)可以同时执行。步骤(6)和步骤(7)也可以同时执行。

    下载

    linux S3C2440 DMA驱动开发



    展开全文
  • SPI数据传输

    千次阅读 2016-08-03 15:38:25
    SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中 仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, ...

     SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中
    仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送
    并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了.
     在数据传输的过程中,  每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取,
     那么这些已经接收完成的数据将有可能会被丢弃,  导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI
     传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的.


    SPI通信方式从机不能主动给主机发送数据.因为SPI是全双工的,主机在发送数据的同时也在接收数据.所以,主机可以
    通过查询(发送数据给从机,查看接收到的数据)方式来判断从机是否有数据发送给主机,如果有,则主机继续发送数
    据给从机来获取从机想要发送给主机的数据. 所以在MTK平台中写spi_read接口时,尽管只用read buf,但必须有writebuf
    1、主机想读取从机数据,那么就给从机发送一个特定的字节(比如:0x11),那么从机接收到0x11,就表示主机想读
    取从机的数据了。

    2、SPI是全双工,所以只要主从机之间有通信,你所说的发送线和接收线都是工作的,主机在接收
    数据的同时也在发送数据,如果主机发送线为0,从机接收到的就是0;为1,则从机接收到的就是1,从机接收完该数据
    不做任何处理就可以了。 你问题中“这个时刻从机为什么不认为主机在给他发送数据?”,主机不会认为主机不给它发
    送数据,从机是一直在接收主机所发送的数据的,至于接收到的数据怎么处理,就看你程序怎么编了

     

    【软件中如何设置SPI的极性和相位】
    SPI分主设备和从设备,两者通过SPI协议通讯。
    而设置SPI的模式,是从设备的模式,决定了主设备的模式。
    所以要先去搞懂从设备的SPI是何种模式,然后再将主设备的SPI的模式,设置和从设备相同的模式,即可正常通讯。
    对于从设备的SPI是什么模式,有两种:
    (1)固定的,有SPI从设备硬件决定的

    SPI从设备,具体是什么模式,相关的datasheet中会有描述,需要自己去datasheet中找到相关的描述,即:
    关于SPI从设备,在空闲的时候,是高电平还是低电平,即决定了CPOL是0还是1;
    然后再找到关于设备是在上升沿还是下降沿去采样数据,这样就是,在定了CPOL的值的前提下,对应着可以推算出CPHA是0还是1了。

    从图中可以看到,最开始的SCLK和结束时候的SCLK,即空闲时刻的SCLK,是低电平,推导出CPOL=0,然后可以看到数据采样的时候,即数据最中间的那一点,对应的是SCLK的第一个边沿,所以CPHA=0(此时对应的是上升沿)。

     

    建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,
    如果保持时间不够,数据同样不能被打入触发器。

    建立时间不满足,只能重新综合设计,并以违例路径为目标进行优化,以及对涉及到违例的组合逻辑以及子模块加紧约束。
    保持时间不满足,可在布图前或者布图后再修改这些违例,通常布图后再修改。因为布图前综合,时序分析采用统计线载模型,在布局前修正保持时间违例可能会导致布图后建立时间违例。
    1、setup time的意义:为什么Data需要在Clock到达之前到达?

    其实在实际的问题中,setup time并不一定是大于零的,因为Clock到达时刻并不等同于latch的传输门A关闭的时刻(更何况这种关闭并不是绝对的和瞬间完成的),这之间有一个未知的延迟时间。
         为使问题简化,假设Clock的到达时刻为传输门A关闭、传输们B打开的时刻。如果Data没有在这之前足够早的时刻到达,那么很有可能内部的 feedback线路上的电压还没有达到足够使得inv1翻转的地步(因为inv0有延时,Data有slope,传输门B打开后原来的Q值将通过 inv2迫使feedback保持原来的值)。如果这种竞争的情况发生,Q的旧值将有可能获胜,使Q不能够寄存住正确的Data值;当然如果 feedback上的电压已经达到了足够大的程度也有可能在竞争中取胜,使得Q能够正确输出。
          如果inv0、inv1和inv2的延时较大(Data的变化影响feedback和Q的时间越长),那么为了保证正确性就需要更大的setup time。所以在实际测量setup time的时候,需要选取工艺中最慢的corner进行仿真测量。

    2、hold time的意义:为什么Data在Clock到达之后仍然要保持一段时间?
          和setuptime的情况不一样,因为Clock到达时刻并不等同于latch的传输门A完全关闭的时刻。所以如果Data没有在Clock到达之后 保持足够长的时间,那么很有可能在传输门A完全关闭之前Data就已经变化了,并且引起了feedback的变化。如果这种变化足够大、时间足够长的话, 很有可能将feedback从原本正确的低电压拉到较高电压的电压。甚至如果这种错误足够剧烈,导致了inv1和inv2组成的keeper发生了翻转, 从而彻底改变了Q的正确值,就会导致输出不正确。当然,如果这种错误电压不是足够大到能够改变keeper的值,就不会影响到Q的正确输出。
          如果inv0、inv1和inv2的延时较小(Data的变化影响feedback和Q的时间越短),那么为了保证正确性,就需要更大的hold time。所以在实际测量hold time的时候,需要选取工艺中最快的corner进行仿真测量 

    展开全文
  • 数据传输安全

    千次阅读 2018-07-25 22:26:06
    数据传输安全的要求 首先我们先明确我们在数据传输时对于安全到底有什么具体要求: 消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。 消息的接收方可以确定消息...

     项目中遇到了解签解密,之前就曾经遇到过加密的问题,项目中也曾经遇到过这样的需求,但一直都没有系统的了解,正好这次一起把这块东西搞清楚。

    数据传输安全的要求

    首先我们先明确我们在数据传输时对于安全到底有什么具体要求:

    1. 消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。
    2. 消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息的发送方)。
    3. 消息的接收方可以确定消息在途中没有被篡改过(必须确认消息的完整性)。

    关于加密

    针对安全三个要求中的第一个要求,我们可以通过加密的方式解决。那么加密大致又分为对称加密和非对称加密,那么什么是对称加密,什么有是非对称加密呢?

    (一)对称加密

    对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。在1976年以前,所有的加密都采用对称加密。

    对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。

    不足之处是,交易双方都使用同样钥匙,安全性得不到保证。

    具体算法:DES算法3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。

    其中最经典的算法莫过于DES加密算法。DES加密采用的是分组加密的方法,使用56位密钥加密64位明文,最后产生64位密文。流程如下,大致了解即可。

    (二)非对称加密

    在1976年有两位数学家提出了一个崭新的非对加密的概念:

    1.A生成一对两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。

    2.B获取乙方的公钥,然后用它对信息加密。

    3.A得到加密后的信息,用私钥解密。

    受这个思路的启发,三位数学家Rivest、Shamir 和 Adleman 设计了一种具体实现上面描述的非对称加密的算法,以他们三个人的名字命名,就是目前在计算机领域应用非常广泛的非对称加密算法RSA加密算法。想深入理解非对称加密解密的原理可以看这里

    主要算法:RSA、Elgamal、背包算法、Rabin、HD,ECC(椭圆曲线加密算法)。

    虽然非对称加密很安全很强大,但是它也有缺点,相对于对称加密它计算量更大,计算时间更长。所以在大规模数据的安全通信场景中,普遍采用非对称加密技术来交换对称加密密钥,之后的通信都采用对称加密技术加密。

    关于签名

    利用加密我们满足了第一个要求,数据只有预期的接受方才能解密,但是在这个过程如何保证数据的完整性,保证数据是发送方发送的数据,而不是被第三方篡改后的数据,也就是第三点的要求,这时候就要用到签名。

    在发送方加密明文之前,给明文取md5值,得到其信息的摘要(注:不能通过信息摘要反推明文)。然后用公钥分别给明文和明文的摘要加密发送到数据的接收方,数据的接收方接收到数据之后,用私钥对密文和摘要进行解密,然后对解密得到的明文取md5摘要,比对解密后的明文摘要和发送过来的摘要是否一致;一致就证明数据是原始的数据没有遭到篡改。

    下面是图解过程:

    关于认证模式

    讲到这里,其实非对称加密算法中信息的发送方和接收方都分别有两个密钥,其中分别为私钥和公钥(各自的私钥和彼此的公钥),私钥为数据的发送方持有,公钥可以公开。其中涉及到两种模式,它们分别为加密模式和认证模式。

    在认证模式中,发送方用私钥加密数据,给接收方发送数据,接收方用公钥解密,因为私钥是唯一的,所以只要数据解析成功就可以知道数据发送方是谁。

    这样第二点的要求也达成了。

    总结

    结合以上,我们再来整理一下发送方和接收方所做的事情。

    发送方:

    1. 将消息进行散列运算,得到消息摘要。
    2. 使用自己的私钥对消息摘要加密(认证模式:确保了接收方能够确认自己)。
    3. 使用接收方的公钥对消息进行加密(加密模式:确保了消息只能由期望的接收方解密)。
    4. 发送消息和消息摘要。

    接收方:

    1. 使用发送方的公钥对消息摘要进行解密(确认了消息是由谁发送的)。
    2. 使用自己的私钥对消息进行解密(安全地获得了实际应获得的信息)。
    3. 将消息进行散列运算,获得消息摘要。
    4. 将上一步获得的消息摘要 和 第一步解密的消息摘要进行对比(确认了消息是否被篡改)。

    证书机制

    与数字签名相关的一个概念就是证书机制了,证书是用来做什么呢?在上面的各种模式中,我们一直使用了这样一个假设,就是接收方或者发送方所持有的、对方的公钥总是正确的(确实是对方公布的)。而实际上除非对方手把手将公钥交给我们,否则如果不采取措施,双方在网络中传递公钥时,一样有可能被篡改。那么怎样解决这个问题呢?这时就需要证书机制了:可以引入一个公正的第三方,当某一方想要发布公钥时,它将自身的身份信息及公钥提交给这个第三方,第三方对其身份进行证实,如果没有问题,则将其信息和公钥打包成为证书(Certificate)。而这个公正的第三方,就是常说的证书颁发机构(Certificate Authority)。当我们需要获取公钥时,只需要获得其证书,然后从中提取出公钥就可以了。

    SSH SSL与HTTPS

    谈完数据传输安全,不得不提到这几个具体应用的协议了。

    (一)SSH

    Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。
    传统的网络服务程序,如rshFTPPOPTelnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
    而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
    SSH之另一项优点为其传输的数据可以是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。

    而ssh的数据传输就用到了非对称加密,但是仍存在一个问题,假设A与B之间通信,利用非对称机密,B生成了一对公钥私钥,但在B将公钥传输给A的过程中,出现了C,C假冒了B生成了一堆公钥私钥,然后把公钥传给A,和A建立了加密通道,获取了所有A要发送给B的信息。这就是著名的“中间人”攻击。

    为解决这个问题,SSH协议采用由人工判断公钥的fingerprint是否可信的方式。当使用ssh命令连接服务器时,命令行会提示如下信息:

    The authenticity of host '168.30.9.213 (<no hostip for proxy command>)' can't be established.
    RSA key fingerprint is 23:42:c1:e4:3f:d2:cc:37:1d:89:cb:e7:5d:be:5d:53.
    Are you sure you want to continue connecting (yes/no)?
    

    输入yes之后才会连接到远程服务器,同时这个信息会存储到用户的.ssh/known_hosts文件中,下次再登录的时候,会检查known_host文件,如果存在相同的公钥信息,就不在提示用户确认了。

    这种认证方式假设想登陆服务器的用户已经知道服务器公钥(作为服务器的用户他自然有渠道得知服务器公钥)。fingerprint其实就代表公钥,可以看成是公钥的一个压缩版。有了这个步骤,如果有中间人想冒充服务器B发送公钥给A,它不可能生成一对和B生成的一样的公私密钥,他发送给A的公钥必然与B服务器的不同,所以用户就可以根据printfinger判断所连接的服务器是否可信,有没有被中间人冒充。

    具体的实现细节可参看SSH原理简介

    (二)SSL与TLS

    SSH其实是专门为shell设计的一种通信协议,它垮了两个网络层(传输层和应用层)。通俗点讲就是只有SSH客户端,和SSH服务器端之间的通信才能使用这个协议,其他软件服务无法使用它。但是其实我们非常需要一个通用的,建立在应用层之下的一个传输层安全协议,它的目标是建立一种对上层应用协议透明的,不管是HTTP、FTP、还是电子邮件协议或其他任何应用层协议都可以依赖的底层的可安全通信的传输层协议。

    网景公司于1994年为解决上面的问题,设计了SSL(Secure Sockets Layer)协议的1.0版本,但并未发布,直到1996年发布SSL3.0之后,开始大规模应用于互联网服务。

    跟SSH相比SSL所面临的问题要更复杂一些,上面我们提到,SSH协议通过人工鉴别Public Key的printfinger来判断与之通信的服务器是否可信(不是伪装的中间人)。可是SSL是为了整个互联网上的所有客户端与服务器之间通信而设计的,他们彼此之间不可能自己判断通信的对方是否可信。那么如何解决这个问题呢?

    这时候就要用到上述提到的证书机制,证书主要包含了

    • 对象的公开密钥
    • 数字

    如下图所示:

    因此,利用证书机制就完美了解决了信任问题。

    (三)HTTPS

    读完上面内容,理解HTTPS就简单了,它的全称是 Hypertext Transfer Protocol Secure,也称为HTTP over SSL,其实就客户端与服务系之间的HTTP通信基于SSL协议。

    对于HTTP协议和SSL协议本身没有任何特殊定制,因为SSL本身对HTTP协议就是透明的,HTTP在SSL上运作也不需要任何特殊处理。

    base64

    这边还要提下base64,起初以为这也是一种加密算法,其实不是,百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。也就是说,它其实只是一种编码格式。

    Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、128这33个字符属于控制字符,32~127这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。

    也就是说,如果将索引转换为对应的二进制数据的话需要至多6个Bit。然而ASCII码需要8个Bit来表示,那么怎么使用6个Bit来表示8个Bit的数据呢?6个Bit当然不能存储8个Bit的数据,但是4*6个Bit可以存储3*8个Bit的数据啊!如下表所示:

    可以看到“Son”通过Base64编码转换成了“U29u”。这是刚刚好的情况,3个ASCII字符刚好转换成对应的4个Base64字符。但是,当需要转换的字符数不是3的倍数的情况下该怎么办呢?Base64规定,当需要转换的字符不是3的倍数时,一律采用补0的方式凑足3的倍数,具体如下表所示:

    每6个Bit为一组,第一组转换后为字符“U”,第二组末尾补4个0转换后为字符“w”。剩下的使用“=”替代。即字符“S”通过Base64编码后为“Uw==”。这就是Base64的编码过程。

    参考文献

    SSH、SSL与HTTPS

    签名、加密、证书的基本原理和理解

    什么是Base64?

    展开全文
  • 带宽和数据传输速率

    万次阅读 2019-03-25 08:51:52
    数据传输速率: 数据传输速率是描述数据传输系统的重要技术指标之一。 数据传输速率在数值上等于每秒种传输构成数据代码的二进制比特数,单位为比特/秒(bit/second),记作bps。 对于二进制数据,数据传输速率为:S=...

    数据传输速率:

    数据传输速率是描述数据传输系统的重要技术指标之一。
    数据传输速率在数值上等于每秒种传输构成数据代码的二进制比特数,单位为比特/秒(bit/second),记作bps。
    对于二进制数据,数据传输速率为:S=1/T (bps)
    其中,T为发送每一比特所需要的时间。例如,如果在通信信道上发送一比特0、1信号所需要的时间是0.001ms,那么信道的数据传输速率为1000 000bps。
    在实际应用中,常用的数据传输速率单位有:kbps、Mbps和Gbps。
    其中:
    1kbps=10^3bps; 1Mbps=10^6kbps; 1Gbps=10^9bps。
    ————————————————————————————————————————————————————

    在现代网络技术中,人们总是以“带宽”来表示信道的数据传输速率,“带宽”与“速率”几乎成了同义词。信道带宽与数据传输速率的关系可以奈奎斯特(Nyquist)准则与香农(Shanon)定律描述。
    奈奎斯特准则指出:如果间隔为π/ω(ω=2πf),即1/2f,通过理想通信信道传输窄脉冲信号,则前后码元之间不产生相互窜扰。因此,对于二进制数据信号的最大数据传输速率Rmax与通信信道带宽B(B=f,单位Hz)的关系可以写为:

    Rmax=2B(bps)
    对于二进制数据,若信道带宽B=f=3000Hz,则最大数据传输速率为6000bps。
    也即信道带宽是数据传输速率的1/2。
    由上述可见,奈奎斯特定理描述了有限带宽、无噪声信道的最大数据传输速率与信道带宽的关系。

    ————————————————————————————————————————————————————

    香农定理描述了有限带宽、有随机热噪声信道的最大传输速率与信道带宽、信噪比之间的关系。

    下面看看香农定理:

    在有随机热噪声的信道上传输数据信号时,数据传输速率Rmax与信道带宽B、信噪比S/N的关系为:


    式中,Rmax单位为bps,带宽B单位为Hz,信噪比S/N通常以dB(分贝)数表示。若S/N=30(dB),那么信噪比根据公式:
    S/N(dB)=10lg(S/N)
    可得,S/N=1000。若带宽B=3000Hz,则Rmax≈20kbps。香农定律给出了一个有限带宽、有热噪声信道的最大数据传输速率的极限值。它表示对于带宽只有3000Hz的通信信道,信噪比在30db时,无论数据采用二进制或更多的离散电平值表示,都不能用越过20kbps的速率传输数据。
    因此通信信道最大传输速率与信道带宽之间存在着明确的关系,所以人们可以用“带宽”去取代“速率”。例如,人们常把网络的“高数据传输速率”用网络的“高带宽”去表述。因此“带宽”与“速率”在网络技术的讨论中几乎成了同义词。
    ————————————————————————————————————————————————————

    香农公式中:

    也可以写成:

    其中,C为信道容量;

    既然如此,那么信道容量又是什么?

    信道容量指信道可能传输的最大信息传输速率,即信道能达到的最大传输能力,单位为bps。

    上述两种表示一致。

    ————————————————————————————————————————————————————

    带宽又是什么鬼呢?

    带宽表示通信线路所能传送数据的能力:

    在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。对于带宽的概念,比较形象的一个比喻是高速公路。单位时间内能够在线路上传送的数据量,常用的单位是bps(bit per second)。计算机网络的带宽是指网络可通过的最高数据率,即每秒多少比特。

    严格来说,数字网络的带宽应使用波特率来表示(baud),表示每秒的脉冲数。而比特是信息单位,由于数字设备使用二进制,则每位电平所承载的信息量是以2为底2的对数,如果是四进制,则是以2为底的4的对数,每位电平所承载的信息量为2。因此,在数值上,波特与比特是相同的。由于人们对这两个概念分的并不是很清楚,因此常使用比特率来表示速率,也正是用比特的人太多,所以比特率也就成了一个带宽事实的标准叫法了。


     
    1Kbit/s=1000bit/s
     
    1Mbit/s=bit/s
     
    1Gbit/s=bit/s
    描述带宽时常常把“比特/秒”省略。例如,带宽是1M,实际上是1Mbps,这里的Mbps是指兆位/s。
    --------------------- 
    作者:李锐博恩(Reborn) 
    来源:CSDN 
    原文:https://blog.csdn.net/reborn_lee/article/details/80745218 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 一、传输层为什么实现不了可靠数据传输 传输层有两个协议,一个是TCP(可靠传输协议),一个是UDP(不可靠传输协议)。 根据五层模型,传输层接收的是网络层数据,也就是说TCP接收的数据(报文段)是由IP传送的,而IP只能...
  • rdt 可靠数据传输协议

    万次阅读 多人点赞 2018-05-20 11:22:54
    计算机网络的设计基本方案是复杂化,多功能化应用...为了保证数据传输的可靠性,我们选择在运输层采用复杂的rdt(可靠数据传输协议),以完成网络的可靠性。 原理图如下所示: rdt协议经历了rdt1.0,rdt2.0,rd...
  • oracle数据库数据传输

    千次阅读 2018-01-26 17:11:36
    今天,工作要求要将一个oracle数据库的所有数据库传输到另一台电脑的oracle数据库里,所以学习了几种数据传输的方法。 一、使用navicate软件进行数据传输 打开navicate软件,连接上源数据库和目标数据库 点击工具...
  • 数据传输速率与带宽之间的关系

    万次阅读 多人点赞 2018-06-20 14:50:20
    在补习通信原理相关知识时,经常遇到数据传输速率以及带宽的说法,自己也仅仅知道二者是1/2的关系,可并不理解为什么?如果不懂的话,很难继续理解下去,于是今天刨根问底,求助于网络资源,整合此方面的相关解释,...
  • Android蓝牙语音传输,数据传输

    千次阅读 热门讨论 2016-11-18 18:45:05
    也有单独数据传输的部分。 在网上找了很多,没有找到一个合适的demo,弄了几天终于弄出来了!下面把这个过程分享一下,希望帮助到有需要的朋友! 一 既然是在手机上开发,那第一步就应该是获取手机的本机蓝牙设备,...
  • 数据链路层的数据传输

    千次阅读 2016-12-22 12:02:40
    数据链路层的数据传输 在数据链路层,数据是以帧的形式传输的。帧由帧首部、数据部分、帧尾部这三个部分组成。帧的数据部分是从网络层传送到数据链路层的IP数据报,为了提高帧的传输效率,应当使数据部分的长度尽...
  • QT UDP数据传输

    千次阅读 2019-01-18 14:41:08
    (一)计算机网络 通过某种方式将多台计算机进行连接,实现多台计算机彼此之间的互联以及数据的交换。即在不同的计算机上编写一些实现了网络连接的程序,这些程序可以实现位于...在进行数据传输时,要求发送的数据...
  • GPRS 数据传输

    千次阅读 2015-12-29 16:39:18
    GPRS 数据传输应用 设置 PPP 场景:AT+CIPCSMP=1,”CMNET” 连接服务器:AT+CIPSTART="TCP",218.246.31.188,2020 OK CONNECT OK 查询 PPP 状态:AT+CIPSTATUS 8 OK 发送信息到网络服务器:AT+...
  • Java数据传输结构设计 - 接口数据封包#接口的数据结构* 接口应该有统一的数据格式* 接口应该具有良好的容错性* 接口应该具有安全性* 接口应该提供高可读性#接口数据返回的最外层结构{ "result": "8002", "msg": ...
  • 1.选择(工具--- 数据传输) 2.选择高级,高级里面有很多选择
  • UDP协议数据传输

    千次阅读 2018-07-31 17:21:13
    UDP数据传输就像,两台电脑就像两个码头(Socket)一样,码头上有集装箱货物和船只运输货物到另一个码头。码头xian相当于Socket,装货物的集装箱相当于需要发送的数据,运输的船只就是IO流了。图示如下:    ...
  • 蓝牙之数据传输问题

    万次阅读 2017-01-13 16:43:08
    蓝牙数据传输问题对于蓝牙来说google已经封装好了很多api所以使用起来并不会很难,但是实际开发中蓝牙开发最头疼的问题不是如何去调用api,而是数据的交互方面,如长连接,数据续传,硬件接受速率等问题.打开蓝牙有几种...
  • 数据传输封装与解封装过程

    千次阅读 2019-12-02 20:07:16
    数据传输封装与解封装过程** 数据封装过程:客户端 ①:产生通讯数据信息 – 数据信息:PDU(协议数据单元) ②:传输层封装过程 – 传输层头部信息+数据信息 ③:网络层封装过程 – 网络头部信息+传输层头部信息+数据信息 ...
  • 网络中数据传输的过程

    万次阅读 多人点赞 2018-05-23 18:17:56
    1. 数据传输的背景(1) 现在互联网中使用的是基于OSI七层模型的TCP/IP模型。TCP/IP模型包括五层,即物理层,数据链路层,网络层,传输层,应用层;其中数据链路层又可以分为两个子层,即LLC(逻辑链路控制层)和MAC...
  • usb数据传输

    千次阅读 2011-07-08 15:07:04
    针对设备对系统资源需求的不同,在usb规范中规定了4种不同的数据传输方式:1.等时传输2中断传输3控制传输4批量传输不同的传输方式对应不同的传输端点。控制传输主要用来传输设备控制指令,设备状态查询,确认命令。...
  • 数据传输安全性保证

    千次阅读 2018-07-07 17:43:42
    数据传输过程中,安全性十分重要,尤其是对于一些敏感的用户信息,其安全性保证更应当被重视。 现代软件开发中,无论是基于敏捷式的软件开发,或者基于前后端分离的软件开发,都离不开提供对外接口,而请求这些接口...
  • 【遇见CUDA】要更快,请提高数据传输效率!

    千次阅读 多人点赞 2020-08-17 21:22:26
    你的CUDA算法,数据传输是否是你的性能瓶颈呢?要用常规还是异步?锁页还是零拷贝?看完此文,你应该能有所判断!
  • 总线数据传输方式

    千次阅读 2017-08-20 12:36:00
    总线数据传输方式 同步式数据输入输出 主从模块强制同步,选择慢的模块为基准时钟来同步,一般适用于总线较短的情况。 异步通信 模式:请求=>应答 不互锁方式:不管是否接到请求或应答,都不再次请求或应答 缺点...
  • NB-IoT数据传输大致方法

    千次阅读 2020-02-17 20:41:47
    从上图基本上就可以看出来NB-IoT跟其他技术的差别,如果就按照我自己的理解,就是NB-IoT是需要插卡进行传输的,就和手机打电话要插电话卡一样,NB-IoT数据传输需要物联网卡,而其他的通讯方式都不需要,所以这就首先...
  • IPsec数据传输过程

    万次阅读 2013-03-14 14:51:54
    IPsec VPN数据传输过程 转载请注明出处:http://blog.csdn.net/rosetta 以下是一个数据包经IPsecVPN隧道的传送过程(如ICMP包),由左边的VPN保护子网内的PC机向右边VPN保护子网内的PC机传送数据时,左边PC发送的...
  • 数据传输通信协议总结

    千次阅读 2018-12-02 22:46:19
    数据传输时,总是存在丢包、分包、误包的情况。针对这一问题,则必须引进一套数据通信协议,来保证数据的完整性与准确性。  通常,针对丢包、误包问题都会采用数据长度和校验码比对的方式来判断一包数据的准确性...
  • 实现可靠数据传输的主要机制

    千次阅读 2018-07-06 08:49:04
    以TCP协议为例,TCP协议提供可靠数据传输,然而网络层不提供可靠数据传输,而是尽最大努力交付,因而,如何在不可靠传输的下层上边实现可靠数据传输的上层是一个复杂的问题。图1 可靠数据传输:服务模型和服务实现...
  • 网络间数据传输的原理 一、思考的问题 1.结合日常生活中的邮政运输系统,可分为几个组成部分,它们各自完成了什么样的功能? 2.它们之间都有什么样的约定?没有这些约定信件能否很顺利传送? 3.我们...
  • 可靠数据传输原理

    千次阅读 2016-11-12 13:23:20
    引言众所周知,TCP协议是一个面向连接,可靠的传输层的协议,而IP...在深入了解TCP协议之前,需要先熟悉一些基本的可靠数据传输原理,本文是笔者在阅读《计算机网络:自顶向下方法》中的传输层后做下的笔记总结。注意
  • 数据传输加密方式总结

    千次阅读 2018-03-25 19:54:00
    对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥...这种加密算法也是比较常见的,好处就是密钥在并不进行数据传输,一旦黑客获取到你的密钥...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 258,811
精华内容 103,524
关键字:

数据传输