查看原文
其他

详解三次握手和四次挥手:遇到心动的女孩时,如何去把握?

点击上方 "程序员小乐" ,关注公众号

8点20分,第一时间与你相约

每日英文 

The world is small and the city is big.People who lack for luck would not see one another again for the rest of life.

世界很小,城市很大,欠缺缘分的人也许终生也不会再见了。


每日掏心话 

微笑着面对生活,即使一文不名,也能睡得香甜;微笑着面对人生,即使在黑暗中,也能看到希望的曙光。


来自:刘羽冲 | 责编:乐乐

链接:http://segmentfault.com/a/1190000019052710

图片来自网络



  正文  


我有一个朋友,小泷,他与我倾诉:


他在咖啡厅与朋友闲谈,遇到了一个让时间彷佛静止的女孩。他描述,那一刻,他的心彻底被抓住了,脑中轰然,眼睛无法再从她身上移开。而女孩,也时不时向她望来,那是一双如秋水般清澈的明眸。


小泷说,他非常非常想想把握,这一次心动。然而,自始自终,他没能迈出那一步,他不知道该怎么办。


TCP协议之握手:如何开启一段情感羁绊。


小泷的困境,是每个男孩的困境。


我告诉他,如果你懂得TCP协议,就会把握一段感情了。


TCP(Transmission control protocal),传输控制协议,既是机器与机器间传输信息的基础协议,也是人与人联立联系的准则。


如何体面地认识她?如果读懂她是否对你有好感?如何给予她安全感?如何离别时要到她的手机号?TCP协议,把一切写得清清楚楚。


第一次握手


我对小泷说:


一个女孩,不管她性格有多高冷,永远是欣然接受你的好感的。


就像TCP协议中,服务器对新的客户端都会置于Listen(等待响应)状态。


你要做的,也必须要做的,是:


寻找共鸣,并提供具体信息。


我告诉小泷,我也曾经在机场遇到过让我瞬间心动的女孩,我所做的,只是很自然走上去,告诉她:


"你好像也坐这趟飞机?航班号是KN5855没错吧"


这对男孩是很简单的事情,因为你们出现的地点,就是共鸣。你关于这个地方,一定有一些具体信息可以分享。


所以,小泷,你应走上去说:


你也常来这家咖啡厅吧,他们家的焦糖玛奇朵非常棒。


这样的谈话,对女孩是提供安全感的:


你是一个拥有共同话题,并且会提供实质性价值的男士,而不是随随便便乱勾搭的人。共鸣的力量是非常强大的,没有女孩会拒绝回应的,即使长相略显寒酸。


说回TCP协议,它是这样规定的:


客户端向服务器发送报文,发出请求SYN=1,同时选择一个初始序号seq=x.


(SYN是synchronization同步的简称,seq为sequcence序号的缩写。)


这时,客户端的状态更改为SYN-SENT(synchronization_sent同步已发送)状态。也就是说,小泷,你耐心待着女孩回应就是了。


这就是“第一次握手”。


第二次握手


有了你提供的同步请求SYN=1和具体信息seq=x。女孩会根据这个信息做出响应。女孩这时的状态从LISTEN变为SYNC_RCVD(synchronization_recieved同步已收到)。


我在机场遇到的女孩是这样回答我的:


嗯嗯,我也坐这趟航班,不过没看到你。你是来深圳出差么?


这样回答,是人之常情。你一定可以得到亲切友善的回应。


TCP协议中是这样规定的:


当服务器收到请求报文,会向客户端发出确认报文。SYN=1,ACK=1,ack=x+1,同时发送序号为seq=y。


(ACK是acknowledgement确认的简称,小写的ack是确认编号)


所以,女孩一定会认同你,并根据刚刚的信息点延展,而且会提供一个新的信息点。


女孩对你不反感,但她也需要确认你是不是真对她有好感。


假如我真的只是觉得航班数字很吉利呢?假如你小泷真是就喜欢喝焦糖玛奇朵呢?她无法确认男生是不是想和她交流,所以一定提出新话题。而且,抛出新话题才会让彼此显得不尴尬。


女孩几乎一定会这样回应:


表达共鸣,确认信息,并基于你的信息进行延展,并提供新的信息点。


所以小泷,你心动女孩几乎一定会类似的回应:


嗯嗯,我喜欢榛仁玛奇朵。我住这附近,你呢?


