三次握手
第一次握手:
client什么都不能确认
server确认了对方发送正常
第二次握手:
client确认:自己发送/接收正常,对方发送/接收正常
server确认:自己接收正常,对方发送正常
第三次握手:
client确认:自己发送/接收正常,对方发送接收正常
server确认:自己发送/接收正常,对方发送接收正常
通过三次握手确认双方收发功能都正常,四次也可以但是多余。
第三次握手看似多余,主要是为了防止已失效的请求报文突然传到了服务端而产生接连的误判。
四次挥手
第一次挥手
client发送一个FIN,用来关闭client到server的数据传送
client进入FIN_WAIT状态
第二次挥手
server收到FIN后,发送一个ACK给client
server进入CLOSE_WAIT状态
第三次挥手
server发送一个FIN,用来关闭server到client的数据传送
server进入LAST_ACK状态
第四次挥手
client收到FIN后,client进入TIME_WAIT状态,发送ACK给server
server进入CLOSED状态
为什么建立连接是三次握手,关闭连接却是四次挥手?
建立连接:服务端把ACK和SYN放在一个报文里发送给客户端
关闭连接:ACK和SYN一般分开发