当前位置:网站首页>三次握手与四次挥手
三次握手与四次挥手
2022-07-31 05:09:00 【城南花开了^】
三次握手
1. 第一次握手:客户端发送位码为 SYN = 1(SYN 标志位置位),随机产生初始序列号 Seq = J 的数据包到服务器。服务器由 SYN = 1(置位)知道,客户端要求建立联机。
2. 第二次握手:服务器收到请求后要确认联机信息,向客户端发送确认号Ack = (客户端的Seq +1,J+1),SYN = 1,ACK = 1(SYN,ACK 标志位置位),随机产生的序列号 Seq = K 的数据包。
3. 第三次握手:客户端收到后检查 Ack 是否正确,即第一次发送的 Seq +1(J+1),以及位码ACK是否为1。若正确,客户端会再发送 Ack = (服务器端的Seq+1,K+1),ACK = 1,以及序号Seq为服务器确认号J 的确认包。服务器收到后确认之前发送的 Seq(K+1) 值与 ACK= 1 (ACK置位)则连接建立成功。经过了这三步之后,客户端与服务器端就成功建立起一个 TCP连接。这三个步骤统称为三次握手.
上面Seq表示序列号,Ack表示确认号,SYN和ACK以及FIN等都是标志位。ACK 被设置为 1表示确认号字段是有效的,如果 ACK为 0,则该段不包含确认信息。SYN 被用于建立连接过程,在连接请求中,SYN = 1 和 ACK = 0 表示该段没有捎带确认字段。连接应答会捎带一个确认,所以应答时会有 SYN= 1 和 ACK= 1。另外发送ACK无需任何代价,所以我们会看到一旦一个连接建立起来,ACK标志总是被置为1
四次挥手
1.客户端发送一个FIN Seq = M(FIN置位,序号为M)包,用来关闭客户端到服务器端的数据传送。
2.服务器端收到这个FIN,它发回一个ACK,确认序号Ack 为收到的序号M+1。
3.服务器端关闭与客户端的连接,发送一个FIN Seq = N 给客户端。
4.客户端发回ACK 报文确认,确认序号Ack 为收到的序号N+1。
对于四次挥手,其实仔细看是两次,因为TCP是全双工的,必须双方都关闭才可以,单方会有两次,共有四次。终止的时候,有一方是被动的,所以看上去就成了四次挥手.
边栏推荐
- MySQL transaction isolation level, rounding
- 【LeetCode-SQL每日一练】——2. 第二高的薪水
- <urlopen error [Errno 11001] getaddrinfo failed>的解决、isinstance()函数初略介绍
- Why use Flink and how to get started with Flink?
- Unity Framework Design Series: How Unity Designs Network Frameworks
- 城市内涝及桥洞隧道积水在线监测系统
- Mysql application cannot find my.ini file after installation
- Doris学习笔记之监控
- Go中间件
- The MySQL database installed configuration nanny level tutorial for 8.0.29 (for example) have hands
猜你喜欢
![[Cloud Native] DevOps (5): Integrating Harbor](/img/5a/dd33d7d3cb0124f328d2d38fff0125.png)
[Cloud Native] DevOps (5): Integrating Harbor

TOGAF之架构标准规范(一)

【mysql 提高查询效率】Mysql 数据库查询好慢问题解决

ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)

DVWA安装教程(懂你的不懂·详细)

Shell重油常压塔模拟仿真与控制

Unity resources management series: Unity framework how to resource management

Kubernetes 证书可用年限修改

sql语句-如何以一个表中的数据为条件据查询另一个表中的数据

CentOS7 —— yum安装mysql
随机推荐
Distributed Transactions - Introduction to Distributed Transactions, Distributed Transaction Framework Seata (AT Mode, Tcc Mode, Tcc Vs AT), Distributed Transactions - MQ
Simple read operation of EasyExcel
快速掌握并发编程 --- 基础篇
MySQL开窗函数
MySQL database installation (detailed)
2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
Unity resources management series: Unity framework how to resource management
MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细
Flink sink ES 写入 ES(带密码)
关于LocalDateTime的全局返回时间带“T“的时间格式处理
Apache DButils使用注意事项--with modifiers “public“
About the problems encountered by Xiaobai installing nodejs (npm WARN config global `--global`, `--local` are deprecated. Use `--location=glob)
Temporal介绍
datagrip带参sql查询
<urlopen error [Errno 11001] getaddrinfo failed>的解决、isinstance()函数初略介绍
MySQL事务隔离级别详解
Redis Advanced - Cache Issues: Consistency, Penetration, Penetration, Avalanche, Pollution, etc.
Minio upload file ssl certificate is not trusted
Summary of MySQL common interview questions (recommended collection!!!)
MySQL optimization slow log query