当前位置:网站首页>面试突击:为什么 TCP 需要 3 次握手?
面试突击:为什么 TCP 需要 3 次握手?
2022-07-25 15:41:00 【51CTO】
TCP 三次握手是一道经典的面试题,它是指 TCP 在传递数据之前,需要进行 3 次交互才能正式建立起连接,并进行数据传递。TCP 之所以需要 3 次握手是因为 TCP 双方都是全双工的。所谓全双工指的是,TCP 任何一端既是发送数据方,又是接收数据方,因此这就要求 TCP 通讯双方既要保证自己的发送能力,又要保证自己的接收能力才行。这就好像打电话时,通讯双方都要保证自己能话筒(传递声音)和耳机(接收声音)都是正常的才行,这样才能进行有效的交流,通常打电话时,都是这样开头的:
- 我:喂,能听到我说话吗?
- 对方:能听到你说话,你能听到我说话吗?
- 我:能听到你说话,那我们就来聊正事吧。
TCP 三次握手也是相同的道理,3 次握手证明的能力详情如下:

TCP 三次握手流程
TCP 三次握手流程如下:
- 客户端发送 SYN 给服务器端,表示希望建立连接;
- 服务器端接收到消息之后,回应一个 SYN 和 ACK(确认应答)给客户端;
- 客户端收到服务器端的 SYN 报文之后,回应一个 ACK 报文。
具体执行流程如下图所示:

总结
TCP 之所以需要 3 次握手,是因为 TCP 通讯双方都是全双工的,所以要经过 3 次交互才能确认双方的发送能力和接收能力,并且 TCP 握手必须是 3 次,如果是 2 次握手,不能证明服务器端的发送能力和客户端的接收能力;也不能是 4 次握手,因为 3 次已经能证明的事情,再交互握手 1 次完全没有必要。
边栏推荐
- MySQL教程67-使用DISTINCT过滤重复数据
- mouseover和mouseenter的区别
- CVPR 2022 | 网络中批处理归一化估计偏移的深入研究
- "Digital security" alert NFT's seven Scams
- CVPR 2022 | in depth study of batch normalized estimation offset in network
- Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式
- 2019 Zhejiang race c-wrong arrangement, greedy
- Distributed | practice: smoothly migrate business from MYCAT to dble
- Zhaoqi Kechuang high-quality overseas returnee talent entrepreneurship and innovation service platform, online live broadcast Roadshow
- 【服务器数据恢复】HP EVA服务器存储意外断电导致RAID信息丢失的数据恢复案例
猜你喜欢

Geogle colab notes 1-- run the.Py file on the cloud hard disk of Geogle

Why is preparestatement better and safer?

Pytoch learning notes -- Summary of common functions 3

Leetcode - 359 log rate limiter (Design)

Understanding the difference between wait() and sleep()

LeetCode - 303 区域和检索 - 数组不可变 (设计 前缀和数组)

【IJCAI 2022】参数高效的大模型稀疏训练方法,大幅减少稀疏训练所需资源

Pytorch学习笔记-刘二老师RNN高级篇-代码注释及结果

Pytorch学习笔记--Pytorch常用函数总结1

Gary Marcus: 学习语言比你想象的更难
随机推荐
CVPR 2022 | 网络中批处理归一化估计偏移的深入研究
Redis分布式锁,没它真不行
Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式
基于Caffe ResNet-50网络实现图片分类(仅推理)的实验复现
Activity review | July 6 Anyuan AI X machine heart series lecture No. 2 | MIT professor Max tegmark shares "symbiotic evolution of human and AI"
MySQL教程68-AS 设置别名
Gary Marcus: 学习语言比你想象的更难
活动回顾|7月6日安远AI x 机器之心系列讲座第2期|麻省理工教授Max Tegmark分享「人类与AI的共生演化 」
Leetcode - 225 implements stack with queue
LeetCode - 362 敲击计数器(设计)
Huawei 2023 starts to warm up in advance! Zuo Shen's program code interview guide comes in handy
【IJCAI 2022】参数高效的大模型稀疏训练方法,大幅减少稀疏训练所需资源
2022-07-25日报:微软提出CodeT:代码生成新SOTA,20个点的性能提升
Distributed | practice: smoothly migrate business from MYCAT to dble
C # fine sorting knowledge points 12 exception handling (recommended Collection)
How to solve cross domain problems
ZOJ - 4114 flipping game DP, reasonable state representation
Pat grade a 1152 Google recruitment (20 points)
LeetCode - 641 设计循环双端队列(设计)*
产品动态丨Android 13 高效适配全新升级