你收到这样友好的回应,心中一定,知道,以后至少可以建立起初步的友谊了。这时,你的状态更改为ESTABLISHED。(建立连接)


第三次握手


虽然对于你,这段男女间青涩的友谊已经建立起了。但女孩,她还在等待你的回应 —— 她也在担忧你只是随意的询问吧。


快赶紧安抚这一个善良美好的女孩吧!


表达认同,根据女孩的话题延展,根据自己的话题延展。


比如我会回答:


嗯是的,有几个客户在深圳需要谈。我坐的商务舱所以没看到你吧


所以,小泷,你需要对她的新话题有所回应,并且不要丢掉自己的话题。这样两个话题都可以聊下去。


在TCP协议中这样规定:


在客户端收到服务端发送的TCP建立验证请求后,客户端向服务器给出确认。返回服务器ACK=1,确认编号ack=y+1,在自己的序号上加上seq=x+1。


这对女孩是非常重要的,你对她的话也表示认同,并且也能接住她的话题,同时自己的话题也没有丢掉。——是个能照顾她感受,也坚持自我的人。


这时,女孩的状态成为了ESTABLISHED。你们双方都成为了ESTABLISHED,接下来,你们就可以畅通无阻地交流了。


TCP的三次握手,也是最优化的恋爱博弈。


男孩会想,我怎么表现得靠谱?TCP给出了答案,共鸣 + 具体话题。


女孩心中会想:他对我感兴趣吗?他是聊得来的人吗?如何进行“废物测试”?

TCP给出了答案:共鸣 + 同意 + 对方话题的延展 + 新具体话题。


男孩心中会想,怎么给她留下有主见高情商的好印象?

TCP给出了答案:同意 + 对方话题的延展 + 继续自己话题。


仔细想想,这样的方式,让双方既不显尴尬,又体面舒适,又节约了两个人的时间与精力。



TCP协议之挥手:如何体面地离别。


时间总是短暂的,你们相谈甚欢,到了离别的时候。


只有一个体面的离别,才意味着未来依然可以关系持续升温。


放心,TCP协议已经为你规划好了。


第一次挥手


作为主动方的男生,需要首先表示分别,千万不要拖泥带水等到女生提出,这样才能为这段邂逅留下回味与不舍。


你需要


提出分别,给出具体信息。


这时候,是要手机号/微信号的最佳时机。


好啦我得走了。你的手机号?


TCP协议是这样规定的:


客户端进程发出连接释放报文,并且停止发送数据。设置报文FIN=1,其序列号为seq=u


(FIN的意思是finis终结的意思)


你已经请求结束了,安静地等待就好。主动而沉默,给予女生足够的空间,这是最体面的分别方式。这时你的状态是FIN-WAIT-1(终止待待1)


第二次挥手


热情的聊天突然嘎然而止。女生心中会有些小失落,这时你要微信的请求,她几乎一定会同意。


这时女生会找纸张,把自己的手机号或微信号写给你。并跟你说一些其它话。


表示认同,并对根据具体信息回应。并提供新具体信息。


比如她说:


嗯是的,等我写给你。你看外面好像快下雨了。


TCP协议是这样规定的:


服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1。seq=v。


因为是你提出离开,女孩还意犹未尽。一方面会同意离开,一方面会延展你的话题。为了确认你确实想离开了,她一般会说一个新话题,比如下雨了。


女孩从接到你的离开请求,到回应你这一句的时候,她处于CLOSE_WAIT状态,她会开始进行心理建设,适应你离开时的空洞感。


当然,成年人的表达方式,总是隐晦而体面的。只是一句淡淡的“天快下雨了”。


而你听到她说这些,只是静静不说话。你进入FIN-WAIT-2状态。


你在等着她的手机号,说话可能她突然不写了呢?忍住,别回应。


第三次挥手


当女孩低头写好手机号,她也做好了离开的心理建设,知道这一次邂逅到此为止了。这时,她说:


快回去吧,我写给你啦。不知道为什么和你呆一起挺愉快的。


看,TCP协议影响着你们的一个个行为模式。你不回应,她会换个话题,她会开始猜,她会开始等,她会开始留恋。


同意分开,再次根据你的具体信息回应。并另外提供新的具体信息。


TCP协议是这样规定的:


服务器将最后的数据发送完毕后,就向客户端发送连接释放报文FIN=1,ACK=1, ack=u+1,服务器又发送了一些数据后截止,序列号为seq=w


