当前位置:网站首页>图解网络:TCP三次握手背后的原理,为啥两次握手不可以?
图解网络:TCP三次握手背后的原理,为啥两次握手不可以?
2022-07-06 00:33:00 【InfoQ】
什么是TCP?
- 英文全称:
Transmission Control Protocol
- 中文名称:传输控制协议

TCP三次握手
生活中的三次握手

- 小明:你好,请问是小美吗?【第一次握手】
- 小美:是的,我是小美。【第二次握手】
- 小明:好的,我知道你是小美了。【第三次握手】
专业角度的三次握手
- 服务端:服务端是专用于运行服务以满足其他计算机需求的物理计算机

- 客户端:客户端是访问服务器提供的服务的计算机硬件设备或软件
- SYN:同步序列号(Synchronize Sequence Number),这是从客户端到服务端的第一个数据包,可以描述为建立连接的请求,如果 SYN 为 1,则表示设备要建立安全连接,否则不。

- ACK:确认(Acknowledgement),可以说是SYN的响应,如果 ACK 为 1,则设备已收到 SYN 消息并确认,否则没有。



- 第一步:TCP客户端向服务端发送 TCP SYN 数据包来开始连接,数据包包含一个随机序列号n,它表示客户端应传输的数据的序列号的开始。

- 第二步:服务端收到数据包,并用它的序列号(m)进行响应,它的响应还包括确认号,即客户端的序列号加 1,此处为n+1。

- 第三步:客户端通过发送确认号来响应服务器,该确认号是服务端的序列号加 1,此处为m+1.

TCP三次握手抓包分析

172.16.16.128:2826
212.58.226.142:80
- 第一步:主机
172.16.16.128:2826
向主机212.58.226.142:80
发送[SYN] Seq=0
- 第二步:主机
212.58.226.142:80
向主机172.16.16.128:2826
发送[SYN,ACK] Seq=0,Ack=1
- 第三步:主机
172.16.16.128:2826
向主机212.58.226.142:80
发送[ACK] Seq=1,Ack=1
TCP窗口
Win=8192

其他参数
- MSS(Maximum Segment Size),最大段大小。
- WS(Windows Scaling),用于控制最大 TCP 接收窗口大小。
TCP为什么不能二次握手建立连接
- 服务端需要确认服务端可以从客户端接收数据包
- 客户端需要确认客户端可以从服务端接收数据包
- 客户端需要确认服务端可以从客户端接收数据包
- 服务端需要确认客户端可以从服务端接收数据包

- 小明问:“你好,请问时小美吗?”:发送成功后,小明确定可以他从小美接收信息,验证了第一个条件【服务端需要确认服务端可以从客户端接收数据包】
- 小美回:“是的,我是小美”:发送成功后,小美确定她可以从小明接收信息,也能确认小明可以从她这边接收信息,验证了第二、第三个条件【客户端需要确认客户端可以从服务端接收数据包】【客户端需要确认服务端可以从客户端接收数据包】
- 小明回:“好的,我知道你是小美了”:发送成功后,小明确定可以小美可以从他这边接收信息,验证了四个条件【服务端需要确认客户端可以从服务端接收数据包】
总结
- 什么是TCP?
- TCP三次握手
- 生活中的三次握手
- 专业角度的三次握手
- TCP三次握手抓包分析
- TCP窗口
- 其他参数
- TCP为什么不能二次握手建立连接
- 总结
边栏推荐
- STM32按键消抖——入门状态机思维
- MySQL storage engine
- 7.5 decorator
- 认识提取与显示梅尔谱图的小实验(观察不同y_axis和x_axis的区别)
- 多线程与高并发(8)—— 从CountDownLatch总结AQS共享锁(三周年打卡)
- Atcoder beginer contest 254 [VP record]
- Solve the problem of reading Chinese garbled code in sqlserver connection database
- 关于slmgr命令的那些事
- How to use the flutter framework to develop and run small programs
- Uniapp development, packaged as H5 and deployed to the server
猜你喜欢
Room cannot create an SQLite connection to verify the queries
2022-02-13 work record -- PHP parsing rich text
Analysis of the combination of small program technology advantages and industrial Internet
Notepad++ regular expression replacement string
Huawei equipment is configured with OSPF and BFD linkage
Calculate sha256 value of data or file based on crypto++
Anconda download + add Tsinghua +tensorflow installation +no module named 'tensorflow' +kernelrestart: restart failed, kernel restart failed
AtCoder Beginner Contest 254【VP记录】
Ffmpeg captures RTSP images for image analysis
About the slmgr command
随机推荐
Location based mobile terminal network video exploration app system documents + foreign language translation and original text + guidance records (8 weeks) + PPT + review + project source code
PHP determines whether an array contains the value of another array
Codeforces Round #804 (Div. 2)【比赛记录】
AtCoder Beginner Contest 254【VP记录】
剖面测量之提取剖面数据
【文件IO的简单实现】
AtCoder Beginner Contest 258【比赛记录】
How to use the flutter framework to develop and run small programs
[noi simulation] Anaid's tree (Mobius inversion, exponential generating function, Ehrlich sieve, virtual tree)
wx. Getlocation (object object) application method, latest version
FFMPEG关键结构体——AVFormatContext
Knowledge about the memory size occupied by the structure
FFMPEG关键结构体——AVFrame
FFMPEG关键结构体——AVCodecContext
Cloud guide DNS, knowledge popularization and classroom notes
Idea remotely submits spark tasks to the yarn cluster
Atcoder beginer contest 254 [VP record]
Power Query数据格式的转换、拆分合并提取、删除重复项、删除错误、转置与反转、透视和逆透视
MySQL存储引擎
MySql——CRUD