IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP为何要进行“三次握手,springboot入门项目实战 -> 正文阅读

[网络协议]TCP为何要进行“三次握手,springboot入门项目实战

**程序员:**因为UDP把数据传输过去就不管了,就假定接收方一定能接收到,可惜真实的网络环境不会如此单纯,甚至是复杂、残酷的。

在网络环境中无时无刻出现着丢包、阻塞、乱序的情况,一个不小心,数据可能就传输不到目的地了,这个时候就只能轮到TCP了

**面试官:**为什么TCP就可靠了呢?

**程序员:**就是因为它的“三次握手”和“四次挥手”哇!

**面试官(邪魅一笑):**那你来讲讲吧!

**程序员:**那您且细听分说

三次握手

**程序员:**这个“三次握手”就是通信建立链接的一个过程,看下图

通俗点讲就是:

客户端:你好,我是客户端

服务端:你好,客户端,我是服务端

客户端:你好,服务端

也经常把这个过程叫做“请求->响应->响应的响应”

**面试官:**打断一下,问个问题,为什么不是两次或者四次,非得是三次呢?

**程序员:**嗯,不错,是个称职的面试官!

试想一下,客户端发送一个连接,由于丢包、超时,或是服务端根本就不想建立连接,那这个时候客户端怎么办?

客户端并不能知道结果,就只有重复的发送连接请求,虽然这个时候服务端接收到了,但客户端仍不知道这事,只能继续发请求。

此时此刻,服务端接收了客户端的请求,当然知道了客户端的存在,如果服务端不同意建立连接,客户端重试几次后就会放弃,没问题。

**如果服务端愿意建立连接呢?**这个时候就会发送响应给客户端(好了,你别叫唤了,客户端我知道你了)

到了这一步,就已经进行了两次握手!理论上,这个时候已经可以进行连接了,但是问题来了:

因为对于服务端来说,这个响应的过程也可能会丢包,不一定会达到客户端,甚至客户端完全挂了都是可能的。

对于另外的情况,在第一次握手的时候,由于网络问题,客户端向服务端发送了多个建立连接的请求,假设其中某一个建立成功,做了简单的通信,然后结束了连接,本来很正常,但是另外一些请求由于网络的延迟又到了服务端,服务端会认为这是一个正常的请求,接下来又建立连接。

因此两次握手会有着种种问题。

为了保证服务端的响应能正确接收,客户端还是需要告诉给服务端,我收到了服务端的响应,也就是给服务端一个**“响应的响应”,这样就是三次握手了**。

**面试官:**要是这个“响应的响应”要是也出现了丢包等问题没有送到呢?

**程序员:**你存心找麻烦的吧?那照你这样说你就是手握烂了,也没办法保证消息100%可靠。三次握手,保证服务端、客户端双方都确认了对方存在就足够了。

四次挥手

**面试官:**嗯,不错,来说说“四次挥手”又是什么吧!

**程序员:**建立完连接后就可以传输数据了,传输完成后则需要四次挥手来告别,过程看下图

**面试官:**这你TMD没有上一张清晰啊!

**程序员:**哎呀~面试时间有限,将就着看看啦!

通俗来讲就是…

客户端:服务端啊,我要和你拜拜了

服务端:好的,我知道了

这个时候,客户端说了拜拜,也不会向服务端发送数据了,这个时候服务端是否能马上关闭呢?

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友,点击这里即可免费获取

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

50)]

[外链图片转存中…(img-eASSdv3M-1628420590651)]

[外链图片转存中…(img-wNPicIs0-1628420590651)]

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:33:55  更:2021-08-09 10:34:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:02:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码