三次握手和四次挥手主要是讲如何建立和关闭TCP连接。
1. 三次握手过程
符号说明
- seq:"sequance"序列号
- ack:"acknowledge"确认号
- SYN:"synchronize"请求同步标志
- ACK:"acknowledge"确认标志"
- FIN:"Finally"结束标志
1.1 为什么不是两次握手?
我们假设两次握手的情况,看看会出现什么问题。假设Client A和Server B进行TCP连接
- 情形:A给B发送1个连接请求,但是由于网络堵塞,B以为没收到,然后A重发,并且B成功收到。再然后B收到了之前被堵塞的TCP连接请求,就一直在这个TCP连接上等待数据接收(然而什么都没有,因为A以为这个请求丢了呢!)。试想下,A发了100个请求,其中前面99个由于网络堵塞一开始都没被B收到,后来才收到,这造成巨大浪费!
2. 四次挥手