什么是三次握手?
刚开始客户端处于Closed的状态,服务器处于listen状态。
然后:
第一次握手:客户端给服务器端发一个SYN报文,并指明客户端的初始化序列号ISN©,此时客户端处于SYN_send状态。
第二次握手:服务器收到客户端的SYN报文之后,会以自己的SYN报文作为应答,并且也是指定了自己的初始化序列号ISN(S)。
同时会把客户端的ISN+1作为ACK的值,表示自己已经收到了客户端的SYN,此时服务器处于SYN_RECV的状态。
第三次握手:客户端收到SYN报文之后,会发送一个ACK报文,当然,也是一样把服务器的ISN+1作为ACK的值,表示已经收到可服务端的SYN报文,此时客户端处于estabised状态。
服务器收到了ACK报文之后,也处于estabised状态,此时,双方已经建立起了连接。
三次握手的作用
确认双方的接受能力、发送能力是否正常。指定自己的初始化序列号,为后面的可靠传输做准备。
如果是HTTPS协议的话,三次握手这个过程,还会进行数字证书的验证以及加密秘钥的生成。
四次挥手
刚开始双方都处于establised状态,假如是客户端先发起关闭请求,则:
第一次挥手:客户端发送一个一个FIN报文,报文中旅会指定一个序列号。此时客户端处于FIN_WAIT1状态。
第二次挥手:服务器收到FIN之后,会发送ACK报文,且把客户端的序列号值+1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时客户端处于CLOSE_WAIT状态。
第三次挥手:如果服务端也想断开连接了,和客户端第一次挥手一样,发送FIN报文,且指定一个序列号。此时客户端处于LAST_ACK的状态。
第四次挥手:客户端收到FIN之后,一样发送一个ACK报文作为应答,且把服务器端的序列号+1作为自己ACK报文的序列号值,此时客户端处于TIME_WAIT状态。
服务器收到ACK报文之后,就处于关闭连接了,处于closed状态。
三次握手和四次挥手
最新推荐文章于 2024-08-28 14:19:12 发布