用一个小的例子来说明为什么TCP采用三次握手才能保证连接成功

关于TCP的三次握手,有很多朋友还在疑惑为什么是三次,而不是两次,LZ想了一下用一个例子来说明最好。

 

场景:
办公室有一名前台(服务器),若干业务员(fork出来的进程)
客户(客户端)
 
为什么我们说三次握手才是有保障的,才是稳定的,我们看一下,如果是一次握手

客户(打电话给前台): 喂,你好!  (一次握手

然后传送文件过去。

(如果前台没有人,你文件传送过去也没人处理啊。。。)

 
如果是两次握手
 

客户(打电话给前台):喂,你好!(第一次握手

前台: 你好!请问什么事情?(第二次握手

然后客户直接传送文件过去。

几秒钟后,前台:你好!请问你哪位,什么事情?(服务器超时重发SYN+ACK

又几秒钟后,前台:你好!请问你哪位,什么事情?(服务器超时重发SYN+ACK

。。。

半分钟后,前台:那个瓜娃子,骚扰嗦!(挂掉电话)(服务器重发次数达到,不再重发

(OK,客户传送过去的文件还是没有人处理。。。)


 
我们再来看三次握手

客户(打电话给前台):喂,你好!(第一次握手

前台: 你好!请问什么事情?(第二次握手

客户:我是XXX,你接收传真处理一下。(第三次握手

然后客户传送文件过去。

前台安排业务员去拿好传真,处理完并与客户直接沟通。(fork一个独立进程与客户端交互

业务员接手与该客户的联系,并处理客户的各种请求。

前台继续等待其他客户打来电话。(服务器程序继续阻塞等待其他连接请求

(OK,公司一片和谐,各司其职,客户的需求马上得到处理)

通过LZ以上的描述,大家应该知道为什么是三次握手,而不是两次握手了吧,不仅仅客户端要确认服务器端能连接,服务器也要确保与客户端能连接,这样才能是有效的连接。

posted @ 2016-05-30 23:19  water-moon  阅读(434)  评论(0编辑  收藏  举报