精华内容
下载资源
问答
  • Android实现Wifi数据传输

    热门讨论 2015-03-06 13:48:19
    两部手机连接wifi后,通过socket进行数据传输 说明: 测试需要两部安卓手机A,B。A手机创建WIFI热点作为服务器,B手机连接A手机WIFI热点,作为客户端。 //A手机服务器 接收数据步骤:1点击创建Wifi热点2点击"turn_on_...
  • Java实现与FTP服务器的数据传输2

    热门讨论 2015-11-12 16:53:20
    Java实现与FTP服务器的数据传输。 其中包含了两种实现方法。详情请参见本人博客: http://blog.csdn.net/lemon_tree12138/article/details/49777467
  • 【遇见CUDA】要更快,请提高数据传输效率!

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

    原创文章,未经允许,禁止转载!谢谢!

    关于CUDA并行计算,我之前正儿八经的写过两篇博客:

    【遇见CUDA】线程模型与内存模型
    【遇见CUDA】CUDA算法效率提升关键点概述

    那时候,我正好完成了立体匹配算法的CUDA实现,掌握了一些实实在在的CUDA编程知识,我从我的博士论文里把CUDA部分整理出来写了两篇很基础的科普文。

    感兴趣的同学可以看看我实现的算法运行视频:

    放一个GPU版的SGM,看能不能跑赢KITTI采集车

    转眼快两年时间,我中间竟然再也没系统性的碰过CUDA,我想我的技术怕是要退化了。最近,组内同事接到一个CUDA算法优化项目,在效率优化的过程中,我们相互交流学习,就发现一个有关设备端和主机端之间数据传输的效率问题,简单来说就是数据传输效率成为了算法的性能瓶颈。

    同事最终通过固定内存异步传输解决了该问题。本篇的主题也就以此为背景,想为大家科普下:

    如何提高数据传输效率!

    有同学可能想说,数据传输不就是cudaMemcpy吗?还有什么优化的方案呢?

    当然有,还不止一种!

    1. 我们在讨论什么?

    我们讨论的数据传输,是指设备端和主机端的数据相互拷贝。

    设备端指GPU端,数据存放在显存中;主机端指CPU,数据存放在内存中。一般情况下,设备端是不能直接访问主机端内存的(注意是一般情况下,有一种情况是例外,我后面会说),而我们的数据通常情况下都是存放在主机端内存中,要在GPU中执行算法运算就必须先把数据拷贝至设备端,运算完成再把结果拷回至主机端。这个传输过程,显然是会耗时的。

    传输需要多少耗时? 这和PCIe总线带宽正相关。PCIe是CPU和GPU之间数据传输的接口,发展至今有多代技术,从之前的PCIe 1.0到现在的PCIe 3.0、PCIe 4.0,带宽越来越大,传输也是越来越快。一般PCIe会有多条Lane并行传输,理论传输速度成倍增加,我这里列一下多路PCIe 3.0、PCIe 4.0各自的带宽数值:
    在这里插入图片描述
    可以看到不同代次的总线宽度显著不同,而多Lane有成倍的带宽优势。

    我用GPU查了查我的GTX1070桌面版,显示是PCIe x16 3.0,对应上表中的16000MB/s的带宽。
    在这里插入图片描述
    我们可以通过总线带宽来计算数据传输耗时,以一张1280x960的灰度图像为例,1个像素占1个字节,则传输数据量为 1280x960x1 B = 1228800 B = 1200 KB = 1.172 MB。若用我的GTX1070,则传输耗时 t = 1.172/16000 s ≈ 0.07 ms。看起来很少对不对,但我们算的可是理论峰值带宽,你见过有几个产品能到理论峰值的呢?最后的时间基本是要打较大折扣的,时间估计在0.12ms左右,你可能还是觉得很少,但是如果你传的是彩色图(一个像素3个字节)呢?要是一次需要传两张图呢?t = 0.12 x 3 x 2 = 0.72 ms,对于GPU算法来说,这个时间就不该被忽视了。

    本文的主题即整理CUDA中各种不同的内存分配/传输方式,传输效率有何不同。希望能为大家设计算法提供一个参考。

    2. 不同的内存分配/传输方式,传输效率有何不同?

    (1)常规方式传输:cudaMemcpy

    在CUDA中常规的传输接口是cudaMemcpy,我想这也是被使用最多的接口,他可以将数据从主机端拷贝至设备端,也可以从设备端拷贝至主机端,函数声明如下:

    __host__ ​cudaError_t cudaMemcpy ( void* dst, const void* src, size_t count, cudaMemcpyKind kind )
    

    cudaMemcpyKind决定拷贝的方向,有以下取值:

    cudaMemcpyHostToHost = 0
    Host -> Host
    cudaMemcpyHostToDevice = 1
    Host -> Device
    cudaMemcpyDeviceToHost = 2
    Device -> Host
    cudaMemcpyDeviceToDevice = 3
    Device -> Device
    cudaMemcpyDefault = 4
    Direction of the transfer is inferred from the pointer values. Requires unified virtual addressing
    

    该方式使用非常简单,很多情况下效率也足以满足性能需求。

    (2)高维矩阵传输:cudaMemcpy2D/cudaMalloc3D

    顾名思义,cudaMemcpy2D/cudaMalloc3D是应对2D及3D矩阵数据的。以图像为例,我们可以用cudaMalloc来分配一维数组来存储一张图像数据,但这不是效率最快的方案,推荐的方式是使用cudaMallocPitch来分配一个二维数组来存储图像数据,存取效率更快。

    __host__ ​cudaError_t cudaMallocPitch ( void** devPtr, size_t* pitch, size_t width, size_t height )
    

    cudaMallocPitch有一个非常好的特性是二维矩阵的每一行是内存对齐的,访问效率比一维数组更高。而通过cudaMallocPitch分配的内存必须配套使用cudaMemcpy2D完成数据传输。

    __host__ ​cudaError_t cudaMemcpy2D ( void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind )
    

    相比于cudaMemcpy2D对了两个参数dpitch和spitch,他们是每一行的实际字节数,是对齐分配cudaMallocPitch返回的值。

    并非说cudaMemcpy2D/cudaMemcpy3D比cudaMemcpy传输更快,而是对齐内存必须使用cudaMemcpy2D/cudaMemcpy3D来配套使用。

    3D矩阵的配套API为:

    __host__ ​cudaError_t cudaMalloc3D ( cudaPitchedPtr* pitchedDevPtr, cudaExtent extent )
    
    __host__ ​cudaError_t cudaMemcpy3D ( const cudaMemcpy3DParms* p )
    

    (3)异步传输:cudaMemcpyAsync / cudaMemcpy2DAsync / cudaMemcpy3DAsync

    我们知道传输是走PCIe总线的,计算和PCIe总线里的数据流通完全独立,那么某些情况下,我们可以让计算和传输异步进行,而不是等数据传输完再做计算。

    举个例子:我必须一次传入两张图像,做处理运算。常规操作是使用cudaMemcpy或者cudaMemcpy2D把两张图像都传输到显存,再启动kernel运算。传输和运算是串行的,运算必须等待传输完成。

    而cudaMemcpyAsync / cudaMemcpy2DAsync / cudaMemcpy3DAsync 可以让传输和运算之间异步并行。上面的例子,如果用cudaMemcpyAsync或cudaMemcpy2DAsync,可以先传输第一张影像到显存,然后启动第一张影像的运算kernel,同时启动第二张影像的传输,此时第一张影像的运算和第二张影像的传输就是异步进行的,互相独立,便可隐藏掉第二张影像的传输耗时。

    三个异步传输接口如下:

    __host__ ​ __device__ ​cudaError_t cudaMemsetAsync ( void* devPtr, int  value, size_t count, cudaStream_t stream = 0 )
    
    __host__ ​ __device__ ​cudaError_t cudaMemcpy2DAsync ( void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream = 0 )
    
    __host__ ​ __device__ ​cudaError_t cudaMemcpy3DAsync ( const cudaMemcpy3DParms* p, cudaStream_t stream = 0 )
    

    异步传输是非常实用的,当你一次处理多个数据时,可以考虑是否可以用异步传输来隐藏一部分传输耗时。

    (4)锁页内存(Page-locked)

    锁页内存是在主机端上的内存。主机端常规方式分配的内存(用new、malloc等方式)都是可分页(pageable)的,操作系统可以将可分页内存和虚拟内存(硬盘上的一块空间)相互交换,以获得比实际内存容量更大的内存使用。

    问:为什么我的内存满了程序还不崩?
    答:因为正在使用虚拟内存。
    问:为什么这么慢!
    答:你就想想你拷文件有多慢。

    如上所述,可分页内存在分配后是可能被操作系统移动的,GPU端无法获知操作系统是否正在移动对可分页内存,所以不可让GPU端直接访问。实际的情况是,当从可分页内存传输数据到设备内存时,CUDA驱动程序首先分配临时页面锁定的主机内存,将可分页内存复制到页面锁定内存中 [copy 1],然后再从页面锁定内存传输到设备内存 [copy 2]。显然,这里面有两次传输。

    所以我们能否直接分配页面锁定的内存?让GPU端直接访问,让传输只有一次!

    答案是肯定的,我们可以在主机端分配锁页内存。锁页内存是主机端一块固定的物理内存,它不能被操作系统移动,不参与虚拟内存相关的交换操作。简而言之,分配之后,地址就固定了,被释放之前不会再变化。

    GPU知道锁页内存的物理地址,可以通过“直接内存访问(Direct Memory Access,DMA)”技术直接在主机和GPU之间复制数据,传输仅一次,效率更高。

    CUDA提供两种方式在主机端分配锁页内存

    1. cudaMallocHost
    __host__ cudaError_t cudaMallocHost ( void** ptr, size_t size )
    

    ptr为分配的锁页内存地址,size为分配的字节数。

    2. cudaHostAlloc
    __host__ ​cudaError_t cudaHostAlloc ( void** pHost, size_t size, unsigned int  flags )
    

    pHost为分配的锁页内存地址,size为分配的字节数,flags为内存分配类型,取值如下:

    • cudaHostAllocDefault
      默认值,等同于cudaMallocHost。
    • cudaHostAllocPortable
      分配所有GPU都可使用的锁页内存
    • cudaHostAllocMapped。
      此标志下分配的锁页内存可实现零拷贝功能,主机端和设备端各维护一个地址,通过地址直接访问该块内存,无需传输。
    • cudaHostAllocWriteCombined
      将分配的锁页内存声明为write-combined写联合内存,此类内存不使用L1 和L2 cache,所以程序的其它部分就有更多的缓存可用。此外,write-combined内存通过PCIe传输数据时不会被监视,能够获得更高的传输速度。因为没有使用L1、L2cache, 所以主机读取write-combined内存很慢,write-combined适用于主机端写入、设备端读取的锁页内存。

    分配的锁页内存必须使用cudaFreeHost接口释放。

    对于一个已存在的可分页内存,可使用cudaHostRegister() 函数将其注册为锁页内存:

    __host__ ​cudaError_t cudaHostRegister ( void* ptr, size_t size, unsigned int  flags )
    

    flags和上面一致。

    锁页内存的缺点是分配空间过多可能会降低主机系统的性能,因为它减少了用于存储虚拟内存数据的可分页内存的数量。对于图像这类小内存应用还是比较合适的。

    (5)零拷贝内存(Zero-Copy)

    通常来说,设备端无法直接访问主机内存,但有一个例外:零拷贝内存!顾名思义,零拷贝内存是无需拷贝就可以在主机端和设备端直接访问的内存。

    零拷贝具有如下优势:

    • 当设备内存不足时可以利用主机内存
    • 避免主机和设备间的显式数据传输

    准确来说,零拷贝并不是无需拷贝,而是无需显式拷贝。使用零拷贝内存时不需要cudaMemcpy之类的显式拷贝操作,直接通过指针取值,所以对调用者来说似乎是没有拷贝操作。但实际上是在引用内存中某个值时隐式走PCIe总线拷贝,这样的方式有几个优点:

    • 无需所有数据一次性显式拷贝到设备端,而是引用某个数据时即时隐式拷贝
    • 隐式拷贝是异步的,可以和计算并行,隐藏内存传输延时

    零拷贝内存是一块主机端和设备端共享的内存区域,是锁页内存,使用cudaHostAlloc接口分配。上一小结已经介绍了零拷贝内存的分配方法。分配标志是cudaHostAllocMapped。

    对于零拷贝内存,设备端和主机端分别有一个地址,主机端分配时即可获取,设备端通过函数cudaHostGetDevicePointer函数获取地址。

    __host__ ​cudaError_t cudaHostGetDevicePointer ( void** pDevice, void* pHost, unsigned int  flags )
    

    该函数返回一个在设备端的指针pDevice,该指针可以在设备端被引用以访问映射得到的主机端锁页内存。如果设备端不支持零拷贝方式(主机内存映射),则返回失败。可以使用接口cudaGetDeviceProperties来检查设备是否支持主机内存映射:

    struct cudaDeviceProp device_prop
    cudaGetDeviceProperties(&device_prop,device_num);
    zero_copy_supported=device_prop.canMapHostMemory;
    

    如上所述,零拷贝不是无需拷贝,而是一种隐式异步即时拷贝策略,每次隐式拷贝还是要走PCIe总线,所以频繁的对零拷贝内存进行读写,性能也会显著降低。

    以下几种情况,可建议使用零拷贝内存:

    • 在一大块主机内存中你只需要使用少量数据
    • 你不会频繁的对这块内存进行重复访问,频繁的重复访问建议在设备端分配内存显式拷贝。最合适的情况,该内存的数据你都只需要访问一次
    • 你需要比显存容量大的内存,或许你可以通过即时交换来获得比显存更大的内存使用,但是零拷贝内存也是一个可选思路

    3. 总结

    从以上内容,我们总结几点关键信息:

    • 1. 常规传输方式:cudaMemcpy,在很多情况下都是最慢的方式,但他近乎适用于所有情况,所以也可能是被使用最多的方式。很多情况下传输不一定构成效率瓶颈
    • 2. 如果是二维或三维矩阵,可以用对齐分配,配套的需要使用cudaMemcpy2D和cudaMemcpy3D
    • 3. 可以通过异步传输方式:cudaMemcpyAsync / cudaMemcpy2DAsync / cudaMemcpy3DAsync ,隐藏一部分传输耗时
    • 4. 使用锁页内存,相比可分页内存可减少一次传输过程,显著提高传输效率,但过多的分配会影响操作系统性能
    • 5. 零拷贝内存避免显式的数据传输,适用于数据量少且数据使用次数少的情况

    博主简介:
    Ethan Li 李迎松(知乎:李迎松)
    武汉大学 摄影测量与遥感专业博士

    主方向立体匹配、三维重建

    2019年获测绘科技进步一等奖(省部级)

    爱三维,爱分享,爱开源
    GitHub: https://github.com/ethan-li-coding
    邮箱:ethan.li.whu@gmail.com

    个人微信:

    欢迎交流!

    关注博主不迷路,感谢!
    博客主页:https://ethanli.blog.csdn.net/

    展开全文
  • 数据传输技术

    千次阅读 2018-12-09 16:21:06
    数据在通信信道上的各种传输方式及其所采用的技术。

    紫色代表一级目录
    粉红代表二级目录
    蓝色代表三级目录
    红色代表关键字
    橙色代表说明

    数据通信系统的基本结构
      在这里插入图片描述
    数据传输方式
      模拟信号发送(模拟信道)
      在这里插入图片描述
      数字信号发送(数字信道)
      在这里插入图片描述
        数字信号发送的特点
          抗干扰能力强
          可实现高质量的远距离通信
          能适应各种通信业务
          高保密通信
          高保密通信
          通信设备的集成化和微型化(比之模拟传输设备便宜)
        数字信号发送的缺点
          占用的频带宽
    数据编码技术
      数字数据的数字传输(基带传输)
        基带:基本频带,指传输变换前所占用的频带,是原始信号所固有的频带。
        基带传输:在传输时直接使用基带信号。
          基带传输是一种最简单最基本的传输方式,一般用低电平表示“0”,高电平表示“1”。
          适用范围:低速和高速的各种情况。
          限制:因基带信号所占的频率成分很宽,所以对传输线路有一定的要求。
      基带传输常用的几种编码方式
        不归零制码(NRZ:Non-Return to Zero)
          原理:用两种不同的电平分别表示二进制信息“0”和“1”,低电平表示“0”,高电平表示“1”。
        曼彻斯特码(Manchester)
          原理:每一位中间都有一个跳变,从低跳到高表示“0”,从高跳到低表示“1”。
        差分曼彻斯特码(Differential Manchester)
          原理:每一位中间都有一个跳变,每位开始时有跳变表示“0”,无跳变表示“1”。位中间跳变表示时钟,位前跳变表示数据。
        在这里插入图片描述
      数字数据的模拟传输(频带传输)
        频带传输:指在一定频率范围内的线路上,进行载波传输,称为频带传输。用基带信号对载波进行调制,使其变为适合于线路传送的信号。
        调制(Modulation):基带脉冲对载波信号的某些参量进行控制,使这些参量随基带脉冲变化。
        解调(Demodulation):调制的反变换。
        调制解调器MODEM(modulation-demodulation)
        根据载波在这里插入图片描述的三个特性:幅度、频率、相位,产生常用的三种调制技术
          幅移键控法 Amplitude-shift keying (ASK)
          在这里插入图片描述
          A(t) 取不同的值表示不同的信息码。
          频移键控法 Frequency-shift keying (FSK)
          在这里插入图片描述
          在这里插入图片描述 取不同的值表示不同的信息码。
          相移键控法 Phase-shift keying (PSK)
          在这里插入图片描述
          在这里插入图片描述取不同的值表示不同的信息码。
          在这里插入图片描述
      数据编码技术(脉冲代码调制)
        解决模拟信号数字化问题,也称为脉冲代码调制PCM(Pulse Code Modulation)。具体过程分为采样、量化、编码
        采样:以高于两倍最高有效信号频率的速率对信号进行采样的话,那么,这些采样值就包含了原始信号的全部信息。
        量化:采样后,需用二进制代码序列来表示模拟采样值,该数字化过程称为量化。
        编码:量化可分为2n个等级,每个采样值近似地用n位二进制数来表示,这一过程称为编码。
    多路复用技术
      频分复用 FDM
      波分复用 WDM
      时分复用 TDM
      码分复用 CDM

    通信线路的通信方式
      连接方式
        点 — 点方式
        多点方式
      通信方式
        单工通信方式
          信息只能单向传输,监视信号可回送。
          在这里插入图片描述
        半双工通信方式
          信息可以双向传输,但在某一时刻只能单向传输。
          在这里插入图片描述
        全双工通信方式
          信息可以同时双向传输,一般采用四线式结构。
          在这里插入图片描述
    数据同步方式
      目的:接收方必须知道每一位信号的开始及其宽度,以便正确的采样接收(位同步),同时要求对各个字符正确识别(字符同步),以及对各个数据包正确识别(数据包同步)。
      位同步
        外同步法
          接收端的时钟定时信号是由发送端送过来的。
          发送端在发送数据之前,先向接收端发出一串同步的时钟。
          接收端:首先校准同步,然后用校准后产生的同步信号作为定时信号接收数据信息。
        自同步法
          从数据信息波形的本身提取时钟信号。(比如曼切斯特编码
      常用的实现同步的两种技术
        异步通信
        同步通信-基于字符
        基于位的同步通信

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

    万次阅读 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 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 数据传输加密

    千次阅读 2019-06-21 13:45:09
    加密技术是为了保护敏感数据在网络传输中的安全,就像日常生活中使用的淘宝、支付宝、微信等等软件,如果涉及到金额的数据在网络中不加密传输,那是极易被别人窃取、篡改的,通信中的数据加密技术就显得尤为重要。...

    1.加密技术

    加密技术是为了保护敏感数据在网络传输中的安全,就像日常生活中使用的淘宝、支付宝、微信等等软件,如果涉及到金额的数据在网络中不加密传输,那是极易被别人窃取、篡改的,通信中的数据加密技术就显得尤为重要。各类加密工具的原理都是大同小异,这里对常见加密原理进行解读。
    在这里插入图片描述

    2.对称加密

    加密数据与解密数据使用相同的密钥,这种加密方法称为对称加密

    特点:
    加密与解密使用相同密钥,加密解密速度快
    将原始数据进行切块,逐个进行加密。
    缺点:
    每一个通信的对象都有一把密钥,如果通信对象过多导致密钥过多。
    密钥分发问题,如何保证密钥不被窃取
    在这里插入图片描述

    3.非对称加密

    加密数据与解密数据使用一堆不相同的密钥,公钥公开给所有人,私钥自己保存。使用公钥加密的数据只有自己的私钥可以解开。

    特点
    用公钥加密数据,只能使用配对的私钥进行解密。
    用私钥加密的数据,只能使用配对的私钥进行解密
    缺点
    加密解密速度慢、时间长,不适用于对大数据进行加密解密。

    4.单选散列

    单项散列又称为hash算法,把任意长度的数据、字符加密后得到一个固定长度的特征码。

    特点:
    加密后输出的特征码长度固定
    加密后的特征码只跟数据内容有关,与数据名称无关
    可以用作数据的指纹
    得到数据的特征码无法推算出原数据的内容
    缺点:
    相同内容的文件加密后的结果相同
    通常随数据一同发出,极易被窃取
    在这里插入图片描述

    5.加密通信的综合应用

    以上三种如果单独使用任何一种对数据进行数据加密的话都是不安全的,那么现在在互联网中的数据时如何传输的呢?其实数据在互联网中并不会使用单一加密技术,往往都是各类技术混合使用,互补优缺点使数据的传输更加安全。

    首先通过TCP三次握手进行连接,然后客户端发送hello包到服务端,服务端回应一个hello包,如果客户端需要再次发送数字证书, 则发送数字证书到客户端。
    客户端得到服务器的证书后通过CA服务验证真伪、验证证书的主体与访问的主体是否一致,验证证书是否在吊销证书列表中。如果全部通过验证则与服务器端进行加密算法的协商。
    然后是用证书中服务器的公钥加密【对称秘钥】发送给服务器端,【对称秘钥】只能用服务器的私钥进行解密,当服务器通过私钥解密【对称秘钥】后。使用对称秘钥将客户端请求的数据发送到客户端,客户端在用对称秘钥进行解密,从而得到想要的数据。
    注:对称秘钥非长期有效,每隔一段时间甚至每一次数据的传输都使用不同的对称秘钥。
    在这里插入图片描述

    展开全文
  • 各位客官早,小店今日推出特色套餐“计算机网路基础之数据传输方式”,这道菜可以说是最近一段时间以来最硬的一道特色菜,还望各位走过路过的客官能暂缓脚步,尝一尝!当然了还是免费赠送哦!!! 一、数据传输方式...
  • 1.选择(工具--- 数据传输) 2.选择高级,高级里面有很多选择(例如:使用完整的插入语句) 3.结构同步 4.比对 5.勾选自己想要同步的表结构选项即可
  • 数据传输安全

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

    千次阅读 2019-08-19 19:29:58
    从前一篇网络安全基础要点知识介绍中可以知道,在网络通信中,通信传输数据容易被截取或篡改,如果在传输用户隐私数据过程中,被不法分子截取或篡改,就可能导致用户受到伤害,比如被诈骗,所以对客户端与服务端的...
  • 1. 物理层概述物理层的主要任务网络物理层(Physical Layer,PH)主要任务为:如何利用传输媒体,为数据链路层提供传送和接收二进制比特(bit)流的服务。 物理层的具体功能物理层协议的具体功能为: 确定与传输...
  • 通信常识:波特率、数据传输速率与带宽的相互关系 本文为转载文章,支持原创,请点击原文地址 【带宽W】     带宽,又叫频宽,是数据的传输能力,指单位时间内能够传输的比特数。高带宽意味着高能力...
  • 数据传输的三种方式--计算机网络

    千次阅读 2020-12-26 15:29:19
    本文介绍了网络中数据传输的三种方式,包括电路交换,报文交换,分组交换,并对它们的优缺点进行了总结和对比
  • 基于UDP的Java大数据传输

    热门讨论 2011-05-10 16:47:23
    UDP传输的优点是快捷,因为它是没有安全保证的。有一定的丢失率。而且,由于各包的传输路径不同,后发送的包可能先于先发送的包到达。...我就是针对这一需要,设计了大数据传输的类。 详细说明见文件中的"说明.txt
  • 网络TCP/IP基础(数据传输

    千次阅读 多人点赞 2021-10-02 16:39:08
    目录 前言 一、数据封装与解封装过程 1、数据封装过程 (1)应用层封装过程 (2)传输层封装过程 ...二、数据传输的一些基本概念 ... 数据传输的过程和TCP/IP五层网络结构关系密切,在实际的...
  • 如果一个总线周期中并行传送16位数据,试问总线的带宽是多少? 标准答案: 1)由时钟频率8MHz,数据位数为16位得, 总线的带宽为 8 × 16 = 128 Mbps 3.15 在一个32位的总线系统中,总线的时钟频...
  • 数据传输三种格式

    万次阅读 2018-09-06 10:27:06
    一般在使用接口传输数据时通常会使用三种数据格式:JSON、XML、YAML 下面详细介绍一些这些数据格式: JSON (JavaScript Object Notation) 以下是JSON的具体表现形式: JSON是一种轻量级的文本数据交换格式,在...
  • 4G网络数据传输流程 一

    万次阅读 多人点赞 2019-05-30 16:22:28
    本系列5篇文章将围绕4G速率做系统介绍,包括数据传输流程、终端等级、速率计算、如何达到1Gbps。本文是第一篇,讲述用户数据在空口的传输流程。 2009年1月,瑞典运营商TeliaSonera宣布商用4G LTE网络,建成全球首...
  • iOS蓝牙开发之数据传输精华篇

    千次阅读 2019-01-02 17:45:45
       最近对蓝牙传输比较感兴趣,所以抽时间研究了一下。由于身边没有合适的外部设备,我这边就一台手机作为中心设备,一台手机作为从设备来进行调试...  我今天主要和大家分享的是蓝牙传输时大量数据传输方案。...
  • 网络工作原理及数据传输的封装与解封装过程 计算机网络工作原理:是将地理位置不用的具有独立功能的多台计算机及其外部设备、通过通信线路连接起来 、在网络操作系统、网络管理软件及网络通信协议的管理和调节下,...
  • NB-IoT数据传输大致方法

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

    千次阅读 2017-08-11 22:13:35
    可靠数据传输原理
  • 称信道无差错传输信息的最大信息速率为信道容量. 如题:2019年4月 分析: 概念的意义就在于能够快速提升认知,如同窗户一样,打开后会发现很多有趣的风景。 没什么可说的,如果对信道容量都是模糊,那这道题就...
  • 1.选择(工具--- 数据传输) 2.选择高级,高级里面有很多选择
  • 在一般的项目开发过程中,往往需要两块或以上单片机进行通信完成数据传输,例如四旋翼无人机在飞行过程中无线传输数据回到地面站,治疗仪器需要实时将患者和机器运转情况传回上位机平台,粮仓温控装置需将各种传感器...
  • 网络中数据传输的过程

    万次阅读 多人点赞 2018-05-23 18:17:56
    1. 数据传输的背景(1) 现在互联网中使用的是基于OSI七层模型的TCP/IP模型。TCP/IP模型包括五层,即物理层,数据链路层,网络层,传输层,应用层;其中数据链路层又可以分为两个子层,即LLC(逻辑链路控制层)和MAC...
  • 微信小程序数据传输数据传输流的种类云开发数据传输其他后台数据传输当前页面数据传输页面之间数据引用页面之间数据传输全局变量数据传输不同数据传输之间的对比 数据传输流的种类 两个月前微信小程序提供云开发...
  • 数据链路层3.网络层4.传输层5.会话层6.表示层7.应用层(Application Layer) OSI参考模型 在前面介绍计算机网络互联阶段的时候,提到了OSI参考模型。这个模型是由国家标准化组织ISO提出,用于解决网络设备互联的...
  • 数据传输速率与带宽之间的关系

    千次阅读 2019-08-29 17:59:16
    数据传输速率:数据传输速率是描述数据传输系统的重要技术指标之一。数据传输速率在数值上等于每秒种传输构成数据代码的二进制比特数,单位为比特/秒(bit/second),记作bps。对于二进制数据,数据传输速率为:S=1/T ...
  • android 蓝牙数据传输DEMO

    热门讨论 2014-04-18 00:17:04
    这是个成功通过Bluetooth方式进行通讯的简单demo,拥有蓝牙服务端和客户端的功能,准备两部android手机哦!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,564,058
精华内容 625,623
关键字:

数据传输