简述 TCP 三次握手以及四次挥手的流程。为什么需要三次握手以及四次挥手?
三次握手:首先发送端会发送一个SYN标记的数据包,目的是为了建立发送端到接收端的连接,发送端会进入SYN_send状态,接收端接收到数据包后会返回一个ACK响应以及SYN标记的数据包,目的是确认发送端到接收端的连接正常,建立接收端到发送端的连接,此时接收端进入SYN_RCVD状态,发送端收到数据包后,会返回ACK响应,目的是确认接收端到发送端的连接正常,此时发送端进入已建立连接状态, 由于TCP连接是双向连接,所以通过三次握手会建立一个可靠的传输信道,让双方建立以及确认自己与对方的接受以及发送是正常的
四次挥手:首先主机A会发送一个FIN标记的数据包,表示我这边可以挂断了,没啥事了,进入fin wait 1状态,主机B收到数据包后,会先返回一个ACK响应,表示我知道了,进入close wait状态,然后等待主机B处理完事情之后,发送一个FIN标记,表示我这边事情也处理完了,可以挂断,此时主机B进入last ack状态,主机A收到FIN数据包后就会返回一个ACK响应,然后进入timewait状态,经过2个msl时间进入close状态