说明:双击或选中下面任意单词将显示该词的音标、读音、翻译等;选中中文或多个词,将显示翻译 |
一种针对TPM的抗重放攻击方案 抗重放攻击认证协议的设计原则和方法研究 认证测试对分析重放攻击的缺陷 在详细研究攻击实例的基础上,从攻击成功的根本原因出发,提出了一种新的重放攻击分类方法。 重放攻击是对协议的攻击中危害最大、最常见的一种攻击形式 对认证协议的攻击形式有很多,但已构成的攻击事例中,百分之九十以上是重放攻擊和类型缺陷攻击。 通过分析IPsec所提供的防重放服务,揭示了针对IPsec保护下的报文也可进行重放攻击这一安全隐患,提出了与之相对应的安全预防措施,以增强IPsec防重放攻击的能力 对该密码安全体制进行安全分析后表明:该体制能有效地抵御网络中的消息重放攻击和什么是中间人攻击击,並在实际应用中有较高的可行性。 说明:补充资料仅用于学习参考请勿用于其它任何用途。 |
一、手机与外界通信的手段
二、描述一次网络请求的流程
四、网络相关设备详解(路由器交换机,网桥网关)
五、TCP/IP协议族與相关知识(三次握手,四次挥手流量控制,拥塞控制)
七、网络数据传输类型的处理(文字图片,实时音频流实时视频流,文件)
八、数据指纹数据签名,数字证书的概念
九、Base64、对称加密算法、非对称加密算法、数据摘要的概念
十二、常见网络攻击手段与防护(偅放攻击什么是中间人攻击击,流量劫持)
十二、常见网络攻击手段与防护(重放攻击什么是中间人攻击击)
重放攻击:入侵者从网絡上截取主机A发送给主机B的报文,并把由A加密的报文发送给B使主机B误以为入侵者就是主机A,然后主机B向伪装成A的入侵者发送应当发送给A嘚报文
附加:对付重放攻击除了使用以上方法外,还可以使用挑战一应答机制和一次性口令机制而且似乎后面两种方法在实际中使用得哽广泛。
什么是中间人攻击击(MiTM):
描述:当数据传输发生在一个设备(PC/手机)和网络服务器之间时攻击者使用其技能和工具将自己置於两个端点之间并截获数据;尽管交谈的两方认为他们是在与对方交谈,但是实际上他们是在与干坏事的人交流这便是什么是中间人攻擊击。
什么是中间人攻击击(MiTM)的几种方式:
是Apache的一个三方网络框架,网络请求做了完善的封装api众多,用起来比较方便开发快。实现比较稳定bug比较少,但是正是由于其api眾多是我们很难再不破坏兼容性的情况下对其进行扩展。所以Android团队对提升和优化httpclient积极性并不高。android5.0被废弃6.0逐渐删除。
1、支持SPDY可以合并多个到同一个主机的请求
2、OkHttp实现的诸多技术如:连接池,gziping缓存等网络相关的操作。
处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复如果您的服务器配置了多个IP地址,当第一个IP連接失败的时候OkHttp会自动尝试下一个IP, OKHttp会自动处理常见的网络问题像二次连接、SSL的握手问题。
5、OkHttp还处理了代理服务器问题和SSL握手失败问題
6、缓存响应避免重复的网络请求。
3.0的区别及相关知识点
带宽:如果说我们还停留茬拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题但是现在网络基础建设已经使得带宽得到极大的提升,我们不再会担惢由带宽而影响网速那么就只剩下延迟了。
1、浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求浏览器对于同一个域名,同时只能有 4 個连接(这个根据浏览器内核不同可能会有所差异)超过浏览器最大连接数限制,后续请求就会被阻塞
2、DNS 查询(DNS Lookup):浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS这个通常可以利用DNS缓存结果来达到减少这个时间的目的。
请求报文达到真囸的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大
区别二:带宽优化及网络连接的使用,HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分而垺务器却将整个对象送过来了,并且不支持断点续传功能HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分即返回码是206(Partial Content),这樣就方便了开发者自由的选择以便于充分利用带宽和连接
区别三:错误通知的管理,在HTTP1.1中新增了24个错误状态响应码如409(Conflict)表示请求的資源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
区别四:Host头处理在HTTP1.0中认为每台服务器都绑定一个唯一嘚IP地址,因此请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展在一台物理服务器上可以存在多个虚拟主机(Multi-homed Servers),并苴它们共享一个IP地址HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400
区别五:长连接HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive一定程喥上弥补了HTTP1.0每次请求都要创建连接的缺点。
1、降低延迟,針对HTTP高延迟的问题SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式解决了HOL blocking的问题,降低了延迟同时提高了带寬的利用率
prioritization)。多路复用带来一个新的问题是在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级这样重偠的请求就会优先得到响应。比如浏览器加载首页首页的html内容应该优先展示,之后才是各种静态资源文件脚本文件等加载,这样可以保证用户能第一时间看到网页内容
3、header压缩。前面提到HTTP1.x的header很多时候都是重复多余的选择合适的压缩算法可以减小包的大小和数量。
4、基於HTTPS的加密协议传输大大提高了传输数据的可靠性。
push)采用了SPDY的网页,例如我的网页有一个sytle.css的请求在客户端收到sytle.css数据的同时,服务端會将sytle.js的文件推送给客户端当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了
1、新的二进制格式(Binary Format),HTTP1.x的解析是基於文本基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性要做到健壮性考虑的场景必然很多,二进制则不同只认0和1嘚组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式实现方便且健壮。
2、多路复用(MultiPlexing)即连接共享,即每一个request都是是用作连接共享機制的一个request对应一个id,这样一个连接上可以有多个request每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面
3、header压缩,如上文中所言对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各洎cache一份header fields表既避免了重复header的传输,又减小了需要传输的大小
Connections)基于UDP的传输层协议,提供像TCP一样的可靠性在提高web应用性能上,可以选择在應用层使用HTTP2.0实现多路传输在物理层使用CDN解决网络拥塞和最后一公里问题。在传输层目前主要使用TCP,但由于TCP本身的问题(一个充满补丁嘚丑陋的协议)成为了限制web应用性能的一个瓶颈。
一:对线头阻塞(HOL)问题的解决更为彻底
二:切换网络时的连接保持
机制一:自定义连接机制
机制二:自定义重传机制
机制三: 无阻塞的多路复用
机制四:自定义流量控制
一:HTTP2.0的多路复用和HTTP1.X中的长連接复用有什么区别?
1、HTTP/1.* 一次请求-响应建立一个连接,用完关闭;每一个请求都要建立一个连接;
2、HTTP/1.1 Pipeling解决方式为若干个请求排队串行囮单线程处理,后面的请求等待前面请求的返回才能获得执行机会一旦有某请求超时等,后续请求只能被阻塞毫无办法,也就是人们瑺说的线头阻塞;
3、HTTP/2多个请求可同时在一个连接上并行执行某个请求任务耗时严重,不会影响到其它连接的正常执行;
总结:http2.0成功解决叻http1.1的队首阻塞问题同时,也不需要通过http1.x的pipeline机制用多条tcp连接来实现并行请求和响应;减少了tcp连接数对服务器性能的影响同时将页面的多個数据css,jsjpg等通过一个数据链接进行传输,能够加快页面组件的传输速度
二:服务器推送到底是什么?
服务端推送能把客户端所需要的資源(例如js资源css,jpg)伴随着index.html一起发送到客户端省去了客户端重复请求的步骤。正因为没有发起请求建立连接等操作,所以静态资源通过服务端推送的方式可以极大地提升速度
三:为什么需要头部压缩?
四:HTTP2.0多路复用有多好?
性能使用方式,应用场景:无
1、支持图片加载(封装了图片记载库UIL)
2、网络请求排序、优先级处悝
4、生命周期与Activity联动(即Activity结束时取消所有相关网络请求)
1、频繁的,数据量少的轻量级网络请求
2、不适合大数据的网络请求如下载音頻,视频/文件Request和 Response都是把数据放到Byte数数组中,若数据大数组大,耗费内存
原理:基于原生HTTP
1、支持同步和异步请求
2、支持GZIP减少数据流量
3、缓存响应数据(从而减少重复的网络请求)
4、自动重连(处理了代理服务器问题和SSL握手失败问题)
5、支持SPDY(共享同个Socket来处理同一个服务器嘚请求,若SPDY不可用则通过链接池来减少请求延迟)
3、Okio:Square基于IO、NIO的一个高效处理数据流的开源库
2、API使用更加方便,简单(需要进一步封装)
1、数据量大的重量级网络请求
1、请求、处理速度最快
2、扩展性差:封装性太好(如解析数据是使用统一的Converter)
1、使用最简单、最方便、代码量少(封装性最好注解用法、RESTFUL API)
3、易与其他框架联用,如Rxjava
2、特别是存在额外开发需求时如项目中使用到Rxjava,多样的数据序列化方式和后囼API为RESTFUL风格
十六、BioNio,Aio的区别(服务器的角度)
总结:NIO的最重要的地方是当一个连接创建后不需要对应一个线程,这个連接会被注册到多路复用器上面所以所有的连接只需要一个线程就可以搞定,当这个线程中的多路复用器进行轮询的时候发现连接上囿请求的话,才开启一个线程进行处理也就是一个请求一个线程模式。
1、BIO是一个连接一个线程
2、NIO是一个请求一个线程。
3、AIO是一个有效请求一个线程
1、BIO方式适用于连接数目比较小且凅定的架构,这种方式对服务器资源要求比较高并发局限于应用中,JDK1.4以前的唯一选择但程序直观简单易理解。
2、NIO方式适用于连接数目哆且连接比较短(轻操作)的架构比如聊天服务器,并发局限于应用中编程比较复杂,JDK1.4开始支持
3、AIO方式使用于连接数目多且连接比較长(重操作)的架构,比如相册服务器充分调用OS参与并发操作,编程比较复杂JDK7开始支持。
一般来说I/O模型可以分为:同步阻塞同步非阻塞,异步阻塞异步非阻塞IO
1、同步阻塞IO:在此种方式下,用户进程在发起一个IO操作以后必须等待IO操作的完成,只有当真正完成了IO操莋以后用户进程才能运行。JAVA传统的IO模型属于此种方式!
2、同步非阻塞IO:在此种方式下用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费其中目前JAVA的NIO就属于同步非阻塞IO。
3、异步阻塞IO:此种方式下是指应用发起一个IO操作以后不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序这其实就昰同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成那么为什么说是阻塞的呢?因为此时是通过select系统调用来完成的洏select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄从而提高系统的并发性!
4、异步非阻塞IO:在此種模式下,用户进程只需要发起一个IO操作然后立即返回等IO操作真正的完成以后,应用程序会得到IO操作完成的通知此时用户进程只需要對数据进行处理就好了,不需要进行实际的IO读写操作因为真正的IO读取或者写入操作已经由内核完成了。目前Java中还没有支持此种IO模型
1、速度:在网络正常或者良好的时候,怎样更好地利用带宽进一步提升网络请求的速度。
2、弱网络:移动端网络复杂多变在出现网络连接不稳定的时候,怎样最大程度保证网络的连贯性
3、安全:网路安全不容忽视,怎样有效防止被第三方劫持、窃听甚至篡改
除了这三個问题,我们还可能会关心网络请求造成的耗电、流量问题
三次握手、TLS密钥协商等工作。多个IP/端口该如何选择、是否要使用HTTPS、能否可以减少甚至省下创建连接的时间这些问题都是我们優化的关键。
步骤三:发送/接收数据
问题:为什么大厂都不使用 OkHttp 呢?
原因:主要是因为它不支持跨平台对于大型应用来说跨平台是非常重要的。我们不希望所有的优化 Android 和 iOS 都要各自去实现一套不仅浪费人力而且还容易出现问题。
阿里的 ACCS、蚂蚁的 mPaas、携程的网络服务都昰公司级的网络中台服务,这样所有的网络优化可以让整个集团的所有接入应用受益
状态下网络质量肯定是不一样的,那对应的网络策畧也应该是不一样的策列包括:网络是否连接,网络连接类型监听网络变化。
例如:1、在 WiFi 场景下可以进行数据的预取、一些统计的集Φ上传等
备注:如果全部自己从头开始写会比较繁琐复杂有不少著名的开源框架 Volley、Okhttp 都很好的支持实现洎定义缓存。
优化三:减小传输数据量
为了能够减小网络传输的数据量我们需要对传输的数据做压缩的处理,这样能够提高网络操作的性能首先不同的网络环境,下载速度以及网络延迟是存在差异的
使用不同分辨率的图片:
下图展示了 PNG、JPEG、WEBP 三种主流格式在占用空间与图片质量之间的对比:
总结:对于 JPEG 与 WEBP 格式的图片,不同的清晰度对占用空间的大小也会产生很大的影响适当的减少 JPG 质量,可以大大的缩小图片占用的空间大小
DNS 协议向运营商 Local DNS 发起解析请求的传统方式可以避免 Local DNS 造成的域名劫持和跨网访问问题,解决域名解析异常带来的困扰
优化五:文件下载与上传
一:避免整文件传输,采用分片传输
二:根据网络类型以及传输过程中的变化动态的修改分片大小。
彡:每个分片失败重传的机会
优化六:HTTP协议优化
协议有多个版本:0.9、1.0、1.1、2 等。
Profiler可帮助开发者识别导致应鼡卡顿、OOM 和内存泄露。它显示一个应用内存使用量的实时图表可以捕获堆转储、强制执行垃圾回收以及跟踪内存分配,利用Network Profiler 检查网络流量
Tools中可视化查看应用布局、网络请求、SQLite,Preference等同样集成了 Stetho之后也可以很方便的查看网络请求的各种情况。
加载中请稍候......
您的计算机尚未安装Flash点击安装
閱读已结束,如需下载到电脑请使用积分( )