iOS 网络请求通信TCP,HTTPS
2019-05-22 本文已影响0人
iOS小童
网络请求通信TCP,HTTPS
我们向服务器发送请求的操作
- DNS查询-----> DNS(Domain Name System)域名解析系统,计算机之间的通信不认识域名,只能认识IP,所以DNS就是网络请求的第一步,通过域名获取IP
- CDN/边缘服务器解决方案-----> 内容分发网络将延迟最小化
- SSL握手----->SSL握手主要是验证服务器证书,同时共享用于通信的随机密钥。握手相当耗时,应遵循以下最佳实践:
- 最大程度的减少应用发起的连接数
- 请求结束不要关闭HTTPS链接
- 使用域分片
- 请求----->
- 服务器响应 <-----
服务器优化
- 使用多个数据中心,让服务器在地理上分散开来,更贴近用户
- 使用CDN提供静态内容
- 使用接近的边缘服务器来提供动态内容
- 避免使用多个域名
请求优化
- 不要为每个操作单元都进行一次请求,使用批量请求。
- 使用持续的HTTP链接,它们有助于最大限度的减少TCP和SSL握手的消耗
- 在任何可以的情况下都是用HTTP/2
- 是用HTTP缓存头设置正确的缓存级别
数据格式优化
- 是用数据压缩
- 选择正确的数据格式:例如JSON
HTTPS所属层:
- HTTP:应用层
- TSL/SSL:安全层
- TCP:传输层
- IP:网络层
- 网络接口:数据链路层
TCP三次握手
-
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
-
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
-
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
HTTP和HTPPS的区别
- HTPPS协议需要到ca申请证书,一般免费证书很少,需要交费。
- HTTP是超文本传输协议,信息是明文传输,HTPPS 则是具有安全性的ssl加密传输协议。
- HTTP和HTPPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
URI:服务器资源名被称为统一资源标识符:(Uniform Resource Identifier,URI)。有两种形式:URL和URN。
URL:统一资源定位符石资源标识符最常见的形式,URL描述了一台特定服务器上某资源的特定位置
URN:统一资源名作为特定内容的唯一名称使用的,与目前的资源所在地无关。通过URN还可以用同一个名字通过多种网络访问协议来访问资源