本文共 4867 字,大约阅读时间需要 16 分钟。
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
http协议是一个基于请求与响应模式的无连接,无状态,应用层的协议,支持c/s模式,简单快速,灵活
http有两种报文:请求报文和响应报文
请求报文由请求行,请求报头,和请求数据组成
响应报文由状态行,响应报头,响应正文组成
http头部,既请求报头和响应报头,统称消息报头
消息报头可以分为通用报头,实体报头, 请求报头,响应报头等
通用报头和实体报头既可以出现在请求报头中,也可以出现在响应报头中.
1.参数的传输方式:GET参数通过URL传递,POST放在Request body中。
2.GET请求在URL中传送的参数是有长度限制的,而POST没有。
3.对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。不过要注意,并不是所有浏览器都会在POST中发送两次包,比如火狐
4.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
5.GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6.GET请求只能进行url编码,而POST支持多种编码方式。
1、Volley的特点
Volley是谷歌大会上推出的网络通信框架(2.3之前使用HttpClient,之后使用HttpUrlConnection),它既可以访问网络获取数据,也可以加载图片,并且在性能方面进行了大幅度的调整,它的设计目的就是适合进行数据量不大但通信频繁的网络操作,而对于大数据量的操作,比如文件下载,表现很糟糕,因为volley处理http返回的默认实现是BasicNetwork,它会把返回的流全部导入内存中,下载大文件会发生内存溢出2、Volley执行的过程:
默认情况下,Volley中开启四个网络调度线程和一个缓存调度线程,首先请求会加入缓存队列,,缓存调度线程从缓存队列中取出线程,如果找到该请求的缓存就直接读取该缓存并解析,然后回调给主线程,如果没有找到缓存的响应,则将这个请求加入网络队列,然后网络调度线程会轮询取出网络队列中的请求,发起http请求,解析响应并将响应存入缓存,回调给主线程3、Volley为什么不适合下载上传大文件?为什么适合数据量小的频率高的请求?
1.volley基于请求队列,Volley的网络请求线程池默认大小为4。意味着可以并发进行4个请求,大于4个,会排在队列中。并发量小所以适合数据量下频率高的请求2.因为Volley下载文件会将流存入内存中(是一个小于4k的缓存池),大文件会导致内存溢出,所以不能下载大文件,不能上传大文件的原因和1中差不多,设想你上传了四个大文件,同时占用了volley的四个线程,导致其他网络请求都阻塞在队列中,造成反应慢的现象
总结:
Volley通过newRequestQueue(…)函数新建并启动一个请求队列 RequestQueue后,只需要往这个RequestQueue不断add Request即可。1、OKHttp的特点
1.相较于Volley,它的最大并发量为642.使用连接池技术,支持5个并发的socket连接默认keepAlive时间为5分钟,解决TCP握手和挥手的效率问题,减少握手次数
3.支持Gzip压缩,且操作对用户透明,可以通过header设置,在发起请求的时候自动加入header,Accept-Encoding: gzip,而我们的服务器返回的时候header中有Content-Encoding: gzip
4.利用响应缓存来避免重复的网络请求
5.很方便的添加拦截器,通常情况下,拦截器用来添加,移除,转换请求和响应的头部信息,比如添加公参等
6.请求失败,自动重连,发生异常时重连,看源码调用recover方法重连了一次
2、 OkHttp的缺点
1.消息回来需要切到主线程,主线程要自己去写。2.调用比较复杂,需要自己进行封装。
3.缓存失效:网络请求时一般都会获取手机的一些硬件或网络信息,比如使用的网络环境。同时为了信息传输的安全性,可能还会对请求进行加密。在这些情况下OkHttp的缓存系统就会失效了,导致用户在无网络情况下不能访问缓存。
3、 OkHttp框架中都用到了哪些设计模式
1.最明显的Builder设计模式,如构建对象OkHttpClient,还有单例模式
2.工厂方法模式,如源码中的接口Call
3.观察者模式如EventListener,监听请求和响应
4.策略模式
5.责任链模式,如拦截器
为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。
三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤
如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
三次握手: 建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立, 在Socket编程中,这一过程由客户端执行connect来触发,具体流程图如下:
四次挥手: 终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。 在Socket编程中,这一过程由客户端或服务端任一方执行close来触发,具体流程图如下:
什么是cookie
Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息cookie的工作原理
什么是session
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。session的工作原理
1.第一步当然是创建Session了2.在创建了Session的同时,服务器会为该Session生成唯一的Session id3.在Session被创建之后,就可以调用Session相关的方法往Session中增加内容4.当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session
cookie与session的区别
1.存放位置不同 2.存取方式的不同 3.安全性(隐私策略)的不同. 494604 4.有效期.上的不同 5.对服务器造成的压力不同HTTPS并不是一一个单独的协议,而是对工作在一加密连接 (SSU
TLS).上的常规HTTP协议。 通过在TCP和HTTP之间加入TLS(Transport Layer Security)来加密对称加密
加密用的密钥和解密用的密钥是一样的不对称加密
私有密钥一方保管 公有密钥双方保管 (RSA加密)总结:
https实际就是在TCP层与http层之间加入了SSLTLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。HTTPS中的加密算法相关
密钥: RSA加密简单过程
1.服务端生成配对的公钥和私钥 2.私钥保存在服务端,公钥发送给客户端 3.客户端使用公钥加密明文传输给服务端 4.服务端使用私钥解密密文得到明文二.数字签名
数字签名就是用于验证传输的内容是不是真实服务器发送的数据,发 送的数据有没有被篡改过,它就干这两件事,是非对称加密的一种应 用场景。不过他是反过来用私钥来加密,通过与之配对的公钥来解密。转载地址:http://lsfa.baihongyu.com/