说出这句话的女孩,进入了LAST_ACK(最终动作)状态——主动权在你,她等着你。


你听到女孩再次说话,你会不舍,你等着些什么。你进入TIME_WAIT阶段。


第四次挥手


知道她要离开了,你的心会突然一痛。但离开已成必然,体面地对她说最后的话吧!


知道了。手机号我收好了。遇见你是我这一路最大的幸运。


TCP协议是这样规定的:


客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1。


听到你说完这句话,女孩把车门关上,车缓缓启动了。女孩进入状态CLOSED(关闭连接)。


提出离别的你,却久久站在原地。等了2MSL(两次交谈响应时间那么长),你好希望车突然停下,女孩从车上下来。


但一切没有发生。


美好的邂逅结束了。你进入CLOSED状态。



TO: 小泷


小泷,你知道吗?


懂得TCP协议,也就懂得了如何去抓住属于撩拨你心弦的那个女孩。


也许,这才是邂逅时应该的画面:


  • "你也常来这家咖啡厅吧,他们家的焦糖玛奇朵非常棒。"


SYN=1, seq=x 

客户端发进入SYN_SENT状态。


  • "我也是,我喜欢榛仁玛奇朵。我住这附近,你呢?"


SYN=1, ACK=1, ack=x+1, seq=y 

服务器原来为LISTEN状态,发送后,进入SYN_RCVD状态


  • "好巧,我也住这附近。他们店的玛奇朵是招牌喔。"


ACK=1,ack=y+1, seq=x+1 

发送完后,客户端从SYN_SENT状态过入ESTABLISED状态。

服务器收到后包,从SYN_RCVD状态进入ESTABLISTED状态。


离别时,你们会这样不舍离别:


  • "我还有事要走了,你加我微信吧!"


FIN=1, seq=u 

客户端从ESTABLISED状态进入FIN-WAIT-1状态。


  • "好,我发给你~哈哈你的头像好可爱"


ACK=1, ack=u+1, seq=v 

发送后,服务器从ESTABLISHED状态,进入CLOSE-WAIT状态。

收到后,客户端从FIN-WAIT-1状态,进入FIN-WAIT-2状态。


  • "快去忙你的吧!已经发过去了。今天好开心!"


FIN=1, ACK=1, ack=u+1, seq=w 

发送后,服务器从CLOSE-WAIT状态,进入LAST_ACK状态。


  • "啊,收到了。遇到你我也很开心"


ACK=1, ack=w+1, seq=u+1 

发送后,客户端从FIN-WAIT-2状态,进入TIME-WAIT状态。 

收到后,服务器从LAST-ACK状态,进入CLOSED状态。


然后,她离开了。你凝望着她,一再回头,直到消失在视线外。


等待2MSL后,客户端从TIME-WAIT状态,进入CLOSED状态。


每天,有万亿亿次TCP连接,都在为你重演着这一个画面。


勇敢一点,不用担心被拒绝,万亿亿次TCP连接都成功了,你怎么会失败呢?


因为TCP是网络通讯的规则,也是人类间默契的交流规则。


不动声色,内心早已暗流汹涌。却只是对你说。


“好巧,我也是这趟航班”


几条规则,有助于你记住这一切:


  1. 每一次通讯,都带有seq序列码。 每一次通讯,状态都会变更。

  2. SYN=1在握手阶段双方各发送一次。FIN=1在挥手阶段双方各发送一次。

  3. 有确认码的时候ACK=1,必带有确认号ack。 ack在上一条接收到的序号上+1。


通过本文谈谈你对三次握手和四次挥手的理解?


欢迎在评论区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,或者在学习能力的提升上有新的认识,欢迎转发分享给更多人。


欢迎各位读者加入程序员小乐读者群,在公众号后台回复“加群”或者“学习”即可。


猜你还想看


阿里、腾讯、百度、华为、京东最新面试题汇集

用Python开发爬虫,看这篇文章就够了

大型分布式Web系统的架构演进

一文搞懂如何在Intellij IDEA中使用Debug,超赞超级详细!

一位大佬的亲身经历总结:告诉大家写简历和面试的技巧

基于Spring Boot开发一个Restful服务,实现增删改查功能

这里有技术心得算法职场感悟面经,做一个有趣的帮助程序员成长的公众号。

关注「程序员小乐」,收看更多精彩内容

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存