一 、HTTP
1. 基于TCP三次握手建立连接
1)客户端给服务端发送SYN同步报文
2)服务端收到后向给客户端发送SYN,ACK报文
3)客服端收到后再向服务端发送一个ACK报文
2. 建立连接后就可以通过HTTP进行网络请求了
1)客户端向服务端发送HTTP请求报文
2)服务端收到后向客户端发送HTTP响应报文
3. 由客户端发起的基于TCP四次挥手断开连接
1)客户端向服务端发送FIN终止报文
2)服务端收到后向客户端发送ACK确认报文,客户端收到后由客户端向服务端的连接就断开了
3)过一段时间服务端又会向客户端发送FIN,AKC终止报文
4)客户端收到后会向服务端发送一条ACK确认报文,此时由服务端向客户端的连接就断开了
二 、HTTP报文格式
请求报文
1. 请求行
1)请求方式:get/post
2)请求地址:URL
3)http版本
4)CRLF:换行标记请求行结束
2. 首部行
由多个键值对组成:
首部字段名:值
CRLF
首部字段名:值
CRLF
......
3. 实体主体
1)get通常不用
2)通常盛放post请求数据的body就是实体主体
响应报文
1. 状态行
1)版本:同请求报文
2)状态码:200 ,404,502...
3)短语:描述请求结果(ok,error....)
4)CRLF
2. 首部行
和请求报文类似
3. 实体主体
数据结果(json,data)
二 、HTTPS
- HTTPS 是基于SSL的HTTP,相当于安全版的HTTP。
- HTTPS需要到CA申请证书,免费的比较少,一般需要交费。。
- HTTP是明文传输,HTTPS是加密传输,通过抓包工具可以看出
- HTTP的响应数据可以正常显示而HTTPS是乱码。
- HTTP使用的端口号是80而HTTPS使用的端口号是443。
- HTTPS可进行加密传输、身份认证,要比HTTP安全。
- SSL:安全套接层
- TLS:传输层安全,SSL继任者
- TLS和SSL在传输层之上对网络连接进行加密
HHTP:IP->TCP->HTTP
HHTPS:IP->TCP->TLS&SSL->HTTP
HTTPS会将HTTP请求报文传递给TLS&SS进行加密然后在通过TCP传输到IP网络层,接收方IP网络层获取到加密后的报文再通TCP传输到TLS&SSL进行解密再传递给应用层最终得到HTTP解密后的报文
SSL
1所有信息都是加密传输,第三方无法窃听
2.具有校验机制,一旦被篡改,通信双方都会知道
3。配备证书,防止身份被冒充
SSL协议连接建立
1,客户端传递个服务端一个随机数num1和一个加密算法
2,服务端收到后会返回给客户端一个随机数num2和一个匹配好的协商加密算法,这个加密算法一定会是客户端发给服务端的一个加密算法的集合的子集
3,服务端回应客户端的第一次响应报文后,又会给客户端发送一个证书
4,客户端收到证书后会对证书进行验证,
客户端验证服务端证书数字摘要和服务端证书解密后的内容是否一致,判断证书是否被篡改
证书链根据服务端证书逐级向上查找直到查找到根证书,判断根证书是否在操作系统/浏览器的可信性证书列表中(由CA颁发的证书,证书会有父证书子证书)
5,客户端验证证书通过后,客户端组装会话密钥
客户端根据自己保留的随机数num1,num2和预主密钥组装会话密钥
客户端把预主密钥通过服务端传递过来的证书所包含的公钥进行加密传递给服务端
服务端再通过私钥解密预主密钥,服务也就获取到了随机数num1,num2和预主密钥,这样服务端也会通过这三条数据组装成和客户端相同的会话密钥
客户端使用组装的会话密钥加密一条消息发送给服务端,服务端再以相同的方式发送给客户端一条加密的数据。这是为了验证双方是否能够正常传输加密的数据,验证通过后SSL连接就建立完成了。
客户端通过产生多个随机数保证密钥的随机性,防止被窃取。
加密
对称加密算法:加密和解密的密钥是相同的(如:AES,DES)
非对称加密算法:公钥加密私钥解密(如:RSA)
预主密钥就是对称加密
SSL使用非对称加密对预主密钥进行加密。
如果直接传输预主密钥,被第三方窃取后,就可以直接通过预主密钥解密数据。使用非对称加密即使被第三方窃取到公钥他也不能解密数据。非对称加密十分消耗性能,所以只需在连接建立过程中使用用来保证预主密钥安全。







网友评论