客户端A向服务器B发起一个同步信号Syn
服务器B向客户端A回应一个应答信号ack,同时也携带一个同步syn信号
客户端A收到服务器B的回应后,再响应一个ack信号
问题1:为什么是3次握手,2次不够吗?
在第2步的时候,只能确定的是:服务器确认客户端有发送数据的能力;
在第3步的时候,客户端能够确认服务器有发送/接收数据的能力;服务器确认客户端也有接收数据的能力
所以在第3步后,双方都确认了对方能够发送数据以及接收数据,后面就可以发起真正的通信数据了
问题2:能否在建立连接时直接带上http请求的数据?能带的话在第几步带?
在第三步请求时可以携带通信数据,原因见问题1,第三步时双方通信能力基本确认没有问题了,所以可以同时把http数据带过去
问题3:什么是半连接?什么是全连接?什么是syn攻击
半连接:就是三次握手没有完全建立时,比如只到了第2步,第三步没有发起/没有成功再重试时,系统为这种连接进行状态维护,称为半连接
全连接:当三次握手完成了,把这些连接放入连接池里面,称为全连接
syn攻击:
当大量的请求到达服务器时,每次请求都要建立三次握手,由于是恶意攻击,第三步迟迟不会完成,那么系统就要为维护半连接的请求耗费大量的资源,这种攻击称为syn攻击