@iwanglong
2019-02-21T05:48:24.000000Z
字数 1536
阅读 287
网络
iOS
HTTP 协议
- 超文本传输协议
- 请求/响应报文
- 请求方式
- GET POST HEAD PUT DELETE OPTIONS
- GET请求参数以?分割拼接到URL后边,POST请求参数再Body中
- GET参数长度限制2048个字符,POST一般没有限制
- GET请求不安全,POST请求比较安全。
- 从语义角度 RFC
- 安全性:不应该引起Server状态变化
- 幂等的:
- 可缓存的 : 请求是否可以被缓存。(代理服务器多次 GET )
- 状态码
- 连接建立流程
- 三次握手
- Client ->(SYN) -> Server -> (SYN,ACK) -> Client -> (ACK)
- 四次挥手
- C -> (FIN) -> S -> (ACK) -> (FIN,ACK) -> C -> (ACK)
- 特点
- 无连接 HTTP的持久连接?
- 无状态 (服务端不知道是同一个用户)Cookie / Session ?
- 持久连接
- 节省3次握手、4次挥手
- 通过头部字段保持持久连接
- Connection : keep-alive
- time : 20
- max :10
- 怎么判断一个请求结束?
- 头部字段:Content-length:1024 (根据响应的字节数)
- 头部字段:chunked,最后会有一个空的chunked
- Charles抓包原理
HTTPS 协议
- HTTPS == HTTP + SSL/TLS
- 建立流程是怎样的?
- Client 发送 (TLS支持的版本,支持的加密算法以及一个Random随机数C)给Server
- Server 发送 (商定的加密算法,一个Random随机数S以及服务端证书)给Client
- Client (验证服务端证书)、(通过随机数 C、S 以及宿主秘钥组装绘话秘钥)
- Client 发送 (通过server的公钥对预主秘钥进行加密传输)
- Server (通过私钥解密得到预主秘钥)
- Server (组装绘话秘钥)
- Client 发送 (加密握手消息)
- Server 发送 (加密握手消息)
- 加密手段
- 连接建立过程使用非对称加密,非对称加密比较耗时
- 数据传输过程使用对称加密
- 非对称加密
- 加密解密所使用的钥匙不同, 公钥加密私钥解密、私钥加密公钥解密
- 对称加密
TCP / UDP
- 位于传输层协议
- TCP,传输控制协议
- 特点 :面向连接 、可靠传输、面向字节流、流量控制
- 面向连接为什么3次?
- 为什么4次挥手?
- 可靠传输 : 无差错 、不丢失、不重复、按序到达
- 流量控制
- 拥塞控制
- UDP,用户数据报协议
- 特点 : 无连接 、尽最大努力交付、面向报文(既不合并,也不拆分)
- 功能 : 复用、分用、差错检测
DNS解析
- 了解DNS解析吗?
- 域名到IP地址的映射,DNS解析请求采用UDP数据报,且明文传输
- DNS解析查询方式
- 存在哪些问题
- DNS劫持与HTTP的关系
- 没有关系
- DNS解析发生在HTTP建立之前
- DNS解析请求使用UDP数据报,端口号53
- 怎么解决DNS劫持?
- Session / Cookie
- HTTP协议无状态特点的补偿
- Cookie主要用来记录用户状态,区分用户;状态保存在客户端
- server通过响应报文set-cookie返回给client
- 保证Cookie安全
- 对Cookie进行加密
- 只在Https上携带Cookie
- 设置Cookie为HttpOnly,防止跨站脚本攻击
- Session也是用来几录用户状态,区分用户;状态保存在服务端
- Session依赖Cookie实现