关于TCP三次握手问题之前也大概了解过,不过翻了许多帖子里面都用到了专业术语,像SYN、ACK、FIN之类给搞混,这次结合自己的理解来分析下。
大家不妨想象一下这个场景——
你和刚开始恋爱的女友相约晚上在小区约会,由于路灯不亮不能100%确定是她所以通过招手来确认
1.首先你向女友招手
2.女友点头微笑
3.女友招手
4.你点头微笑
最后就是2人走近、嘿嘿嘿~~
其实中间女友连续进行了2个动作,实际上我们可以合并成一个动作
1.首先你向女友招手
2.女友点头微笑并招手
3.你点头微笑
这就是三次握手的本质,中间的一次动作是两个动作的合并。通过这个案例,不知你对TCP三次握手,有没有进一步的理解。
最后可能有人会问为什么不是二次握手或者是四次握手?
可能出现的问题:如果一个连接请求在网络中跑的慢,超时了,这时客户端会重发请求,但是这个跑的慢的请求最后还是跑到了,然后服务端就接收了两个连接请求,然后全部回应就会创建两个连接,浪费资源!
还有一种情况是:客户端可能设置了一个超时时间,时间到了就关闭了连接创建的请求。再重新发出创建连接的请求,而服务器端是不知道的,如果没有第三次握手告诉服务器端客户端收的到服务器端传输的数据的话,
服务器端是不知道客户端有没有接收到服务器端返回的信息的。
-------------------------------------------------------------------------------------------
最后,拜拜~~