使用的是网络常用协议tcp,基于连接安全可靠,工作在 传输层
三次握手
使用tcp需要进行三次握手, 1.主机向目标连接发送请求信息SYN,表示自己的身份(信息序列号), 2.目标收到请求,返回信息SYN+ACK并希望下一次回复消息使用序列号xxx(新的信息序列号) 3.主机收到信息,返回信息ACK并希望下一次回复消息使用序列号xxx(新的信息序列号) tcp成功建立连接
四次挥手
1.主机向目标发送关闭连接信息FIN和序列号 2.目标接收到消息报文返回,目标进入CLOSE-WAIT(关闭等待)状态,返回ACK 3.主机接收到返回信息进入FIN-WAIT-2(终止等待2)状态,接收完最后的信息,等待目标发送FIN 4.目标发送到主机FIN,进入LAST-ACK(最后确认)状态,等待客户端的确认 5.主机接收到消息确认返回ACK,进入TIME-WAIT(时间等待)状态,必须经过2??MSL(最长报文段寿命)的时间后进入关闭 6.目标收到返回确认立即关闭
客户端和服务端之间通过三次握手建立连接,四次挥手释放连接 三次握手,客户端先向服务端发起一个 SYN 包,进入 SYN_SENT 状态,服务端收到 SYN 后,给客户端返回一个 ACK+SYN 包,表示已收到 SYN,并进入 SYN_RECEIVE 状态,最后客户端再向服务端发送一个 ACK 包表示确认,双方进入 establish 状态。 之所以是三次握手而不是两次,是因为如果只有两次,在服务端收到 SYN 后,向客户 端返回一个 ACK 确认就进入 establish 状态,万一这个请求中间遇到网络情况而没有 传给客户端,客户端一直是等待状态,后面服务端发送的信息客户端也接受不到了。 四次挥手,首先客户端向服务端发送一个 FIN 包,进入 FIN_WAIT1 状态,服务端收 到后,向客户端发送 ACK 确认包,进入 CLOSE_WAIT 状态,然后客户端收到 ACK 包 后进入 FIN_WAIT2 状态,然后服务端再把自己剩余没传完的数据发送给客户端,发 送完毕后在发送一个 FIN+ACK 包,进入 LAST_ACK(最后确认)状态,客户端收到 FIN+ACK 包后,再向服务端发送 ACK 包,在等待两个周期后在关闭连接 之所以等待两个周期是因为最后服务端发送的 ACK 包可能会丢失,如果不等待 2 个周 期的话,服务端在没收收到 ACK 包之前,会不停的重复发送 FIN 包而不关闭,所以得 等待两个周期
|