当前位置:网站首页>你需要知道的 TCP 三次握手
你需要知道的 TCP 三次握手
2022-07-06 04:46:00 【前端西瓜哥】
TCP,全称 Transmission Control Protocal。从名字可以知道这是一个用于 控制传输 的位于传输层的协议。
TCP 位于 TCP/IP 和 OSI 模型的传输层。我们最常使用的 HTTP 协议,底层通常使用的就是 TCP 协议。
如果要在客户端和服务端创建 TCP 连接,我们需要在开始的时候发送三个请求确认双方的通信能力正常,这三次连接就被称为 TCP 的三次握手。
TCP 的三次握手
下图为 TCP 头部的结构,我们的 TCP 三次握手主要用到其中的标黄的部分。
下面开始讲解这三次握手。
第一次握手
客户端给服务端发送一个 TCP 报文。在 TCP 头部中:
将 SYN 标志位设置为 1;
然后给 seq 赋予一个随机数(假设这个随机数是 x)
所谓标志位,其实就是一个比特的数据,设置为 1 ,其实就类似编程中将一个布尔值设置为 true。
SYN 代表同步(sync)的意思,seq 是序列号(Sequence number)的意思,是一个可以装载数值的地方,我们给它设置为随机数,是用来做凭证(token)的,稍后服务端会使用它。
第二次握手
服务端收到 SYN,知悉客户端希望建立 TCP 连接,并拿到了一个 seq 随机数。
服务端于是向客户端发送 TCP 报文,TCP 头中:
将 ACK 标志位设置为 1,表示已知悉(acknowledge)客户端的连接请求;
ack 的值设置为客户端传过来的 seq 值 + 1(即 x+1);
将 SYN 标志位设置为 1,表示服务端也要连接;
seq 的值设置一个随机数(假设随机数为 y)
服务端通过 ACK 和 ack 来告知客户端已知悉连接请求,并发送自己的 SYN 和 seq 来请求和客户端的连接。
第三次握手
客户端收到 TCP 请求,首先验证 SYC 是否为 1, seq 是否为 x+1。
如果是,说明服务端的这个发送是对应第一次握手的返回。客户端会再发送一个 TCP 请求:
ACK 设置为 1;
ack 设置为服务端 ack 的值 + 1(即 y + 1)
三次握手后,TCP 连接就建立了。
总结
三次握手,简单来说,就是这样的:
客户端 -> 服务端:SYN=1, seq=x (x为随机数)
服务端 -> 客户端:ACK=1, ack=x+1, SYN=1, seq=y (y为随机数)
客户端 -> 服务端:ACK=1, ack=y+1
我是前端西瓜哥,欢迎关注我,掌握更多前端面试题。
边栏推荐
- 729. My schedule I (set or dynamic open point segment tree)
- Basic knowledge and examples of binary tree
- View workflow
- Ue5 small knowledge points to enable the setting of lumen
- SQL injection vulnerability (MSSQL injection)
- Quick sort
- How do programmers teach their bosses to do things in one sentence? "I'm off duty first. You have to work harder."
- 2021 RoboCom 世界机器人开发者大赛-本科组(复赛)
- Distributed transaction solution
- Supreme Court, judgment standard of divorce cases
猜你喜欢
CADD course learning (7) -- Simulation of target and small molecule interaction (flexible docking autodock)
The IPO of mesk Electronics was terminated: Henan assets, which was once intended to raise 800 million yuan, was a shareholder
RTP gb28181 document testing tool
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Programmers' position in the Internet industry | daily anecdotes
Distributed transaction solution
满足多元需求:捷码打造3大一站式开发套餐,助力高效开发
ue5 小知识点 开启lumen的设置
【LGR-109】洛谷 5 月月赛 II & Windy Round 6
Redis - redis in action - redis actual combat - actual combat Chapter 1 - SMS login function based on redis - redis + token shared session application - with code
随机推荐
Sqlserver query results are not displayed in tabular form. How to modify them
【LGR-109】洛谷 5 月月赛 II & Windy Round 6
English Vocabulary - life scene memory method
Flink kakfa data read and write to Hudi
二叉树基本知识和例题
Recommendation | recommendation of 9 psychotherapy books
Supreme Court, judgment standard of divorce cases
[05-1, 05-02, 05-03] network protocol
Vulnerability discovery - vulnerability probe type utilization and repair of web applications
A blog to achieve embedded entry
[HBZ sharing] how to locate slow queries in cloud database
Case of Jiecode empowerment: professional training, technical support, and multiple measures to promote graduates to build smart campus completion system
Luogu deep foundation part 1 Introduction to language Chapter 2 sequential structure programming
cdc 能全量拉去oracle 表嘛
ORM aggregate query and native database operation
How do programmers teach their bosses to do things in one sentence? "I'm off duty first. You have to work harder."
Crazy God said redis notes
Quick sort
11. Intranet penetration and automatic refresh
Use sentinel to interface locally