每每想起TCP三次握手
这个问题,就会陷入如下的困惑:
var forget = ?
while(forget) {
百度/Google
}
而重点在于forget
永远等于true
,无情的消耗着我这颗只有一核的cpu,好像只有把脑子转爆才能跳出这个该死的循环。
但屋漏偏逢连夜雨,后台又在另一个线程开启了另外一个该死的循环:
var areYouStupid = true
while(areYouStupid) {
抽根儿烟...
}
就这样,子子孙孙 无穷尽也… 一度陷入绝望之中,突然,伟大的义勇军进行曲在脑海中一闪而过:
“起来,不愿做奴隶的人们..”
是的,不能在继续沉沦了…
终于,灵光乍现,想到了拜占庭将军问题
,这是一个1986年由xxx提出的关于分布式系统一致性问题的分析,主要说的就是在不可靠信道上,想就某个决议达成一致是不可能的
,通俗的理解:在那个只能依靠马来进行消息传递的东罗马帝国,分布在各地的将军们想就某一个作战方案达成一致是不可能的,因为马可能被累死,通信兵可能叛变,也可能篡改作战方案。
,感兴趣的老铁可以了解一下Zookeeper中基于Paxos实现的zab协议是如何保证分布式环境下数据的一致性的。
So,其实互联网也是一个不可靠信道,TCP想在这个不可靠信道上进行可靠数据传输,就需要反复确认(幸好网络速度要比马跑的快,否则估计现在人们还在没有网络也没有焦虑的时代快乐的生活)。
来看看TCP三次握手和四次挥手的过程
- 三次握手
- 四次挥手
乍看这两张图,一定会觉得就是两坨屎!即使看过很多次,也有可能依然觉得这是两坨屎!!!(计算机网络90分以上的学(xue)霸(chu)请忽略)。
没关系,来看一段凄(gou)美(xie)的爱情故事:
在春秋战国时期,一个楚国的柔情妹子和一个燕国的型男小哥哥在一场朋友的生日会中相识,并且互相留了通信地址(那时候没有微信也没有电话,什么都没有,只有门牌号),各回各家各找个妈以后,燕国小哥哥觉得自己爱上了这位柔情似水的妹子,于是决定写一封情书:俺想跟你睡觉觉(请原谅他没读过《三字经》)(seq=u),从此开始了火急火燎的等待。于是,燕国的快递小哥为了完成今年的KPI,快马加鞭、日夜兼程,终于在一年后把信送到了这位妹纸手里。妹纸收到信后,大喜,心想,哎妈呀,根老娘想一块去了,于是拿起笔纸奋笔疾书:夫君,人家答应你就是了(seq=y)。 由于邮局规定:收信人必须手持信件 拍照,确认收信人确实收到了信,于是,邮差掏出自己的IPhone 11 普辣丝,打开美颜相机,设置完美白、磨皮、祛痘、瘦脸、大眼后,按下了快门(ack=x + 1),从此,妹纸也开始了火急火燎的等待,而快递小哥为了完成明年的KPI,又开始了苦逼的快马加鞭、星夜兼程,一年后,小哥哥拿到回信(seq=y)和妹子的照片(ack=x+1),欣喜若狂,于是,集全家之力,凑够了100万,在快递小哥的带领下(为了完成第三年的KPI考核),从此踏上了迎亲的征途,就这样,又过去了一年,小哥哥拿着妹纸的照片(seq = x + 1)和妹纸的信物(ack=y+1)来到了美丽富饶的楚国,他们决定在韩国买一套房子,再买一辆小汽车,从此过上了幸福美满的生活(established)
。
但生活的琐碎很快打破了他们美好的爱情,妹纸决定要过另一种生活,不再照顾小哥哥了(不再有数据需要传输),于是她提出了分手,给小哥哥发了微信(①),但是,由于《婚姻法》第666条规定:离婚需双方同意,所以妹纸需要小哥哥的同意,但小哥哥在收到妹纸发来的微信后(不得不感慨地处中原的韩国真先进),一开始只回复了一个“哦” ,并没有表明自己的态度(②),因为他不想分手(还有数据要传输)他还爱着这个妹纸,但从此,妹纸和小哥哥开始了分居的生活,直到有一天,小哥哥想通了,不想再去爱一个不爱自己的人了,于是小哥哥给妹纸发微信表示同意分手(③),最终,他们快乐的来到民政局,按下了手印,从此天各一方(④)。
是不是记住了三次握手和四次挥手呢O(∩_∩)O