http 1.1
http特点
- 三次握手/四次挥手
- keep alive 减少tcp重复连接和断开的开销,单个连接 多次http请求
- 管线化 同时建立多个http请求
http的瓶颈
- 请求只能从客户端开始
- 单个连接同一时刻每次只能发送一个请求,可以串行keep alive 但不能并行
- 每次请求都会携带请首部信息
- 首部信息没有压缩
- 可以选择任意数据压缩格式,且未强制
解决方式 - ajax(减少每次需要传输的内容大小)
- comet(不断开连接等待http返回响应,实现推送)
- spdy协议, 在tcp(传输层)和 http(应用层)中间添加spdy(位于会话层),在http的基础上增加了
- 多路复用能力。
- 赋予请求优先级的能力。
- 压缩http首部。
- 推送能力。
http中的登录验证
基于表单的验证,setcookie保存session状态
https
https = http + 加密 + 认证 + 完整性保护
ssl采用公开秘钥加密的加密处理方式(非对称加密)来传输对称秘钥。后续数据传输用对称秘钥加密解密
http(application)
ssl (session)(新增)
tcp(transport)
ip (network)
http2
基于spdy优化
- 二进制分帧
- 多路复用
- 服务器推送
- 头部压缩
websocket
websocket = 加强版(ajax + comet)
简介:1. websocket建立在http的基础上,因此需要客户端发起,建立连接之后双方都可以主动发送信息给对方。
特点:
- 推送功能
- 减少通讯量
实现: - tcp三次握手连接
- 发送请求,携带首部:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== ##
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat ## websocket使用的子协议
Sec-WebSocket-Version: 13
- 服务端响应
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= ## 由Sec-WebSocket-Key字段生成
Sec-WebSocket-Protocol: chat
- 确立websocket连接之后 通信将不再使用http的数据帧,而时候用websocket独立的数据帧