tcp三次握手,四次挥手,ssl握手协议

三次握手

这里写图片描述
图中ack为ackbit也就是ack标志位
(1)客户端发送连接请求,synbit为1,并且初始化一个随机序列号(客户端为SYN_SENT状态)
(2)服务端收到请求,同意请求,分配空间,返回synack段给客户端,其中synbit为1ackbit为1acknum为客户端初始序列号+1,同时产生一个自己的初始序列号(服务端为SYN_RCVD状态)
(3)客户端收到后发送ack段到服务端,此时synbit为0ackbit为1acknum为服务端初始序列号+1,序列号为客户端初始序列号+1此时可能包含数据前2次不会携带数据(同为ESTABLISHED状态)


dos攻击

可以利用syn泛洪,只发送第一次请求,因为服务端收到后就会分配空间,借此来消耗服务器资源

可以通过以下方法来解决
服务端第一次接收到连接并不分配资源,在第三次握手后,判断acknum是否合法来分配空间
这里写图片描述


四次挥手

这里写图片描述
(1)客户端处于FIN_WAIT_1状态
(2)服务端收到fin,回复ack后为CLOSE_WAIT状态,发送fin后为LAST_ACK状态
(3)客户端收到fin后为FIN_WAIT_2状态,发送ack后为TIME_WAIT状态
(4)若客户端在一定时间内没有继续收到服务端的fin,则说明正确关闭连接了,否则继续发送ack,若连接关闭,则都为CLOSED状态。
这里写图片描述


ssl握手协议

(1)客户端发送其支持的算法列表和客户端随机数
(2)服务端返回选择的算法,服务端证书(包含服务端的公钥),服务端随机数
(3)客户端验证证书,提取公钥,生成预主密钥,用服务端公钥加密,发送给问服务端
(4)客户端和服务端用预主密钥和2个随机数计算出加密密钥和mac密钥和初始向量
(5)客户端发送一个针对所有握手信息的mac
(6)服务端发送一个针对所有握手信息的mac

使用随机数是为了预防重放攻击,防止中间人记录一次握手记录,下次通过这个记录模拟和服务端握手
最后2步发送mac是为了查看握手过程是否收到篡改

本文图片来自慕课网,计算机网络精品课程

猜你喜欢

转载自blog.csdn.net/a1065712890/article/details/80864516