iOS|iOS 网络请求通信TCP,HTTPS

网络请求通信TCP,HTTPS 我们向服务器发送请求的操作

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

    推荐阅读