网络模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
网络的通讯其实就是socket间的通讯(通讯的两端都是socket),通过IO传输。需要IP,Port
Socket:位于传输层,有两个传输协议
- TCP:传输控制协议。通过3次握手,建立连接(创建socket,connect建立连接,write发送,请求数据,read读取返回的信息,读取完毕的close,结束循环),可大数据传输。案例:下载,保持文件传输的完整性。
- UDP:用户数据协议,不需要建立连接,有大小限制。不可靠协议。一般流媒体,游戏等,如果网络不好出现卡帧等之类情况就可能使用的UDP。
http,https协议:是建立socket基础之上的。处于应用层。
- http:超文本传输协议,明文传输。
- https:安全的ssl加密传输协议。
https流程:
客户端将与服务端协商的数据传递给服务端,服务端进行校验,校验通过,会将数字证书(向CA机构申请,审核通过,发放数字证书,包含公钥,签名等公司信息),公钥传递给客户端,客户端验证证书的有效性。验证通过,将公钥处理成前主秘钥进行非对称加密传输给服务端,自己形成会话秘钥。服务端通过私钥解密获取主秘钥,同样形成会话秘钥。进行数据加密传输。
Charles作为中间人,对客户端伪装成服务端,对服务端伪装成客户端。简单来说:
1:截获客户端的HTTPS请求,伪装成中间人客户端去向服务端发送HTTPS请求
2:接受服务端返回,用自己的证书伪装成中间人服务端向客户端发送数据内容。
网络请求:常用Get,Post方式的区别
- Get :参数包含在url中,参数有长度限制。
- Post:有请求体,通过request Body传递参数,参数没有长度限制。请求头要添加字段content-type:application/json来获取请求中消息主体的编码方式。
网友评论