TCP的三次握手和四次挥手
为什么需要三次握手呢?
我们从图中分析 一下:
- 发送端发送SYN,接收端确认自己接收正常,对方发送正常
- 接收端发送SYN/ACK,发送端确认自己接收正常,对方发送正常。
- 发送端发送ACK来建立链接,发送端和接收端都进入Established的状态。
如果不是三次握手会怎么样?
没有第三步的情况,会出现接收端不知道自己的ACK有没有发送正常,无法进入数据传输阶段。
四次挥手
从三次握手也会比较容易懂:
- 发送端发送完了数据,想要关闭链接,于是发一下FIN。
- 接收端收到FIN之后,先回答了一下ACK收到了,不过我还准备好,等等啊
- 接收端处理完成之后,发送说我处理完了,关闭链接?
- 发送端接收到说好,然后就关闭链接,恢复一个ACK。接收端收到ACK之后也关闭自己的链接。
为什么要四次握手?
我想这里, 主要的疑问点是为什么第二次为什么先ACK一下。这里主要的原因是如果不ACK,那么发送端将重复发送断开请求。