HTTP协议,HTTPS协议,Websocket协议
HTTP协议,HTTPS协议,Websocket协议
- HTTP协议
"""
http协议
- 四大特性
1、基于请求响应一次请求对应一次响应
2、基于tcp/ip作用于应用层之上的协议
3、无状态(不保留客户端的状态)
4、无连接
- 数据格式
以请求格式为例
1、请求首行(请求的方式,协议的版本)
2、请求头(一堆kv键值对)
3、
4、请求体(携带的数据)
- 响应状态码
1xx:服务端已经成功接收客户端的数据正在处理
2xx:200表示请求成功,201创建成功
3xx:重定向 301永久重定向,302暂时重定向
4xx:403权限不足,404请求资源不存在
5xx:服务器异常
"""
- HTTPS协议
"""
http协议传输的数据是未加密的,也就是明文的,因此使用HTTP协议传输的一些隐私的数据信息是不安全的,为了保证这些隐私的数据能加密传输,于是网景公司设计了ssl协议用来对数据进行加密,从此就诞生了HTTPS。简单来说HTTPS就是由ssl+http协议构建的可对数据进行加密的一种传输协议。
区别:
1、HTTPS协议是需要ca申请证书,需要数据费用
2、HTTP协议是明文,不安全的,HTTPS协议是加密的,安全性高
3、HTTP使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4、HTTP的连接很简单,是无状态的,HTTPS协议是加密连接的
"""
- websocket协议
"""
HTTP 不加密传输
HTTPS 加密传输
上面两个都是短连接/无连接
websocket 加密传输
浏览器和服务端 创建连接之后默认不断开,它的诞生能够真正的实现服务端给客户端推送消息
"""
- 内部原理
"""
websocket实现原理可以分为两部分
1、握手环节
2、收发数据环节
1.握手环节
浏览器访问服务端之后浏览器会立刻生成一个随机字符串
浏览器会将生成好的随机字符串发送给服务端(基于HTTP协议 放在请求头中),并且自己也保留一份
服务端和客户端都会对该随机字符串做以下处理
1.1 先拿随机字符串跟magic string(固定的字符串)做字符串的拼接
1.2 将拼接之后的结果做加密处理(sha1+base64)
服务端将生成好的处理结果发送给浏览器(基于HTTP协议 放在响应头中)
浏览器接受服务端发送过来的随机字符串跟本地处理好的随机字符串做比对,如果一致说明服务端支持websocket,如果不一致说明不支持
2.收发数据环节
前提知识点:
1.基于网络传输数据都是二进制格式 在python中可以用bytes类型对应
2.进制换算
先读取第二个字节的后七位数据(payload) 根据payload做不同的处理
=127:继续往后读取8个字节数据(数据报10个字节)
=126:继续往后读取2个字节数据(数据报4个字节)
<=125:不再往后读取(数据2个字节)
上述操作完成后,会继续往后读取固定长度4个字节的数据(masking-key)
依据masking-key解析出真实数据
"""
Only you can control your future
You're not alone. You still have family,peopel who care for you and want to save you.