每每想起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

深入浅出TCP三次握手四次挥手相关推荐

  1. java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手

    感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...

  2. [计算机网络][总结][常见问题][TCP][三次握手][四次挥手]

    TCP三次握手 四次挥手 三次握手 目的:保证传输的可靠性,为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误.主要防止资源的浪费. 具体过程:当客户端发出第一个连接请求报文段时并没有丢 ...

  3. TCP三次握手四次挥手(图解)

    <TCP-IP协议栈概略图与TCP三次握手四次挥手> 目录 1 TCP过程详解 1.1 三次握手 1.2 四次挥手 2 使用tcpdump分析三次握手的过程 2.1 tcpdump抓包和t ...

  4. TCP三次握手四次挥手过程及其中的状态量

    网上看到过一些有关TCP三次握手四次挥手的过程,觉得有必要总结一下了,对于了解TCP的过程还是有帮助的 1.变量含义 SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DAT ...

  5. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)

    文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...

  6. TCP三次握手四次挥手简介

    TCP三次握手四次挥手简介 图解三次握手.四次挥手 建立连接:三次握手 关闭连接:四次挥手 上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思 SYN,ACK,FIN ...

  7. TCP三次握手四次挥手详解

    TCP三次握手四次挥手 1. TCP报文格式 2. TCP连接需要解决的问题 3. 三次握手 4. 四次挥手 5. 一些补充问题 1. TCP报文格式 在了解三次握手和四次挥手之前,先知道TCP报文内 ...

  8. TCP三次握手四次挥手 TCP/UDP区别

    三次握手 第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认:  SYN:同步序列编号(Synchronize Sequence Numbe ...

  9. Wireshark验证TCP三次握手四次挥手

    本文介绍如何通过Wireshark抓包工具验证TCP的三次握手四次挥手过程. 首先本地起了一个tomcat服务器,跑了一个简单的基于SpringMVC的rest服务. 打开Wireshark,捕获指定 ...

最新文章

  1. div固定大小文字溢出自动缩小_CSS样式更改——框模型、定位、浮动、溢出
  2. 寻找数组中的最大值和最小值
  3. CVE-2016-10229分析
  4. 2.5.1.1、解析配置
  5. self计算机语言,python中self在函数中如何使用
  6. 如何用python批量下载数据_Python实现批量下载文件
  7. oracle获取表或视图的字段名、数据类型、注释
  8. 某公司电子商务网站策划方案
  9. 三维家可以导入别人的方案吗_酷家乐怎么用别人的模型(如何从酷家乐软件做的方案导入到另一个酷家乐账号上)...
  10. 局部钩子能防全局钩子吗_这个英雄还值得我们去练吗?百里玄策打法难点解析...
  11. 狸窝音频剪辑软件_5分钟学会影视剪辑:账号注册、素材寻找、剪辑使用、获取收益...
  12. UI设计从业者,怎样才能成为月薪过万的UI设计师?
  13. Java汉字按照拼音排序
  14. 32位与64位操作系统的区别
  15. Android用mediaPlayer.prepare()报错
  16. 戴尔电脑无法启动,显示致命错误C00000D4正在应用更新操作
  17. scilab 求微分_scilab中求积分
  18. 哈工大深圳计算机自动化专业,欢迎报考哈工大深圳研究生院自动化系
  19. Kotlin中协程理解与实战(一)
  20. 利用LAPS武器化CVE-2019-0841

热门文章

  1. MainWindow菜单栏和工具栏设置
  2. Qt 在 Windows 下默认字体比较丑,但是我们有办法修改它
  3. 雨晨QQ2013beta2(5865) 双显IP纯净完整自选版
  4. 用LaTeX给女友写情诗集(1)
  5. DENSE_RANK() 函数的使用
  6. 郑州工商学院计算机专业分数,郑州工商学院录取分数线2021是多少分(附历年录取分数线)...
  7. 项目经理如何做好时间管理?
  8. 【Python养成】:案例(设计三维向量类、实现向量的加法、减法以及向量与标量的乘法和除法运算、编写自定义类,模拟内置集、编写自定义类,模拟双端队列。)
  9. DiscuzX社区怎么修改论坛首页标题和后缀名教程
  10. Linux下的按键驱动