慕课IOS开发网络协议

HTTP工作流程

  • 建立连接
  1. 首先由客户端发送SYN同步报文给服务端
  2. 服务端收到后发给客户端一个回复报文SYN,ACK
  3. 客户端收到回复报文后再给服务端回复一个ACK报文
    都是TCP层报文段 TCP连接建立的过程
    1 2 3为TCP三次握手
  4. 点击登录按钮 客户端会发送一个HTTP请求报文
  5. 服务端处理后发送HTTP响应报文
    HTTP应用层
  • 连接断开
    由客户端发起
  1. 客户端发送FIN终止报文
  2. 服务端收到后发送ACK确认报文
    客户端到服务端连接已断开
  3. 服务端一段时间后发送FIN,ACK终止报文
  4. 客户端收到后发送ACK确认报文
    TCP层报文 TCP四次挥手
    服务端到客户端TCP连接关闭

HTTP报文格式

  • 请求报文
    请求行 方法(get/post)请求地址URL HTTP版本 CRLF回车换行
    首部行 由多个key:value键值对组成
    首部字段名:值 CRLF


    首部字段名:值 CRLF
    实体主体(通常不用)

  • 响应报文
    状态行 HTTP版本 状态码 状态码短语描述 换行
    首部行 同请求报文
    实体主体(经常用到 post 有些响应报文不用 get) get post请求会把响应结果以实体主体方式返回给客户端

HTTPS

  • 全称 Hyper Text Transfer Protocol over Secure Socket Layer
  • HTTPS是以安全为目标的HTTP通道 是HTTP安全版
  • HTTP和HTTPS异同
  1. HTTPS需要到CA申请证书,一般免费证书很少,需要交费
  2. HTTP是明文传输 HTTPS是具有安全性的SSL加密传输(HTTP是对请求包、响应数据进行简单加密 HTTPS的请求和响应内容看到的是乱码)
  3. HTTP和HTTPS使用端口不同 HTTP 80 HTTPS443
  4. HTTPS可进行加密传输、身份认证,比HTTP更安全

安全套接字层SSL&安全传输层TLS

SSL:Secure Sockets Layer 安全套接层
TLS:Transport Layer Security 传输层安全 SSL继任者
TLS与SSL再传输层上对网络连接进行加密,为网络通信提供安全及数据完整性

SSL协议

为了解决以下风险而设计产生

  • 所有信息都是加密传播,第三方无法窃听
  • 具有校验机制,一旦被篡改,通信双方会立刻发现
  • 配备身份证书,防止身份被冒充

HTTP层次:

HTTP
TCP
IP

HTTPS层次

HTTPS发送方接收方
HTTP发送一个HTTPS网络请求 把请求数据包装成HTTP请求报文
TLS&SSL把HTTP请求报文进行加密解密数据 拼装成HTTP报文
TCP传输传输
IP传输接收
  • SSL协议建立过程
  1. 客户端发送握手信息给服务端(随机数1,客户端支持的加密算法)
  2. 服务端传递响应报文 响应握手信息(随机数2,匹配好的协商加密算法 是客户端传递给服务端加密算法的子集)
  3. 服务端传递响应报文(服务端证书)
  4. 客户端验证证书( 判断是否篡改:验证证书数字摘要 和 服务证书解密之后的内容是否一致;判断证书链 逐级向上查找 直到查找到根证书)
  5. 客户端组装会话密钥 ( 随机数1 随机数2 预主密钥)并用服务端传输的证书所包含的公钥加密预主密钥,传递加密过的预主密钥给服务端
  6. 服务端用私钥解密预主密钥,服务端也获得了随机数1 随机数2 和预主密钥
  7. 服务端组装会话密钥(和客户端一样)
  8. 客户端使用组装后的会话密钥加密握手消息,验证服务端能否正常接收加密过的数据消息
  9. 服务端发送加密过的握手消息,验证客户端是否能正常解析加密过的数据
    5.6非对称加密 安全(连接建立时使用) 89 对称加密 高效(后续网络请求)
  • 预主密钥:由客户端产生,传递给服务端
  • 随机数1 随机数2(多个随机数 保证密钥的随机性)
  • 公钥私钥 加密解密密钥相同为对称加密算法(AES、DES)
    不同对非对称加密算法(RSA)

HTTPS实现

NSURLConnection类协议
NSURLSession类协议
网络请求相关API简单使用
会话获取

 +(NSURLSession*)sessionWithConfiguration:(NSURLSessionConfiguration*)configuration;

任务创建

-(NSURLSessionDataTask*)dataTaskWithRequest:(NSURLRequest*)request completionHandler:(void(^)(NSData*_Nullable data,NSURLReponse*_Nullable reponse,NSError*_Nullable error))completionHandler;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值